#include#include #include #define High 20 //游戏画面尺寸#define Width 30//全局变量tint canvas[High][Width] = { 0};int moveDirection;void gotoxy(int x, int y){ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle,pos);}void moveSneakeByDirection(){ int i,j; for(i = 1; i < High-1; i++) for(j = 1; j < Width-1; j++) if(canvas[i][j] > 0) canvas[i][j]++; int oldTail_i, oldTail_j, oldHead_i, oldHead_j; int max = 0; for(i = 1; i < High-1; i++) for(j = 1; j < Width-1; j++) if(canvas[i][j] > 0) { if(max < canvas[i][j]) { max = canvas[i][j]; oldTail_i = i; oldTail_j = j; } if(canvas[i][j] == 2) { oldHead_i = i; oldHead_j = j; } } canvas[oldTail_i][oldTail_j] = 0; if(moveDirection == 1) canvas[oldHead_i-1][oldHead_j] = 1; if(moveDirection == 2) canvas[oldHead_i+1][oldHead_j] = 1; if(moveDirection == 3) canvas[oldHead_i][oldHead_j-1] = 1; if(moveDirection == 4) canvas[oldHead_i][oldHead_j+1] = 1;}void startup() //数据初始化{ int i,j; //初始化边框 for(i = 0; i < High; i++) { canvas[i][0] = -1; canvas[i][Width-1] = -1; } for(j = 0; j < Width; j++) { canvas[0][j] = -1; canvas[High-1][j] = -1; } //初始化蛇头的位置 canvas[High/2][Width/2] = 1; //初始化蛇身,画布中的元素值分别为2,3,4,5等 for(i = 1; i <= 4; i++) canvas[High/2][Width/2-i] = i+1; moveDirection = 4;}void show() //显示画面{ gotoxy(0,0); int i,j; for(i = 0; i < High; i++) { for(j = 0; j < Width; j++) { if(canvas[i][j] == 0) printf(" "); else if(canvas[i][j] == -1) printf("#"); else if(canvas[i][j] == 1) printf("@"); //蛇头 else if(canvas[i][j] > 1) printf("*"); //蛇身 } printf("\n"); }}void updateWithoutInput() //与用户输入无关的更新{}void updateWithInput() //与用户输入有关的更新{}int main(){ startup(); while(1) { show(); updateWithoutInput(); updateWithInput(); } return 0;}