游戏C语言实验报告Word文档格式.docx

上传人:b****4 文档编号:16684298 上传时间:2022-11-25 格式:DOCX 页数:14 大小:129.50KB
下载 相关 举报
游戏C语言实验报告Word文档格式.docx_第1页
第1页 / 共14页
游戏C语言实验报告Word文档格式.docx_第2页
第2页 / 共14页
游戏C语言实验报告Word文档格式.docx_第3页
第3页 / 共14页
游戏C语言实验报告Word文档格式.docx_第4页
第4页 / 共14页
游戏C语言实验报告Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

游戏C语言实验报告Word文档格式.docx

《游戏C语言实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《游戏C语言实验报告Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

游戏C语言实验报告Word文档格式.docx

实验内容:

1、游戏开始时随机产生两个数值为2/4的方格,其中一个方格置于4个角中的一个位置,另一个方格随机的置于其他位置,其他方格置于0。

2、每次按方向键(w,s,a,d)后,逐行计算移动后的方格值。

每行移动的算法是:

先将所有值为0的数移至行首。

能后从行尾开始逐一和前一个数比较,如果相等则合并这2个格子。

3、每合并一次格子,将其值累计到游戏总分中。

4、一次移动结束后,在所有值为0的方格中随机的分配一个2/4的值。

5、所有方格值不为0且上下、左右相邻的方格都不相等,则游戏结束。

6、2出现的概率为70%,4出现的概率为30%。

实验方法:

通过上机操作完成各内容。

实验环境:

实验用PC机一台,使用操作系统为Windows7/Windows8/Windows10,安装vc++或v2008等编译软件

三、程序设计

Y

N

N

四、源代码

#include<

stdio.h>

stdlib.h>

time.h>

conio.h>

#defineM2048

voidup();

//上操作。

voiddown();

//下操作。

voidright();

//右操作。

voidleft();

//左操作。

voidplay();

//操作函数。

voidrandom();

//随机函数。

voidintegral(intx);

//积分函数。

voidall_printf();

//输出图像函数。

intA[4][4]={0};

intC=0;

//得分的最终数值。

voidmain()

{

printf("

游戏规则很简单:

\n"

);

开始时棋盘内随机出现两个数字,出现的数字仅可能为2或4.\n"

玩家可以选择上(w)下(s)左(a)右(d)四个方向,若棋盘内的数字出现位移或合并,视为有效移动.\n"

若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并.\n"

合并所得的所有新生成数字想加即为该步的有效得分.\n"

玩家选择的方向行或列前方有空格则出现位移.\n"

每有效移动一步,棋盘的空位(无数字处)随机出现一个数字(依然可能为2或4).\n"

棋盘被数字填满,无法进行有效移动,判负,游戏结束.\n"

棋盘上出现2048,判胜,游戏结束"

\n\n\n"

\t\t\t按回车开始游戏.\n"

getchar(\n);

system("

cls"

color70"

random();

all_printf();

intflag=1,i,j;

charjudge;

for(;

flag==1;

{

play();

for(i=0,flag=0;

i<

=3;

i++)

{

for(j=0;

j<

j++)

if(A[i][j]==0&

&

(flag==0||flag==1))flag=1;

elseif(A[i][j]==M)flag=2;

}

if(flag==0)

system("

colorc7"

printf("

\n\t\t\t任务失败!

你总共获得%d分!

C);

elseif(flag==2)printf("

\n\t\t\t恭喜你获得胜利!

if(flag==0||flag==2)

是否重新开始?

(yorn):

"

judge=getch();

if(judge=='

y'

{

system("

C=0;

for(i=0;

for(j=0;

A[i][j]=0;

random();

all_printf();

flag=1;

}

elsebreak;

else

random();

all_printf();

\t分数为:

%6d\t\t"

}

}

voidplay()/*操作函数*/

chardirection;

direction=getch();

switch(direction)

case'

w'

:

up();

break;

s'

down();

a'

left();

d'

right();

default:

输入错误!

voidup()

inta[4][4]={0},i,j,m;

for(j=0;

for(i=0,m=0;

if(A[i][j]==0)continue;

elsea[m++][j]=A[i][j];

//A[i][j]的有效值赋给a[i][j],所有有效值向上靠拢。

for(i=0;

i++)

for(j=0;

A[i][j]=0;

//对整个A数组赋0。

if(i==3&

a[i][j]!

=0)A[m][j]=a[i][j];

elseif(a[i][j]==0)continue;

elseif(a[i][j]==a[i+1][j])

A[m++][j]=a[i][j]*2;

a[i+1][j]=0;

integral(a[i][j]*2);

elseif(a[i][j]!

=a[i+1][j])

A[m++][j]=a[i][j];

}//分析计算回归赋值。

//向上。

voiddown()

for(i=3,m=3;

i>

=0;

i--)

elsea[m--][j]=A[i][j];

//A[i][j]的有效值赋给a[i][j],所有有效值向下靠拢。

//对整个A数组赋0。

if(i==0&

elseif(a[i][j]==a[i-1][j])

A[m--][j]=a[i][j]*2;

a[i-1][j]=0;

=a[i-1][j])

A[m--][j]=a[i][j];

//向下。

voidleft()

for(j=0,m=0;

elsea[i][m++]=A[i][j];

//A[i][j]的有效值赋给a[i][j],所有有效值向左靠拢。

if(j==3&

=0)A[i][m]=a[i][j];

elseif(a[i][j]==a[i][j+1])

A[i][m++]=a[i][j]*2;

a[i][j+1]=0;

=a[i][j+1])

A[i][m++]=a[i][j];

//向左。

voidright()

for(j=3,m=3;

j>

j--)

elsea[i][m--]=A[i][j];

//A[i][j]的有效值赋给a[i][j],所有有效值向右靠拢。

if(j==0&

elseif(a[i][j]==a[i][j-1])

A[i][m--]=a[i][j]*2;

a[i][j-1]=0;

=a[i][j-1])

A[i][m--]=a[i][j];

//向右。

voidrandom()/*随机函数*/

srand(time(0));

inti,k,p,q;

i=rand()%10+1;

if(i<

=7)

k=2;

elsek=4;

for(q=rand()%4+0,p=rand()%4+0;

A[q][p]!

q=rand()%4+0;

p=rand()%4+0;

A[q][p]=k;

voidintegral(intx)/*积分函数*/

C=C+x;

voidall_printf()/*输出图片*/

inti,j;

■■■■■■■■■■■■■■■■■■■■■■■\n"

j++)printf("

■"

printf("

■\n"

//

if(A[i][j]==0)printf("

elseprintf("

■%5d"

A[i][j]);

五、调试与运行结果

六、总结

通过本次课程设计,对C语言的应用有了更多的了解,不过我们也发现我们很多的不足之处,比如我们只用到了前七章的内容,像指针等工具没用到。

理论上有2048的胜利界面,但我们没有弄出来。

还有界面美化不够。

通过实践,使我们在很多方面的认识有所提高。

通过实践的学习,我们认识到学好计算机要重视实践操作,不仅仅是C语言,还是其他语言,都是重在实践。

所以在今后学习过程中,我们会更加注重实践操作,更好地学好计算机。

(范文素材和资料部分来自网络,供参考。

可复制、编制,期待你的好评与关注)

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

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1