东华理工大学。
学院: 国际教育学院学院
专业: 电子信息工程
班级: 1420606
学号: 201420060638
姓名: 钟天运。
1、课程设计题目:游戏2048
2、课程设计要求:
a) 使用c语言编写2048这款游戏。
b) 能够正常运行,拥有游戏界面。
c) 能正常进行游戏从开始到结束。
d) 用户操作方便。
3、设计思路:
a) 游戏介绍:
i. 2048是一款简单的数字类游戏,界面是一个4*4的方形格子。每个格子里可以为空或者有一个2^n的数值。
ii. 用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中的数值向对应方向进行移动,直至移动到最边上的格子或者有其他数值占用,如果碰到等大数值,将会进行合并。
此外,成功移动后,会在一个空格子随机生成一个2或者4
iii. 游戏目标是合成2048这个数值或者更大的数值。
b) 实现思路:
i. 可以使用二维数组来保存4*4格子中的数值。
ii. 指令,可以通过输入字符函数,读取用户在键盘上的方向键,进行判断执行对应的**。
iii. 游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打印界面。
iv. 需要判断游戏结束的函数,以及记录游戏分数和步骤的变量。
v. 当游戏结束时,能够询问用户是否重新开始。
vi. 随机生成一个新数,可以调用随机函数,使用时间做种子。
c) 实现难点:
i. 打印游戏界面,要实现灵活能根据棋盘数组里面的数据灵活打印。
ii. 执行操作时,数值的移动和合并。
4、流程图。
5、c语言源**。
/ 游戏。#include ""
#include ""
#include ""
#include ""
#include ""
/宏定义常量方向键值。
/const int left = 75, up = 72, right = 77, down = 80;
#define left 75
#define up 72
#define right 77
#define down 80
const char error_str 您上次输入的指令无法识别,请重新输入。";
struct board
int place[4][4];
long int stepn;
long int num存储游戏分数。
long int time;
int dtkdirection key 记录方向键,及操作方向。
int over;
int zeronum;
/该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。
int main()
//place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。
struct board board1, board_backup;
int newgame(struct board *,int),show(struct board *)operate(struct board *)
char str[100] =首次运行游戏用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等
newgame(&board1, 0调用函数为新局初始化,第二个参数为初始化方式。
show(&board1);
printf("%s请从键盘上单击方向键,指定下一步操作(esc键退出游戏)……n", str);
dobreak;
case 27: exit(27);
default: strcpy_s(str, sizeof(str), error_str);
system("cls");
show(&board1);
printf("%s请从键盘上单击方向键,指定下一步操作(esc键退出游戏)……n", str);
if (} while (!
printf("按任意键退出……"
_getch();
return 0;
/该函数为主要打印函数,包括棋盘的打印,分数,等信息。
int show(struct board * pboard)
int i, j, x, len,numlen(int);
printf("游戏2048——游戏运行时间:%ld s", time(null) -pboard).time);
printf("游戏分数:%ld", pboard).num);
printf(" 已执行步骤数:%ld", pboard).stepn);
//开始绘制棋盘。
printfnn");
for (i = 0; i < 7; +i)
elseprintf("");
printfnn");
return 0;
/这是show函数的附属函数,用于求一个整数长度。
int numlen(int a)
int i, n = 1;
for (i = 1; i < 11; +i)
return 0;
/开始新的游戏,将棋盘和数据初始化,或者载入棋盘,第二个参数决定初始化方案,默认0
int newgame(struct board * pboard, int project)
int i, j, t;
(*pboard).stepn = 0;
(*pboard).num = 0;
(*pboard).time = long int)time(null取当前时间为开始时间。
(*pboard).dtk = 0;
(*pboard).over = 0;
(*pboard).zeronum = 14;
for (i = 0; i < 4; +i)
for (j = 0; j < 4; +j)
pboard).place[i][j] =0;
do while ((pboard).place[i][j]);
t = 2 * int)(rand() 32768.0 * 2) +1);
(*pboard).place[i][j] =t;
do while ((pboard).place[i][j]);
t = 2 * int)(rand() 32768.0 * 2) +1);
C语言课程设计报告 组数游戏
c语。言。程。序。设。计。题目 组数游戏。班级序号 05507120 学号 20071002806 姓名 管兵。指导老师 刘文中。c语言是一种编译型程序设计语言,编程设计是学习该语言的一个重要环节。通过温习已学的知识,在上机实践中熟悉c语言的编程环境,进而达到能够编写较复杂程序并将其实际应用的程度。...
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...