大一C语言课程期末大作业
游戏进阶玩法:当一方落下第4子仍未获胜时,则其落下的第1子会被拿掉,依次类推。
一、使用Visual Studio配置EasyX环境
EasyX是一个十分简单好用的图形库,相比于其他制作图形界面的工具而言要容易上手的多,十分适初学者使用。使用EasyX写的GUI程序十分简洁、明了。 因为DEV-C++不兼容EasyX,所以用Visual Studio
下载EasyX:
官网:https://easyx.cn/
打开安装包,安装在Visual
二、代码编写游戏界面
1、画出棋盘
这只是画出游戏界面的一个函数而已
其中loadimage函数是打开图片,需要把已经下载好的图片放在项目的文件中才能引用
效果:
2、获取鼠标的信息
鼠标点哪里,圈叉就在哪里
其中 if (abs(m.x - i * 100) < 50 && abs(m.y - j * 100) < 50) 的判断非常重要
如果没有鼠标点哪里,哪里就会出现O/X。
我们不可能每次都点中鼠标的正中间,所以就用abs取绝对值来确定鼠标的误差在什么范围内。
这样就可以允许鼠标点击出现偏差也能在格子正中间显示出O/X。
3、画圈叉
由于是后期的函数,所以其中出现了很多其他数据
但不影响,其中最主要的是 solidcircle()和line()函数,
line(),画直线的函数,输入起点和终点的坐标即可
游戏界面的布局到这里就极其简陋的完成了。
三、核心进阶玩法设计
1、思路:
定义三维数组,chessBoard[a][x][y],其中x、y代表棋盘的横纵坐标都在(0、1、2)之间
而a代表在x、y这个位置上的属性,设计了有三种属性.
第0层代表该位置是否有棋子,0=没有,1=有。
第1层代表该位置是什么棋子,0=圆,1=叉
第2层代表该位置的深度(棋子存在的回合数),可取[0,7]
由于一方的棋子最多可以存在3个,下第四个时就要把第一个拿走,所以一颗棋子最多可以存在7个回合(呃~~~我定义了下一颗棋子就算一回合)
三维数组创立完毕
衔接问题:
将处理过后的鼠标横纵坐标(在[0,2]间的整数)传递给一个函数,该函数返回一个三维数组
然后遍历这个三维数组信息,画出相对应的棋子。鼠标再点下一个位置,函数就再返回一个新的数组给我,最后清空画面,重新遍历,画出棋子以达到消除棋子的目的。
2、上代码
设计三维数组的函数
头文件:封装成库函数
衔接过程:
其中huamian1()函数与huamian()函数相比,少了一句initgraph(800, 800); 若直接使用huamian()函数重新画一个棋盘则会一直创建新的窗口。(非常好玩)
主函数:
四、完整的全家桶
链接:
https://github.com/Nebula-Yong/Tic-Tac-Toe
- 点赞
- 收藏
- 关注作者
评论(0)