2048游戏C语言实验报告_第1页
2048游戏C语言实验报告_第2页
2048游戏C语言实验报告_第3页
2048游戏C语言实验报告_第4页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为word版,下载可任意编辑2048游戏c语言实验报告 精选文档 成果评定 老师签名 评定日期 嘉应学院 计算机学院 试验报告 课程名称: c 程序设计 开课学期: 20212021 学年第 1 学期 班 级: 计算机 1505 指导老师: 陈广明 设计题目: 嬉戏 2048 第 3 组:钟瞻宇 15111025 梁佳 151110233 同学姓名 ( 学号 ) : 房嘉泽 151110240 陈祺 151110249 精选文档 名目 一、 试验目的和要求 3 二、 试验环境 、内容和方法 3 三、程序设计 . 3 四、源代码 . 5 五、调试与运行结果 . 1 六、总结 . 1 精选

2、文档 、试验目的和要求 使用 c 语言编写 2048 这款嬉戏。 (2) 能够正常运行,拥有嬉戏界面。 (3) 能正常进行嬉戏从开头到结束。 (4) 用户操作便利。 二、试验环境 、内容和方法 试验内容:1、嬉戏开头时随机产生两个数值为 2/4 的方格,其中一个方格置 于 4 个角中的一个位置,另一个方格随机的置于其他位置,其他方格置于 0。 2、每次按方向键( w,s,a,d )后,逐行计算移动后的方格值。每行移动的算法 是:先将全部值为 0 的数移至行首。能后从行尾开头逐一和前一个数比较,假如 相等则合并这 2 个格子。 3、 每合并一次格子,将其值累计到嬉戏总分中。 4、 一次移动结束后

3、,在全部值为 0 的方格中随机的安排一个 2/4 的值。 5、 全部方格值不为 0 且上下、左右相邻的方格都不相等,则嬉戏结束。 6、 2 消失的概率为 70%,4 消失的概率为 30%。 试验方法: 通过上机操作完成各内容。 试验环境: 试验用 pc 机一台,使用操作系统为 windows 7/ windows 8/ windowslo,安 装 vc+ 或 v2021 等编译软件 三、程序设计 精选文档 精选文档 y 嬉戏结束 四、源代码 精选文档 void all_printf(); / 输出图像函数。 int a44=0; int c=0; / 得分的最终数值。 void main()

4、printf( 嬉戏规章很简洁: n); printf( 开头时棋盘内随机消失两个数字,消失的数字仅可能为 2 或 4.n); printf( 玩家可以选择上 (w) 下(s)左(a)右(d)四个方向,若棋盘内的数 字消失位移或合并,视为有效移动 .n); #in cludestdio.h #in cludestdlib.h #in cludetime.h #in cludec oni o.h #defi ne m 2048 void up(); /上操作。 void dow n(); / 下操作。 void right(); / 右操作。 void left(); / 左操作。 void p

