C语言推箱子,猜数字

  • 格式:docx
  • 大小:100.14 KB
  • 文档页数:16

一实验题目

1.3.猜数游戏

2.4.利用数组和字符显示实现推箱子游戏;

二实验内容

1,编写一个猜数字游戏,游戏规则:

a,一个四位数,各位上的数字不重复,从1到9。

b,按以下提示猜出这个四位数。

c,每次猜测输入的数据给出本次共猜对了多少个数字。

e,给出本次猜对的数字并且位置正确的个数。

2. 推箱子游戏

用二维数组实现

三设计思想

1猜数字游戏

(1)随即数字和输入数字之间实现每一位的比较,需要把其每一位都独立出来才可,这就需要数组来实现存储。要输出的数据是记录性数据,可以用全局变量实现。

(2)产生四位不同的随机数字,不知道方法。可以用一次产生一个,然后判断是否合法,再把这一个和其他几个比较如果一样就一直产生。这样可以产生四个不同的随机数字。输入的数字为四位不同的数字,为了实现和随机数逐位的比较需要把它拆分为4个数字。

(3)把独立出来的数字比较,对的就把相应的全局变量+1,

(4)输出函数要实现输入一次就刷新一次,就需要处理函数循环调用输出函数,这样不是输出间断。

(5)细节。可以在相应函数设置判断项实现。游戏中输入错误了,输出函数要输出提示;过关了要提示。若玩游戏途中要重新开始了,就重新开始函数。

2 推箱子游戏

(1)要求用二唯数组实现推箱子游戏 (2)总体设置的思路规划。A代表人,*箱子,O代表箱子要到的位置,@表位箱子到达了位置.1上2下3左4右.5初始化...w 表示墙壁游戏规则,推箱子进入正确位子。。

1.数据初始化:屏幕初始化.用2伟数组实现.

2.判断是否胜利.

3.输出:胜利输出,一般输出

4.实现移动

5.输出 ....循环调用实现自动刷新

(3)设置初始函数给各数赋值。

(4)输出函数,把数据全部输出。判断怎么输出,还要循环来实现一步一刷新实现走动。

(5)设置走动函数。

什么情况下可以走动,什么情况下可以推动,可移动就通过字母的赋值实现走动

(6)优化细节。输入错误提示,重玩提示,过关提示,

(7)关数的添加。输出函数,初始函数由于调用的都是比较集中部分数据,可以把不同的输出和初始集成,再调用实现关数的增加。所以可以一关一个自己的关级初始函数与关级输出函数。就需要把初始函数部分分成总初始函数和关级初始函数,总初始函数判断调用哪个关级初始函数,同样输出函数也是这样。在函数内部还是用调各自的总函数来实现循环。不管什么情况下走动的规则都一样,所以走动函数不再改动。

(8)各关的连续,在过关的时候提示,然后判断是否调用下一关的初始函数中间可以用全局变量实现控制

四代码

1.猜数字代码:

//猜数字游戏

//1.产生随机数字

#include

#include //随机函数头文件

int a[10],b,n,p=0; //a数组用来实现记录随机数据和输入函数,,记为初始数组。b用来实现正确数字的输出和数字统计,记为存储数组。p统计正确的个数

//取得随即函数

void rd()

{

//产生4个不一样的数并赋值给初始函数

n=rand()%10;

for(int m=0;;m++)

{

if(n!=0)

{

a[0]=n;break;

} else

n=rand()%10;

}

n=rand()%10;

for( m=0;;m++)

{

if(n!=a[0]&&n!=0)

{

a[1]=n;break;

}

else

n=rand()%10;

}

n=rand()%10;

for(m=0;;m++)

{

if(n!=a[0]&&n!=a[1]&&n!=0)

{

a[2]=n;break;

}

else

n=rand()%10;

}

n=rand()%10;

for(m=0;;m++)

{

if(n!=a[0]&&n!=a[1]&&n!=a[2]&&n!=0)

{

a[3]=n;break;

}

else

n=rand()%10;

}

a[4]=a[0]*1000+a[1]*100+a[2]*10+a[3];

}

//输出函数

void show()

