c - C 中的方形问题

标签 c windows

好吧,我发誓这段代码应该可以工作,但显然不行。我正在尝试用 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/

相关文章:

c++ - Windows API 中的 InvalidateRect,Charles Petzold checker4.c 程序

c++ - 假定 Windows 伪句柄的值是否安全/已定义?

c++ - 如何找到跳转列表窗口?

C - int 数组到 char* 的转换

c - 为什么 printf ("%s",(char[]) {'H' ,'i' ,'\0' }) 像 printf ("%s","Hi") 一样工作,但是 5 printfx,0x104 09104091004070709104091004070910409104091040910409104失败?

c - 涉及 char 数组的 C 语句的含义

c - 在 C 中使用简单的 Cesar 密码

windows - 如何在 Cygwin 上安装 CMake?

windows - 获取基于GPS的定位功能。 WinMobile 6.5 平台

c - 这个函数指针在这里发生了什么