C语言简易黑窗口推箱子
用随机数组的方法不知道为什么还没执行箱子移动就刷新了,而且随机法产生的空格太少,所以放弃了
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
//void shuzu(){
// int i,j;
// for(i=0;i<10;i++){//采用随机数生成图案
// for(j=0;j<10;j++){
// map[i][j]=rand()%5;//随机生成1-4之间的数
// }
// }
// for(i=0;i<10;i++){//设置边上围墙
// map[0][i]=1;
// map[i][0]=1;
// map[9][i]=1;
// map[i][9]=1;
// }
// map[rand()%9+1][rand()%9+1]=5;
//}
int map[10][10]={//全局数组map
//0:空的,1: ■ 2 □3:★4: ☆
1,1,1,1,1,1,1,1,1,1,
1,0,0,1,1,0,0,0,0,1,
1,0,1,0,0,1,0,0,0,1,
1,0,1,4,4,0,0,0,4,1,
1,3,0,1,1,0,5,0,1,1,
1,0,0,1,1,0,0,0,0,1,
1,2,2,0,0,2,2,0,0,1,
1,0,0,1,1,0,0,0,0,1,
1,0,1,0,0,1,0,0,0,1,
1,1,1,1,1,1,1,1,1,1
};
int main(){
int i,j;
srand(time(0));
printf("welcome to play shifting box\n");
printf("w:up s:down a:left d:right\n");
printf("now input any number can start this game\n");
while(1){
//shuzu();
for(i=0;i<10;i++){
for(j=0;j<10;j++){
switch(map[i][j]){
case 0:
printf(" ");
break;
case 1:
printf("■");
break;
case 2:
printf("★");
break;
case 3:
printf("☆");
break;
case 4:
printf("□");
break;
case 5://该符号表示玩家
printf("※");
break;
default:
break;
}
}
printf("\n");
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(map[i][j]==5)
break;
}
if(map[i][j]==5)//break一次只跳出一层循环,故需要使用两次
break;
}
char ch=_getch();
switch(ch){
case 'w':
case 'W':
if(map[i-1][j]==0)//判断上面是不是空地能不能走
{
map[i-1][j]=5;
map[i][j]=0;
}
break;
case 's':
case 'S':
if(map[i+1][j]==0)//判断下面是不是空地能不能走
{
map[i+1][j]=5;
map[i][j]=0;
}
break;
case 'A':
case 'a':
if(map[i][j-1]==0)//判断左边是不是空地能不能走
{
map[i][j-1]=5;
map[i][j]=0;
}
break;
case 'd':
case 'D':
if(map[i][j+1]==0){
map[i][j+1]=5;
map[i][j]=0;
}
break;
default:
printf("input error instruction\n");
break;
}
//system("cls");//清屏
}
system("pause");
return 0;
}