好的,所以我发誓这段代码应该可行,但显然它没有。我试图在C中创建一个Snake游戏,但是我的舞台没有正确显示。我试图这样做,所以舞台里面没有人物显示,但只有周边,有人可以帮我吗?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* boolean functions */
#define TRUE 1;
#define FALSE 0;
/* board */
const int length = 20;
const int height = 20;
/* Global Variables */
int x, y, foodX, foodY;
int gameEnd;
int score;
/* movement */
typedef enum {STOP = 0, UP, DOWN, LEFT, RIGHT} movement;
movement move;
/* Game Setup */
void Game()
{
gameEnd = FALSE;
move = STOP;
y = height / 2;
x = length / 2;
foodX = rand() % length;
foodY = rand() % height;
score = 0;
}
/* What is displayed on screen */
void Display()
{
system("cls");
int i;
for( i = 0; i < length + 2; i++)
printf("#\n");
for( i = 0; i < height; i++)
{
int j;
for(j = 0; j < length; j++)
{
if( j == 0 )
printf("#");
printf(" ");
if( j == length - 1)
printf("#\n");
}
}
for( i = 0; i < length + 2; i++)
printf("#\n");
}
void Input()
{
}
void Logic()
{
}
int main(void)
{
Game();
while (!gameEnd)
{
Display();
Input();
Logic();
Sleep(10);
}
return 0;
}
答案 0 :(得分:0)
首先避免在#define之后生成分号,当您尝试将常量TRUE传递给函数时,会出现编译错误。
要正确显示,您应该删除&#34; \ n&#34;来自printf的第一个和最后一个用于函数Display的循环。并在for循环之后添加printf(&#34; \ n&#34;)。它应该是:
void Display()
{
int i;
int j;
system("cls");
for( i = 0; i < length + 2; i++)
printf("#");
printf("\n");
for( i = 0; i < height; i++)
{
for(j = 0; j < length; j++)
{
if( j == 0 )
printf("#");
printf(" ");
if( j == length - 1)
printf("#\n");
}
}
for( i = 0; i < length + 2; i++)
printf("#");
}
如果你想要显示一个角色&#34; *&#34;在位置(x,y),你只需要改变:
printf(" ");
由:
if (y == i && x == j)
printf("*");
else
printf(" ");