C语言课程设计报告 游戏

发布 2022-10-05 04:35:28 阅读 7016

东华理工大学。

学院: 国际教育学院学院

专业: 电子信息工程

班级: 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 对所要解...