好吧,我发誓这段代码应该可以工作,但显然不行。我正在尝试用 C 创建一个贪吃蛇游戏,但是我的舞台无法正确显示。我正在尝试使舞台内部没有角色显示,而仅在周边显示,有人可以帮助我吗?
#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;
}
最佳答案
首先避免在 #define 之后使用分号,当您尝试将常量 TRUE 传递给函数时,您将收到编译错误。
为了获得正确的显示,您应该从 Display 函数的第一个和最后一个 for 循环的 printf 中删除“\n”。并在 for 循环之后添加 printf("\n") 。应该是:
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("#");
}
如果您想在位置(x,y)显示字符“*”,您只需更改:
printf(" ");
作者:
if (y == i && x == j)
printf("*");
else
printf(" ");
关于c - C 中的方形问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34968259/