因为不会用Xcode的图形编译函数,刚刚学完C,想实践一下。
先声明一下,程序是在TC2.0中实现的,很多函数都是TC提供的,我们直接调用就好,
代码是事先就有的 ,并非本人自己原创,So学习分享一下。
(在eacyx吧里面有TC2.0的压缩包,没有的可以自取下)
c语言五子棋游戏项目分析与系统设计
在实现五子棋项目前首先要进行需求分享,只有正确认识顾客的需要,才能编译出正确的程序
需求分析( 最关键的一个部分,要正确认识顾客的需要)
- 实现两人对弈
- 设计一个19*19的棋盘 白色代表play1,红色play2 绿色代表运行轨迹
- 五子一线时 表示成功 退出游戏 也可中途退出游戏
系统设计
一。设计目的
实现两人五子棋游戏对弈
二。设计思路
1.
画一个19*19的棋盘
用(二维数组)数组的值代表位置的状态:即有哪个玩家的落子,或者此处无人落子
2.
接受按键操作 UP DOWN LEFT RIGHT 回车代表落子
3.
成功落子判断该位置的八个放心 是否有五个子连成一线
三。模块划分(降低复杂型 提高效率)
主模块
棋盘模块
下棋模块
功能控制模块(画棋子 判断胜负 行棋方转换)
信息模块
四。用户界面的设计
1.欢迎界面
2.帮助界面
3.棋盘界面(背景色选用棕色 )
五。数据结构设计
(1)坐标变换
先介绍两个坐标系
- 物理设备坐标系统 :单位:像素 ;左上角是原点 X轴向右 Y轴向下
- 棋盘坐标系 :纵(横)行线从依次按0-18标记 坐标范围(0,0)~(18,18)
为什么转换? 下棋用的是棋盘坐标,但下棋的信息记录在二维数组中 为了绘制 要用到图形函数 图形函数用的坐标是物理坐标
设棋盘坐标(x,y) 屏幕坐标(X,Y)
X=OFFSET_x+x*OFFSET
Y=OFFSET_y+y*OFFSET
OFFSET 代表每一个格的宽度
OFFSET_x 代表左端到屏幕左边界的距离
OFFSET_y 代表上端到屏幕上边界的距离
(2) 数组
- 定义一个二维数组 status[N][N] N=19;
- status 取值有三种情况 0,1,2 : 0代表没落子 1代表玩家1的落子 2代表玩家2的落子
(全局变量)
- 按键码
-
UP 0x4800
DOWN 0X5000
LEFT 0X4b00
RIGHT 0x4d00
ENTER 0x1c0d
ESC 0x11b
- 设置偏移量
-
#define OFFSET 20
#define OFFSET_x 100
#define OFFSET_y 60
#define N 19
(保存状态)status[N][N],step_x,flag, int flag00,int key















