高级程序语言课程设计猜数字推箱子.docx
《高级程序语言课程设计猜数字推箱子.docx》由会员分享,可在线阅读,更多相关《高级程序语言课程设计猜数字推箱子.docx(15页珍藏版)》请在冰豆网上搜索。
高级程序语言课程设计猜数字推箱子
高级程序语言课程设计
课程名称:
C语言课程设计
指导老师:
班级:
学号:
姓名:
一、实验题目
1、猜数字游戏;
2、推箱子游戏。
二、实验内容
1、猜数字
编写一个猜数字游戏,规则如下:
a,一个四位数,各位上的数字不重复,从1到9。
b,按一下提示猜出这个四位数。
c,每次猜测输入的数据给出本次共猜对了多少个数字。
d,给出本次猜对的数字并且为之正确的个数。
2、推箱子
利用数组和字符显示实现推箱子游戏。
三、设计思路
1、猜数字游戏
首先通过rand()随机产生一个四位数,将各个数位上的数字储存到一个数组num[]中,定义int型变量number储存输入的四位数,然后将这个数的各个数位上的数字储存到数组cmp[]中,将num[]和cmp[]中的元素相比较,当num[i]==cmp[j]时,m++,当i==j同时成立时,n++,这样就可以判断出本次输入的四位数猜对了m个,其中n个位置正确。
2、推箱子游戏
推箱子游戏地图由一个字符型二维数组确定,通过调用无返回值的函数move_up(),move_down(),move_left(),move_right()来实现向上下左右的移动。
每次移动前都会有一个循环遍历数组找到小人位置,然后用switch语句对不同情况下小人如何移动进行不同的处理,while()循环来判断是否箱子都被移动到指定位置来确定是继续移动还是结束游戏。
intstep用于记录移动的步数。
四、程序代码
1、猜数字游戏
程序代码如下:
#include
#include
#include
voidmain()
{
inti,j,x,number,m,n;
intnum[10],cmp[10];
srand(unsigned(time(NULL)));
for(i=0;i<4;i++)
{
leap:
x=rand()%9+1;
for(j=0;j
{
if(num[j]==x)
gotoleap;
}
num[i]=x;
}
cout<<"**********************"<cout<<"猜数字游戏"<cout<<"**********************"<cout<<"*游戏规则:
此数字为一个由1—9组成的各个数位不相等的四位数,每次输入后,系统给出猜对数字个数xAyB(即猜对x个,其中y个位置正确),直到猜对四个数字,游戏结束。
"<cout<<"*小提示:
输入“0”直接看答案。
"<cout<<"*开始游戏!
*"<leapp:
cout<<"请输入一个四位数:
"<<'\n'<cin>>number;
if(number==0)
{
cout<<"正确答案:
"<for(i=0;i<4;i++)
cout<cout<}
m=n=0;
for(i=0;i<4;i++)
{
cmp[3-i]=number%10;
number=number/10;
}
for(i=0;i<4;i++)
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(cmp[i]==num[j])
{
m++;
if(i==j)
n++;
}
}
}
if(n==4)
{
cout<<"CONGRATULATIONA!
"<for(i=0;i<4;i++)
cout<cout<}
else
{
cout<gotoleapp;
}
}
2、推箱子游戏
程序代码如下:
#include
#include
chararr[8][8]={37,37,37,37,37,37,37,37,37,20,'',37,'','','',37,37,'',2,37,'',2,'',37,37,'','',37,'','','',37,37,'','',2,'','','',37,37,15,'',37,37,37,37,37,37,15,'','','','',15,37,37,37,37,37,37,37,37,37};
inti,j,step=0;
chart=0,a=20,b=2,c=15,d=37;
voidprint()
{
system("cls");
cout<<"*********************"<cout<<"推箱子"<cout<<"*********************"<cout<<"*游戏规则*"<cout<<""<"<cout<<"*开始游戏*"<"<if(arr[5][1]=='')
arr[5][1]=15;
if(arr[6][1]=='')
arr[6][1]=15;
if(arr[6][6]=='')
arr[6][6]=15;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
cout<if(j==7)
cout<}
}
voidmove_up()
{
for(i=0;i<8;i++)
for(j=0;j<8;j++)
if(arr[i][j]==20)
{
switch(arr[i-1][j])
{
case37:
print();
break;
case2:
switch(arr[i-2][j])
{
case15:
t=arr[i-2][j];
arr[i-2][j]=arr[i-1][j];
arr[i-1][j]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i-2][j];
arr[i-2][j]=arr[i-1][j];
arr[i-1][j]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
case37:
print();
break;
}
break;
case15:
t=arr[i-1][j];
arr[i-1][j]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i-1][j];
arr[i-1][j]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
default:
print();
}
}
}
voidmove_down()
{
for(i=0;i<8;i++)
for(j=0;j<8;j++)
if(arr[i][j]==20)
{
switch(arr[i+1][j])
{
case37:
print();
break;
case2:
switch(arr[i+2][j])
{
case15:
t=arr[i+2][j];
arr[i+2][j]=arr[i+1][j];
arr[i+1][j]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i+2][j];
arr[i+2][j]=arr[i+1][j];
arr[i+1][j]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
case37:
print();
break;
}
break;
case15:
t=arr[i+1][j];
arr[i+1][j]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i+1][j];
arr[i+1][j]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
default:
print();
}
}
}
voidmove_left()
{
for(i=0;i<8;i++)
for(j=0;j<8;j++)
if(arr[i][j]==20)
{
switch(arr[i][j-1])
{
case37:
print();
break;
case2:
switch(arr[i][j-2])
{
case15:
t=arr[i][j-2];
arr[i][j-2]=arr[i][j-1];
arr[i][j-1]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i][j-2];
arr[i][j-2]=arr[i][j-1];
arr[i][j-1]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
case37:
print();
break;
}
break;
case15:
t=arr[i][j-1];
arr[i][j-1]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i][j-1];
arr[i][j-1]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
default:
print();
}
}
}
voidmove_right()
{
for(i=0;i<8;i++)
for(j=0;j<8;j++)
if(arr[i][j]==20)
{
switch(arr[i][j+1])
{
case37:
print();
break;
case2:
switch(arr[i][j+2])
{
case15:
t=arr[i][j+2];
arr[i][j+2]=arr[i][j+1];
arr[i][j+1]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i][j+2];
arr[i][j+2]=arr[i][j+1];
arr[i][j+1]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
case37:
print();
break;
}
break;
case15:
t=arr[i][j+2];
arr[i][j+1]=arr[i][j];
arr[i][j]='';
step++;
print();
break;
case'':
t=arr[i][j+1];
arr[i][j+1]=arr[i][j];
arr[i][j]=t;
step++;
print();
break;
default:
print();
}
}
}
voidmain()
{
intn;
print();
while(arr[6][1]!
=2||arr[5][1]!
=2||arr[6][6]!
=2)
{
leap:
cin>>n;
switch(n)
{
case8:
move_up();
break;
case5:
move_down();
break;
case4:
move_left();
break;
case6:
move_right();
break;
default:
gotoleap;
}
}
cout<"<"<}
五、运行结果
1、猜数字
运行结果:
2、推箱子游戏
运行结果:
六、实验心得
这次课程设计题目有实用性强的“学生信息管理系统”,还有趣味性强的“推箱子”和“猜数字”小游戏,也有挑战自我的“大数相乘”。
通过“猜数字”和“推箱子”小游戏程序的设计和编写,我感觉在编写调试运行程序的过程中,我正在一点点的享受这个过程,而不是把它当做枯燥无味的作业来应付。
虽然这个过程也许并不是很顺利,有时候会很纠结,甚至在编写“推箱子”代码的过程中我还面临把即将完成的代码推到重写的情况,在这种情况下,我学会了如何说服自己心平气和的坐下来重新整理思路,重新一行行的把新的代码写好并调试运行成功。
我想这就是我们能从一遍遍的程序编写中学到的相比知识更重要的东西,这也算是一种经验,也是一种态度吧。
虽然以现在的水平还不能做的尽善尽美,但是只要是自己一点点想出来做出来的东西,就是一点点经验的积累,也是值得肯定的。