控制台版2048游戏C程序项目分析(仅供参考,后期代码实现结构有所调整)

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

你可能感兴趣的:(C的进阶)