5、lay(); / 操作函数。 void ran dom(); /随机函数。 void in tegral( int x); 积分函数 精选文档 printf( 若有相同的数字则合并,每次有效移动可以同时合并,但不行 以连续合并 .n); printf( 合并所得的全部新生成数字想加即为该步的有效得分 .n); printf( 玩家选择的方向行或列前方有空格则消失位移 .n); printf( 每有效移动一步,棋盘的空位 (很多字处)随机消失一个数字 (依 然可能为 2 或 4).n); printf( 棋盘被数字填满,无法进行有效移动,判负,嬉戏结束 .n); printf( 棋盘上消失 20

6、48,判胜,嬉戏结束 ); printf(nnn); printf( ttt 按回车开头嬉戏 .n); getchar(n); system(cls); 精选文档 system(color 70); random(); random(); all_printf(); int flag=1,i,j; char judge; for(;flag=1;) play(); for(i=0,flag=0;i=3;i+) for(j=0;j=3;j+) if(aij=0(flag=0|flag=1)flag=1; else if(aij=m)flag=2; if(flag=0) system(color

7、c7); else if(flag=2)printf(nttt 恭 喜 你 获 得 胜 利 ! 你 总共获得 ( 分!n,c); if(flag=0|flag=2) printf(nttt 任务失败 ! 你总共获得 4 分!n,c); 精选文档 printf( 是否重新开头?( y or n ):); judge=getch(); if(judge=y) system(cls); c=0; for(i=0;i=3;i+) for(j=0;j=3;j+) aij=0; random(); random(); all_printf(); flag=1; system(color 70); else

8、 break; 精选文档 else random(); system(cls); all_printf(); printf(n); printf(t 分数为 :%6dtt,c); void play() /* */ char direction; direction=getch(); switch(direction) case w:up();break; case s:down();break; case a:left();break; case d:right();break; default: printf( 输入错误! n); 操作函数 精选文档 void up() int a44=0

9、,i,j,m; for(j=0;j=3;j+) for(i=0,m=0;i=3;i+) if(aij=0)continue; else am+j=aij;/aij 全部有效值向上靠拢。 for(i=0;i=3;i+) for(j=0;j=3;j+) aij=0; / 对整个 a 数组赋 0 for(j=0;j=3;j+) for(i=0,m=0;i=3;i+) if(i=3aij!=0)amj=aij; else if(aij=0)continue; else if(aij=ai+1j) am+j=aij*2; ai+1j=0; integral(aij*2); 的有效值赋给 aij, 精选文

10、档 else if(aij!=ai+1j) am+j=aij; / 分析计算回归赋值。 / 向上 void down() int a44=0,i,j,m; for(j=0;j=3;j+) for(i=3,m=3;i=0;i-) if(aij=0)continue; else am-j=aij;/aij 全部有效值向下靠拢。 for(i=0;i=3;i+) for(j=0;j=3;j+) aij=0;/ 对整个 a 数组赋 0 for(j=0;j=3;j+) for(i=3,m=3;i=0;i-) if(i=0aij!=0)amj=aij; else if(aij=0)continue; 的有效

11、值赋给 aij, 精选文档 else if(aij=ai-1j) am-j=aij*2; ai-1j=0; integral(aij*2); else if(aij!=ai-1j) am-j=aij; / 分析计算回归赋值。 向下。 / 精选文档 void left() int a44=0,i,j,m; for(i=0;i=3;i+) for(j=0,m=0;j=3;j+) if(aij=0)continue; else aim+=aij;/aij 全部有效值向左靠拢。 for(i=0;i=3;i+) for(j=0;j=3;j+) aij=0;/ 对整个 a 数组赋 0 for(i=0;i=

12、3;i+) for(j=0,m=0;j=3;j+) if(j=3aij!=0)aim=aij; else if(aij=0)continue; else if(aij=aij+1) aim+=aij*2; aij+1=0; integral(aij*2); else if(aij!=aij+1) aim+=aij; 的有效值赋给 aij, 精选文档 / 分析计算回归赋值。 / 向左 void right() int a44=0,i,j,m; for(i=0;i=3;i+) for(j=3,m=3;j=0;j-) if(aij=0)continue; else aim-=aij;/aij 的有效

13、值赋给 aij, 全部有效值向右靠拢。 for(i=0;i=3;i+) for(j=0;j=3;j+) aij=0;/ 对整个 a 数组赋 0。 for(i=0;i=3;i+) for(j=3,m=3;j=0;j-) if(j=0aij!=0)aim=aij; else if(aij=0)continue; else if(aij=aij-1) aim-=aij*2; 精选文档 aij-1=0; integral(aij*2); else if(aij!=aij-1) aim-=aij; / 分析计算回归赋值。 / 向右。 void random() /* 随机函数 */ srand(time

14、(0); int i,k,p,q; i=rand()%10+1; if(i=7) k=2; else k=4; for(q=rand()%4+0,p=rand()%4+0;aqp!=0;) q=rand()%4+0; p=rand()%4+0; 精选文档 aqp=k; void integral(int x) /* 积分函数 */ c=c+x; void all_printf() /* 输出图 片 */ int i,j; printf( n); 精选文档 for(i=0;i=3;i+) for(j=0;jv=3;j+)pri ntf( ); prin tf( n); for(j=0;j=3;j+) if(aij=0)pri ntf( ); else prin tf( %5d ,aij); prin tf( n); for(j=0;j=3;j+)pri ntf( ); prin tf( n); 精选文档 printf( n); 五、调试与运行结果 精选文档 六、总结 通过本次课程设计,对 c 语言的应用有了更多的了解,不过我们 也发觉我们许多的不足之处,比如我们只用到了前七章的内容,像指 针等工具没用到。理论上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论