C语言推箱子猜数字Word文件下载.docx
- 文档编号:19580678
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:21
- 大小:84.31KB
C语言推箱子猜数字Word文件下载.docx
《C语言推箱子猜数字Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言推箱子猜数字Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
(5)设置走动函数。
什么情况下可以走动,什么情况下可以推动,可移动就通过字母的赋值实现走动
(6)优化细节。
输入错误提示,重玩提示,过关提示,
(7)关数的添加。
输出函数,初始函数由于调用的都是比较集中部分数据,可以把不同的输出和初始集成,再调用实现关数的增加。
所以可以一关一个自己的关级初始函数与关级输出函数。
就需要把初始函数部分分成总初始函数和关级初始函数,总初始函数判断调用哪个关级初始函数,同样输出函数也是这样。
在函数内部还是用调各自的总函数来实现循环。
不管什么情况下走动的规则都一样,所以走动函数不再改动。
(8)各关的连续,在过关的时候提示,然后判断是否调用下一关的初始函数中间可以用全局变量实现控制
四代码
1.猜数字代码:
//猜数字游戏
//1.产生随机数字
#include<
iostream.h>
stdlib.h>
//随机函数头文件
inta[10],b,n,p=0;
//a数组用来实现记录随机数据和输入函数,,记为初始数组。
b用来实现正确数字的输出和数字统计,记为存储数组。
p统计正确的个数
//取得随即函数
voidrd()
{
//产生4个不一样的数并赋值给初始函数
n=rand()%10;
for(intm=0;
;
m++)
{
if(n!
=0)
a[0]=n;
break;
}
else
n=rand()%10;
}
for(m=0;
=a[0]&
&
n!
a[1]=n;
for(m=0;
=a[1]&
a[2]=n;
else
=a[2]&
a[3]=n;
a[4]=a[0]*1000+a[1]*100+a[2]*10+a[3];
//输出函数
voidshow()
//输入提示
cout<
<
"
!
按以下提示猜出这个每位数字都不同四位数。
如要重新玩请输入“0”!
endl;
//猜中的情况输出
if(p==5)cout<
@数据错误请重新输入@"
if(p==4)
********恭喜你全部猜中!
*********"
if(p<
4)
cout<
****你猜中数字个数!
--->
b<
*****你猜中正确位子的数字个数"
p<
cout<
输入你猜的数字"
}
//判断函数
voidjg()
{
show();
cin>
>
a[5];
//若是重玩则重新调用初始函数
if(a[5]==0){rd();
p=0;
else{//将非初始化数据全重置
p=0;
for(inti=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位的
for(i=6;
for(intj=9-i;
j>
=1;
j--)
{
if(a[i]==0){p=5;
}//输入不足4位的
if(a[i]==a[i+j])//输入有重复的
{p=5;
}
}}
//比较,若一样则猜对,将数值附给存储数组
if(p!
=5)
for(i=0;
=3;
for(intj=5;
j<
j++)
//位置和数字都对的
if(a[i]==a[j]&
j==i+6)
{p++;
b++;
if(a[i]==a[j])
{b++;
}//仅仅数字存在的
}
jg();
//实现连续。
voidmain()
rd();
//初始函数调用一次。
2.推箱子代码
stdio.h>
//定义初始化数组函数。
charn[20][20];
intj=2,k=2;
//用来记录人走的路,实现走的连续性
charx=0;
//x用于控制步子方向.由于是全局变量,可以实现连续调用
intf=1;
//实现关数的控制
//枚举限制x的范围
//第一关的输出函数
voidfirstout()
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]=='
'
O'
//数据全部输出
for(inty=0;
y<
=19;
y++)
for(inti=0;
n[y][i];
cout<
//第一关的重置函数
voidfirstrd()
for(inti=0;
n[0][i]='
w'
n[19][i]='
n[i][0]='
n[i][19]='
//人
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]='
n[7][8]='
n[8][8]='
n[7][6]='
n[6][3]='
//第二关输出函数部分
voidsndout()
推箱子进入正确位子。
推入正确的箱子不再推会推动,可以一次走多步"
//箱子的位置要显示出来,,若是箱子和位置合二为一就显示为正确
if(n[10][3]=='
)n[10][3]='
if(n[16][15]=='
)n[16][15]='
//第二关重置函数部分
voidsndrd()
//墙壁
{
for(ints=9;
s<
s++)
{
n[3][s]='
j=3;
k=3;
n[3][3]='
n[10][4]='
n[2][7]='
n[10][3]='
n[16][15]='
//第三关输出函数部分
voidthout()
//第三关重置函数部分
voidthrd()
n[19][i]='
for(inty=16;
for(ints=0;
=6;
n[y][s]='
n[j][k]='
j=3;
n[2][3]='
n[15][15]='
//第四关输出函数部分
voidfrout()
if(n[4][5]=='
)n[4][5]='
if(n[5][6]=='
)n[5][6]='
if(n[6][7]=='
if(n[7][8]=='
if(n[8][8]=='
if(n[4][5]=='
//第四关重置函数部分
voidfrrd()
n[4][s]='
n[5][s]='
n[6][s]='
//人
n[j][k]='
n[9][4]='
n[3][7]='
n[4][5]='
n[6][7]='
//总重置函数
voidrd()
//清空全部数据
for(inty=0;
n[y][i]='
//重新规划墙壁
switch(f)
case1:
firstrd();
case2:
sndrd();
case3:
thrd();
case4:
frrd();
}}
//判断是否胜利。
与输出函数数
voidjudgeout()
inti=0;
switch(f)
//先判断是否胜利
n[7][8]=='
n[8][8]=='
n[7][6]=='
n[6][3]=='
)
{
恭喜通过第一关"
若想进下一关时请输入按9:
cin>
i;
if(i==9)
{f++;
//下一关的控制
//人物的数据清空
rd();
break;
}}
firstout();
//刷新步子
case2:
n[10][3]=='
n[16][15]=='
{
恭喜通过第二关"
{f++;
sndout();
if(n[6][7]=='
n[15][15]=='
cout<
若想进下一关时请输入按9两次:
}
thout();
if(n[4][5]=='
n[5][6]=='
n[6][7]=='
恭喜通过第三关"
frout();
请输入移动方向-->
//把输入正确的字符串换成数字
x;
x>
54||x<
48;
{cout<
******错误命令请重新输入"
cin>
//实现移动函数。
voidmove(chari)
switch(i)//控制语句
case49:
if(n[j-1][k]!
='
n[j-1][k]!
//有墙阻挡原样输出
//用数据交换实现移动
//判断可以移动箱子不能,能就交换数据,不能停止
if(n[j-1][k]=='
if(n[j-2][k]!
n[j-2][k]!
{
n[j-2][k]='
}
else
break;
n[j][k]='
j=j-1;
break;
case50:
if(n[j+1][k]!
n[j+1][k]!
)//第一步判断下一步是否为墙和已经移动好的位置
if(n[j+1][k]=='
)//第二步判断如果下一步为箱子的情况
if(n[j+2][k]!
n[j+2][k]!
)//第三步判定可以推动箱子与否
n[j+2][k]='
//箱子的交换数据
else
//人的数据交换
j=j+1;
case51:
if(n[j][k-1]!
n[j][k-1]!
)
if(n[j][k-1]=='
if(n[j][k-2]!
n[j][k-2]!
n[j][k-2]='
k=k-1;
case52:
if(n[j][k+1]!
n[j][k+1]!
if(n[j][k+1]=='
if(n[j][k+2]!
n[j][k+2]!
n[j][k+2]='
k=k+1;
case53:
break;
case54
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 箱子 数字
![提示](https://static.bdocx.com/images/bang_tan.gif)