为什么一个方向只能动一下,不能一直动,而且再向其他方向动还是从原点出发的,还不会刷新?
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#define W 20
#define H 20
int a[H][W];
int i,j;
enum
{
up='2',
down='8',
left='4',
right='6',
};
struct jia
{
int x;
int y;
};
struct FOOD
{
int x;
int y;
};
struct jia zhang={3,3};
struct FOOD food={10,10};
// a[food.x][food.y]=2;
// a[zhang.x][zhang.y]=3;
void map();
int start();
void draw();
int move();
void clear();
int main()
{
map();
start();
draw();
while(1)
{
move();
//printf("\33[2j");
clear();
draw();
}
}
//清屏
void clear()
{
printf("\e[1;1H\e[2J");
}
//初始化背景地图
void map()
{
//struct jia zhang={3,3};
for(i=0;i<H;i++)
{
for(j=0;j<W;j++)
{
if(i==0||j==0||i==H-1||j==W-1)
{
a[i][j]=1;
}
else
{
a[i][j]=0;
}
}
}
//printf("\n");
//a[10][10]=2;
//a[zang.x][zang.y]=3;
}
//初始化位置
int start()
{
//struct jia zhang={3,3};
// struct FOOD food={10,10};
a[food.x][food.y]=2;
a[zhang.x][zhang.y]=3;
}
//画背景地图
void draw()
{
//map();
//start();
for(i=0;i<H;i++)
{
//a[10][10]=2;
for(j=0;j<W;j++)
{
switch(a[i][j])
{
case 0:
printf("\33[47;37m ");
break;
case 1:
printf("\33[41;33m \33[40;37m");
break;
case 2:
printf("♥");
break;
case 3:
printf("💏");
}
// printf("\n");
}
printf("\n");
}
}
//移动
int move()
{
int k=getch();
switch(k)
{
case up:
a[zhang.x][zhang.y]=0;
a[zhang.x-1][zhang.y]=3;
break;
case down:
a[zhang.x][zhang.y]=0;
a[zhang.x+1][zhang.y]=3;
break;
case left:
a[zhang.x][zhang.y]=0;
a[zhang.x][zhang.y-1]=3;
break;
case right:
a[zhang.x][zhang.y]=0;
a[zhang.x][zhang.y+1]=3;
break;
}
}