控制台版2048游戏C程序项目分析(仅供参考,后期代码实现结构有所调整)
2015-05-24 21:15
274 查看
C语言编程项目计划书
----2048游戏
一.目的
了解C语言编程的问题分析和方案求解过程,提高抽象和建模能力;了解C语言编程的过程,体会编程思想;分工合作,提高团队合作意识。
二.项目概述
本次程序设计项目主要功能是在Linux控制台中实现模拟2048游戏。
程序主要的流程为:
1.游戏开始功能选择:开始新游戏或者读取保存游戏数据;
2.根据步骤1中的选择显示读取的或者新的游戏界面,游戏界面为一个4×4矩阵数据(二维数组);
3.获取一次键盘操作(方向键或q),按读取的方向键进行移动,若输入q,则提示是否保存数据,若输入n,则保存本次游戏数据,若输入y,则不保存,退出程序;
4.按移动方向对原来相邻的两个相同数字(或不相邻但中间无数字的两个相同数字)进行合并,其余数据移动,显示分数(所有合并数字的和);
5.随机生成一个2或4,随机放在矩阵元素为0处;
6.判断是否有元素等于2048,若有,则打印win,然后退出游戏,否则重复3、4、5、6步骤,直到矩阵数据填满且无法再执行步骤4,显示游戏结束,退出程序。
三.项目结构
主要的函数及其功能:
1 void main(void)
主函数,整合其他函数的功能。
2 void start(void)
运行程序,选择功能(开始新游戏或重新开始保存的游戏)。若选择开始新游戏,则初始化矩阵元素为0,再随机将2赋值给4×4矩阵中的2个元素;若选择重新开始保存的游戏,则读取data.dat数据。
涉及知识:选择结构,条件判断,二维数组操作,文件操作,生成随机数等。
3 void print(void)
打印提示(按q退出,方向键移动)、矩阵数据(若等于0则打印空格)和分数。
涉及知识:循环结构等。
4 char get_oper(void)
获取键盘输入的方向键或q,返回得到的字符。
涉及知识:选择结构,条件判断等。
5 void move(char oper)
根据get_oper() 函数返回的字符确定方向,对矩阵数据进行移动。
涉及知识:选择结构,条件判断,循环结构等。
6 void merge(char oper)
根据get_oper() 函数返回的字符确定方向,对相邻的两个相同数字进行合并,然后再进行一次移动操作,记录所有合并数据的和(即分数)。
涉及知识:选择结构,条件判断,循环结构等。
7 void random1(void)
在合并完成后,随机生成1个2或4,随机给矩阵中等于0的元素赋值。
涉及知识:循环结构,条件判断,生成随机数等。
8 int is_win(void)
若有数组元素等于2048,返回1,否则返回0。
涉及知识:循环结构,条件判断等。
9 int is_over(void)
判断游戏是否结束。若矩阵数据填满(矩阵元素等于0表示未填充数据)且在横竖方向上没有相邻的数据,则结束游戏,返回1;否则继续执行 get_oper函数,返回0。
涉及知识:循环结构,条件判断等。
10 int save(int matrix[][4],int scores)
在未结束时退出,保存游戏数据到data.dat文件,保存成功返回1,否则返回0。
涉及知识:二维数组,文件操作。
11 void quit1(void)
退出游戏。
涉及知识:sleep(1);exit(0);等。
主要的全局变量:
int matrix[4][4]; 用于存储矩阵的值。
int scores; 用于存储分数。
----2048游戏
一.目的
了解C语言编程的问题分析和方案求解过程,提高抽象和建模能力;了解C语言编程的过程,体会编程思想;分工合作,提高团队合作意识。
二.项目概述
本次程序设计项目主要功能是在Linux控制台中实现模拟2048游戏。
程序主要的流程为:
1.游戏开始功能选择:开始新游戏或者读取保存游戏数据;
2.根据步骤1中的选择显示读取的或者新的游戏界面,游戏界面为一个4×4矩阵数据(二维数组);
3.获取一次键盘操作(方向键或q),按读取的方向键进行移动,若输入q,则提示是否保存数据,若输入n,则保存本次游戏数据,若输入y,则不保存,退出程序;
4.按移动方向对原来相邻的两个相同数字(或不相邻但中间无数字的两个相同数字)进行合并,其余数据移动,显示分数(所有合并数字的和);
5.随机生成一个2或4,随机放在矩阵元素为0处;
6.判断是否有元素等于2048,若有,则打印win,然后退出游戏,否则重复3、4、5、6步骤,直到矩阵数据填满且无法再执行步骤4,显示游戏结束,退出程序。
三.项目结构
主要的函数及其功能:
1 void main(void)
主函数,整合其他函数的功能。
2 void start(void)
运行程序,选择功能(开始新游戏或重新开始保存的游戏)。若选择开始新游戏,则初始化矩阵元素为0,再随机将2赋值给4×4矩阵中的2个元素;若选择重新开始保存的游戏,则读取data.dat数据。
涉及知识:选择结构,条件判断,二维数组操作,文件操作,生成随机数等。
3 void print(void)
打印提示(按q退出,方向键移动)、矩阵数据(若等于0则打印空格)和分数。
涉及知识:循环结构等。
4 char get_oper(void)
获取键盘输入的方向键或q,返回得到的字符。
涉及知识:选择结构,条件判断等。
5 void move(char oper)
根据get_oper() 函数返回的字符确定方向,对矩阵数据进行移动。
涉及知识:选择结构,条件判断,循环结构等。
6 void merge(char oper)
根据get_oper() 函数返回的字符确定方向,对相邻的两个相同数字进行合并,然后再进行一次移动操作,记录所有合并数据的和(即分数)。
涉及知识:选择结构,条件判断,循环结构等。
7 void random1(void)
在合并完成后,随机生成1个2或4,随机给矩阵中等于0的元素赋值。
涉及知识:循环结构,条件判断,生成随机数等。
8 int is_win(void)
若有数组元素等于2048,返回1,否则返回0。
涉及知识:循环结构,条件判断等。
9 int is_over(void)
判断游戏是否结束。若矩阵数据填满(矩阵元素等于0表示未填充数据)且在横竖方向上没有相邻的数据,则结束游戏,返回1;否则继续执行 get_oper函数,返回0。
涉及知识:循环结构,条件判断等。
10 int save(int matrix[][4],int scores)
在未结束时退出,保存游戏数据到data.dat文件,保存成功返回1,否则返回0。
涉及知识:二维数组,文件操作。
11 void quit1(void)
退出游戏。
涉及知识:sleep(1);exit(0);等。
主要的全局变量:
int matrix[4][4]; 用于存储矩阵的值。
int scores; 用于存储分数。
相关文章推荐
- 开放源代码的全文检索引擎Lucene――介绍、系统结构与源码实现分析
- 6/29 项目目录结构有所调整
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十四):ASP.NET2.0实现无刷新客户端回调的Callback机制及例子代码下载
- Ascent代码分析4-World之地图管理及实现结构
- 利用PHP安装windows自动运行的服务,PHP程序可以实现长时间、自动运行、定时更新功能,直接可以用在项目中的类源代码
- 基于visual c++之windows核心编程代码分析(65)实现程序自我复制
- 基于visual c++之windows核心编程代码分析(65)实现程序自我复制
- 使用库项目实现Android程序代码的复用
- 基于Visual C++之Windows核心编程代码分析(3)实现程序自动安装
- jQuery 选择器项目实例分析及实现代码
- jQuery 选择器项目实例分析及实现代码
- 基于visual c++之windows核心编程代码分析(65)实现程序自我复制
- 使用库项目实现Android程序代码的复用
- 使用库项目实现Android程序代码的复用
- 使用库项目实现Android程序代码的复用
- 基于Visual C++之Windows核心编程代码分析(3)实现程序自动安装
- 使用Library项目实现Android程序代码的复用
- Android4.0图库Gallery2代码分析(一) 程序总体结构
- discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现
- Android4.0图库Gallery2代码分析(一) 程序总体结构