今天心血来潮,想搞个填字游戏,还是用*来弄。说干就干,先从网上找点题库来。
这年头,网上啥都有。我随便搜搜“填字游戏 题库”,就蹦出来一堆。还真不少!什么“全日制教育”、“看樱花”、“五一黄金周假期”……各种各样的题目和答案都有,看得我眼花缭乱。
有题库,接下来就得琢磨怎么把这些题目和答案放到*里面。我一开始想的是,要不就用一个数组,一个问题对应一个答案?后来一想,不行,这填字游戏得有横排和竖排,一个数组搞不定。
于是我又想,要不用两个数组?一个存横排的,一个存竖排的?嗯……感觉还是有点麻烦。我决定还是用一个对象数组,每个对象里面包含题目的描述、答案、方向(横排还是竖排)、起始位置等等信息。这样感觉清晰多。
数据结构搞定,接下来就是画格子。这部分倒是不难,用*画几个方块就行。我先用createCanvas
创建一个画布,然后用rect
函数画出一个个小方格。为让格子看起来更舒服,我还给它们加点边框和背景颜色。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
格子画好,就得把题目和答案填进去。我写一个循环,遍历之前创建的对象数组,然后根据每个对象的信息,把题目和答案的第一个字填到对应的格子里。这里要注意的是,要根据方向(横排或竖排)来计算每个字应该填到哪个格子里。
填字的过程,我用一个二维数组来记录每个格子的状态。比如,哪个格子已经填字,哪个格子是空的,哪个格子是当前选中的格子等等。这样在后面的交互逻辑里,就能很方便地判断用户的输入是否正确。
就是交互逻辑。我用mousePressed
函数来监听鼠标点击事件,然后根据点击的位置,判断用户选中哪个格子。选中格子后,我把这个格子高亮显示,然后等待用户输入答案。
用户输入答案,我用keyPressed
函数来监听键盘输入事件。每当用户按下一个键,我就把这个键对应的字符填到当前选中的格子里。这里还要判断用户输入的字符是否正确,以及是否已经填满整个单词。
遇到的坑
在写的过程中,也遇到一些小坑。比如说:
- 一开始没考虑到汉字占两个字符宽度的问题,导致填字的时候位置老是错位。
- 还有就是,*的坐标系原点在左上角,而我习惯的坐标系原点在中心。在计算格子位置的时候,还得做一些转换。
不过这些坑都被我一一填平。看着自己做出来的填字游戏,还真有点小小的成就感!
这回用*做填字游戏,还挺有意思的。既复习*的基础知识,又锻炼自己的逻辑思维能力。下次有机会,我还想尝试做点别的有趣的小玩意!