游戏c语言试验报告.doc

上传人:scccc 文档编号:12410098 上传时间:2021-12-03 格式:DOC 页数:19 大小:100KB
返回 下载 相关 举报
游戏c语言试验报告.doc_第1页
第1页 / 共19页
游戏c语言试验报告.doc_第2页
第2页 / 共19页
游戏c语言试验报告.doc_第3页
第3页 / 共19页
游戏c语言试验报告.doc_第4页
第4页 / 共19页
游戏c语言试验报告.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《游戏c语言试验报告.doc》由会员分享,可在线阅读,更多相关《游戏c语言试验报告.doc(19页珍藏版)》请在三一文库上搜索。

1、成绩评定教师签名评定日期学生姓名(学号):第3组:钟瞻宇嘉应学院 计算机学院实验报告课程名称:程序设计开课学期:2015 2016学年第1学期班 级:计算机1505指导老师:陈广明设计题目:游戏2048目录六、总结 、实验目的和要求使用C语言编写2048这款游戏(2) 能够正常运行,拥有游戏界面。(3) 能正常进行游戏从开始到结束。(4) 用户操作方便。二、实验环境、内容和方法实验内容:1、游戏开始时随机产生两个数值为 2/4的方格,其中一个方格置于4 个角中的一个位置,另一个方格随机的置于其他位置,其他方格置于0。2、每次按方向键(w,s,a,d )后,逐行计算移动后的方格值。每行移动的算法

2、是: 先将所有值为0的数移至行首。能后从行尾开始逐一和前一个数比较,如果相等则合并 这2个格子。3、每合并一次格子,将其值累计到游戏总分中。4、一次移动结束后,在所有值为 0的方格中随机的分配一个2/4的值。5、所有方格值不为0且上下、左右相邻的方格都不相等,则游戏结束。6、2出现的概率为70% 4出现的概率为30%实验方法:通过上机操作完成各内容。实验环境:实验用PC机一台,使用操作系统为 Windows7/ Windows8/ WindowslQ安装vc+ 或v2008等编译软件三、程序设计开始刷新4*4窗口,重 显示4*4的游戏方格随机产生一个方块。void all_pri ntf();

3、/输出图像函数#i nclude<stdio.h>#in clude<stdlib.h>#in clude<time.h>#in clude<c oni o.h>#defi ne M 2048void up();void dow n();void right();void left();void play(); /void ran dom();void in tegral( int x);/上操作。/下操作。/右操作。/左操作。操作函数。/随机函数。积分函数。int A44=0;int C=0; / 得分的最终数值。void main()prin

4、tf("游戏规则很简单: n");printf("开始时棋盘内随机出现两个数字,出现的数字仅可能为2或 4.n");printf("玩家可以选择上(w)下(s)左(a)右(d)四个方向,若棋盘内的数字出现位移或合并,视为有效移动 .n");printf("若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并.n");printf("合并所得的所有新生成数字想加即为该步的有效得分 .n");printf("玩家选择的方向行或列前方有空格则出现位移 .n");prin

5、tf(" 每有效移动一步,棋盘的空位 (无数字处 ) 随机出现一个数字 (依然可 能为 2或 4).n");printf("棋盘被数字填满,无法进行有效移动,判负,游戏结束.n");printf("棋盘上出现 2048,判胜,游戏结束 ");printf("nnn");printf(" ttt按回车开始游戏 .n");getchar(n);system("cls");system("color 70");random();random();all_prin

6、tf();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 c7");printf("nttt任务失败!你总共获得 °%d分!n",C);else if(flag=2)printf("nttt恭 喜 你 获 得 胜 利 ! 你总共获得 &

7、#163;分!n",C);if(flag=0|flag=2)y or n ) :");printf(" 是否重新开始?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 break;elserandom();system("cls");all_

8、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 u

9、p()int a44=0,i,j,m;for(j=0;j<=3;j+)for(i=0,m=0;i<=3;i+)if(Aij=0)continue;的有效值赋给 aij,所有有else am+j=Aij;/Aij 效值向上靠拢。for(i=0;i<=3;i+)for(j=0;j<=3;j+)Aij=0; / 对整个 A 数组赋 0for(j=0;j<=3;j+)for(i=0,m=0;i<=3;i+)if(i=3&&aij!=0)Amj=aij;else if(aij=0)continue;else if(aij=ai+1j)Am+j=aij*

10、2;ai+1j=0;integral(aij*2);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;的有效值赋给 aij,所有有else am-j=Aij;/Aij效值向下靠拢。for(i=0;i<=3;i+)for(j=0;j<=3;j+)Aij=0;/ 对整个 A 数组赋 0for(j=0;j<=3;j+)for(i=3,m=3;i>=0;i-)if(i=0

11、&&aij!=0)Amj=aij;else if(aij=0)continue;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;的有效值赋给 aij,所有有else aim+=Aij;/Aij效值向左靠拢。for(i=0;i<=3;i+)for(j=0;j&

12、lt;=3;j+)Aij=0;/对整个 A 数组赋 0for(i=0;i<=3;i+)for(j=0,m=0;j<=3;j+)if(j=3&&aij!=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 right()int a44=0,i,j,m;for(i=0;i<=3;i+)for(j=3,m=3;j>=0;j-)if(Aij=0)c

13、ontinue;的有效值赋给 aij,所有有else aim-=Aij;/Aij效值向右靠拢。for(i=0;i<=3;i+)for(j=0;j<=3;j+)Aij=0;/ 对整个 A 数组赋 0for(i=0;i<=3;i+)for(j=3,m=3;j>=0;j-)if(j=0&&aij!=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;/ 分析计算回归赋值。/* 随机函数

14、/ 向右void random()*/srand(time(0); int i,k,p,q;i=rand()%10+1;if(i<=7)积分函数输出图片n");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(" for(i=0;i<=3;i+)for(j=0;j<=3;j+)printf(" &q

15、uot;);printf(" n");/for(j=0;j<=3;j+)if(Aij=0)printf(" ");else printf("%5d ",Aij);printf(" n");/ for(j=0;j<=3;j+)printf(" "); printf(" n");/n");printf("五、调试与运行结果六、总结通过本次课程设计,对C语言的应用有了更多的了解,不过我们也发 现我们很多的不足之处,比如我们只用到了前七章的内容,像指针等工具 没用到。理论上有 2048的胜利界面,但我们没有弄出来。还有界面美化不 够。通过实践,使我们在很多方面的认识有所提高。通过实践的学习, 我们认识到学好计算机要重视实践操作, 不仅仅是 C 语言,还是其他语言,都是重在实践。所以在今后学习过程中,我们会更 加注重实践操作,更好地学好计算机。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1