- 游戏内容: 井字棋
- 技术限制: 仅允许使用 IMGUI 构建 UI
- 作业目的:
- 提升 debug 能力
- 提升阅读 API 文档能力
- 提升 debug 能力
###1.初始化
- 井字棋实现的基础是一个3*3的二维数组,通过点击事件,对数组中的相应位置赋值来代表示玩家的选择.首先要在游戏开始时对我们所定义的变量进行初始化
1 |
|
###2.界面渲染
- 因为只能使用IMGUI构建UI,所以查阅了相关的资料。发现GUI会在每一次操作后自动更新页面。所以我们只需要做到可以保存好每一次点击之后,二维数组的状态,就可以实现有些界面的自动更新。因为GUI.Button自己会在点击之后改变返回值的真假,所以不需要像之前的js一样将click事件与函数返回进行绑定。而且我们只需要对每次点击后二维数组的状态进行判定,就可以得当前游戏的胜负情况。所以OnGUI部分的代码如下:
1 |
|
###3.胜负判断
因为井字棋胜负判定的情况很简单,即
- 有一行出现三个数相同,该数所代表的玩家胜
- 有一列出现三个数相同,该数所代表的玩家胜
- 有一斜线出现三个数相同,该数所代表的玩家胜
- 空格全部点完,仍未出现上述情况则为平局
所以胜负判断的函数代码如下:
1 |
|
- 运行效果如图