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; 用于存储分数。