#include<iostream> #include"初始化蛇.h" #include"打印.h" #include"判断方向.h" #include"去位置(x,y).h" #include"蛇的移动.h" #include<Windows.h> #include"隐藏光标.h" using namespace std; void main() { const int Length = 20;//场景的高度 const int Width = 30;//场景的宽度 int moveDirection; int canvas[Length][Width];//以数组的形式形成场景 //初始化数组(订造场景) for (int i = 0; i < Length; i++) { for (int j = 0; j < Width; j++) { canvas[i][j] = 0; } } for (int i = 0, j = 0; j < Width; j++)//定制左右边框 { canvas[i][j] = -1; canvas[Length - 1][j] = -1; } for (int i = 0, j = 0; j < Length; j++) { canvas[j][i] = -1; canvas[j][Width - 1] = -1; } inisnake(canvas, Length, Width); inimove(moveDirection); inifood(canvas, Length, Width); while (1) { gotoxy(0, 0); HideCursor(); updateWithInput(canvas, Length, Width); print(canvas, Length, Width); } }在这段代码中价个函数,使其可以不输入按原方向移动
时间: 2024-04-21 18:26:18 浏览: 80
可以在蛇的移动函数中加入一个参数,用来表示蛇的上一次移动方向,如果没有新的方向输入,则继续按照上一次移动的方向进行移动。以下是修改后的蛇的移动函数示例代码:
void movesnake(int canvas[][Width], int Length, int Width, int &moveDirection, int lastDirection)
{
int dx = 0, dy = 0;
switch (moveDirection)
{
case 1:
dx = -1;
break;
case 2:
dy = -1;
break;
case 3:
dx = 1;
break;
case 4:
dy = 1;
break;
default:
switch (lastDirection) // 没有新的方向输入,继续按照上一次移动的方向进行移动
{
case 1:
dx = -1;
break;
case 2:
dy = -1;
break;
case 3:
dx = 1;
break;
case 4:
dy = 1;
break;
}
}
// 其他部分不变,根据 dx, dy 进行移动
}
阅读全文