该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#include
#include
using namespace std;
#define HEAD 'H'
#define BODY 'X'
#define WALL '*'
#define money 'S'
#define N 50
#define n 20
void output();
void snakemove(int a,int b);
void putmoney();
#define MAX 20
int snakex[MAX] = {1,1,1,1,1};
int snakey[MAX] = {1,2,3,4,5};
char snakemap[n][N] =
{"********************************************",
"*XXXXH *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"********************************************"
};
int length = 5;
int alive = 1;
char direction = 'D';
int main()
{
char ch;
system("color 00");
system("color A4");
putmoney();
output();
while(alive)
{
if(kbhit())
{
ch = getch();
switch(ch)
{
case 'A':
case 'a':if(direction == 'd')break;direction = tolower(ch);snakemove(0,-1);break;
case 'D':
case 'd':if(direction == 'a')break;direction = tolower(ch);snakemove(0,1);break;
case 'S':
case 's':if(direction == 'w')break;direction = tolower(ch);snakemove(1,0);break;
case 'W':
case 'w':if(direction == 's')break;direction = tolower(ch);snakemove(-1,0);break;
}
Sleep(50);
output();
}
else
{
switch(direction)
{
case 'a':snakemove(0,-1);break;
case 'd':snakemove(0,1);break;
case 's':snakemove(1,0);break;
case 'w':snakemove(-1,0);break;
}Sleep(50);
output();
}
}
system("cls");
cout<
return 0;
}
void snakemove(int a,int b)
{
int x,y;
x = snakex[length-1] + a;
y = snakey[length-1] + b;
if(snakemap[x][y] == HEAD || snakemap[x][y] == BODY || snakemap[x][y] == WALL)
alive = 0;
else if(snakemap[x][y] == money && length < 20)
{
length++;
putmoney();
snakex[length-1] = x;
snakey[length-1] = y;
snakemap[snakex[length-1]][snakey[length-1]] = HEAD;
snakemap[snakex[length-2]][snakey[length-2]] = BODY;
}
else
{
int i;
int x1,y1;
x1 = snakex[0];
y1 = snakey[0];
for(i = 0;i
{
snakex[i] = snakex[i+1];
snakey[i] = snakey[i+1];
}
snakemap[x1][y1] = ' ';
snakex[length-1] = x;
snakey[length-1] = y;
snakemap[snakex[length-1]][snakey[length-1]] = HEAD;
snakemap[snakex[length-2]][snakey[length-2]] = BODY;
}
}
void output()
{
system("cls");
int i,j;
cout<
for(i = 0;i
{
for(j = 0;j
cout<
cout<
}system("color 00");
system("color A4");
}
void putmoney()
{
srand(time(0));
int x = 0,y = 0;
do
{
x = rand() % 15 + 1;
y = rand() % 40 + 1;
}while(snakemap[x][y] == WALL && snakemap[x][y] == BODY && snakemap[x][y] ==HEAD);
snakemap[x][y] = money;
}
代码如上,怎么样才能实现不闪屏,听说要用什么双缓冲技术,求会的大神帮我修改下代码让它不闪屏!!!小弟感激不尽!!!!!