{

//输入提示

cout<<"!!!按以下提示猜出这个每位数字都不同四位数。如要重新玩请输入 “0” !!"<

//猜中的情况输出

if(p==5) cout<<"@数据错误请重新输入@"<

if(p==4) cout<<"********恭喜你全部猜中!*********"<

if(p<4)

{

cout<<" ****你猜中数字个数!--->"<

cout<<"*****你猜中正确位子的数字个数"<

}

cout<<"输入你猜的数字";

}

//判断函数

void jg( )

{

show();

cin>>a[5];

// 若是重玩则重新调用初始函数

if(a[5]==0) {rd();p=0;}

else{ //将非初始化数据全重置

p=0;

for(int i=6;i<=9;i++)

a[i]=NULL;

b=NULL;

//将输入的数分解

a[9]=a[5]%10;

a[8]=a[5]/10%10;

a[7]=a[5]/10/10%10;

a[6]=a[5]/10/10/10%10;

//判断输入数据有效性

if(a[5]/10/10/10>=10&&a[5]/10/10/10==0) p=5;//输入大于5位的

else

{

for( i=6;i<=9;i++)

for(int j=9-i;j>=1;j--)

{

if(a[i]==0) { p=5;break;} //输入不足4位的

if(a[i]==a[i+j]) //输入有重复的

{ p=5;break;}

} }

//比较,若一样则猜对,将数值附给存储数组

if(p!=5)

{

for( i=0;i<=3;i++)

for(int j=5;j<=9;j++)

{

//位置和数字都对的

if(a[i]==a[j]&&j==i+6) { p++;b++;break;}

if(a[i]==a[j])

{b++;break;} //仅仅数字存在的

}

}

}

jg();//实现连续。

}

void main()

{

rd();//初始函数调用一次。

jg();

show();

}

2.推箱子代码

#include

#include

//定义初始化数组函数。

char n[20][20];

int j=2,k=2; //用来记录人走的路,实现走的连续性

char x=0; //x用于控制步子方向.由于是全局变量,可以实现连续调用

int f=1; //实现关数的控制

//枚举限制x的范围

//第一关的输出函数

void firstout()

{

cout<<"1 代表上;2 代表下;3 代表左;4 代表右;5 代表初始化游戏.规则:*代表箱子,O代表要推倒的正确的位子。A是人。推入正确的箱子不再推会推动,可以一次走多步"<

if(n[6][7]=='*') n[6][7]='@';

if( n[7][8]=='*') n[7][8]='@';

if( n[8][8]=='*') n[8][8]='@';

if(n[6][3]=='*') n[6][3]='@';

if(n[7][6]=='*') n[7][6]='@';

//数据为空的,显示位置

if(n[6][7]==' ') n[6][7]='O';

if( n[7][8]==' ') n[7][8]='O';

if( n[8][8]==' ') n[8][8]='O';

if(n[6][3]==' ') n[6][3]='O';

if(n[7][6]==' ') n[7][6]='O';

//数据全部输出 for(int y=0;y<=19;y++)

{

for(int i=0;i<=19;i++)

cout<

cout<

}

}

//第一关的重置函数

void firstrd()

{

for(int i=0;i<=19;i++)

{

n[0][i]='w';

n[19][i]='w';

n[i][0]='w';

n[i][19]='w';

}

//人

n[j][k]=' ';j=2;k=2;n[2][2]='A';

//箱子

n[5][3]='*';n[5][4]='*';n[10][7]='*';n[5][5]='*';n[5][6]='*';

//位置

n[6][7]='O';n[7][8]='O';n[8][8]='O';n[7][6]='O';n[6][3]='O';

}

//第二关输出函数部分

void sndout()

{

cout<<"1 代表上;2 代表下;3 代表左;4 代表右;5 代表初始化游戏.规则:推箱子进入正确位子。推入正确的箱子不再推会推动,可以一次走多步"<

//箱子的位置要显示出来,,若是箱子和位置合二为一就显示为正确

if(n[6][7]=='*') n[6][7]='@';

if( n[10][3]=='*') n[10][3]='@';

if( n[8][8]=='*') n[8][8]='@';

if(n[6][3]=='*') n[6][3]='@';

if(n[16][15]=='*') n[16][15]='@';

//数据为空的,显示位置

if(n[6][7]==' ') n[6][7]='O';

if( n[10][3]==' ') n[10][3]='O';

if( n[8][8]==' ') n[8][8]='O';

if(n[6][3]==' ') n[6][3]='O';