#include<stdio.h>
#include<conio.h>
#include<windows.h>
int row=20;//宽
int line=20;//高
char a[40][40];
void xiaoren()
{
for(row=0;row<20;row++)
{
for(line=0;line<20;line++)
{
printf(" ");
}
}
a[20][20]='o';
printf("%c",a[row][line]);
}
void yidong()
{
xiaoren();
int z;
for(z=0;z<20;z++)
{
z=_getch();
}
while(1)
{
switch(z)
{
case 'w' :
a[row][line]=' ';
row=row-1;
a[row][line]='o';
break;
case 'a' :
a[row][line]=' ';
line=line-1;
a[row][line]='o';
break;
case 's' :
a[row][line]=' ';
row=row+1;
a[row][line]='o';
break;
case 'd':
a[row][line]=' ';
line=line+1;
a[row][line]='o';
break;
}
}
}
int main()
{
yidong();
}
他不会动~还有没有什么其他更好的办法去控制
下面是修改后的代码
#include<stdio.h>
#include<conio.h>
#include<windows.h>
int row=20;//宽
int line=20;//高
char a[40][40];
void xiaoren()
{
for(int i=0;i<40;i++){
for(int j=0;j<40;j++){
printf("%c",a[i][j]);
}
printf("\n");
}
}
void yidong()
{
xiaoren();
char z;
while(1)
{
z=getch();
printf("%c",z);
switch(z)
{
case 'w' :
if(row != 0){
a[row][line]=' ';
row=row-1;
a[row][line]='o';
}
break;
case 'a' :
if(line != 0){
a[row][line]=' ';
line=line-1;
a[row][line]='o';
}
break;
case 's' :
if(row != 39){
a[row][line]=' ';
row=row+1;
a[row][line]='o';
}
break;
case 'd':
if(line != 39){
a[row][line]=' ';
line=line+1;
a[row][line]='o';
}
break;
case 'q':
return;
default:
break;
}
system("cls");
xiaoren();
}
}
int main()
{
for(int i=0;i<40;i++){
for(int j=0;j<40;j++){
a[i][j] = ' ';
}
}
a[row][line] = 'o';
yidong();
}
你应该把while循环里面的switch语句,放进24行的那个for语句里面呀,不然while一直在循环,但是z始终不变(因为z只在for循环被改变)