新手开发命令行界面的吃豆子遇见了一个问题,求助!
我是C语言新手,然后尝试着开发命令行界面的吃豆子。遇见了一个问题:问题描述:
当宏定义中的_WIDE与_HEIGHT相等的时候,一切正常,可是把_WIDE改成40之后,屏幕中间的‘o’居然不见了……
源代码:=
=============================================================
程序代码:
#include <stdio.h> #include <stdlib.h> #define _WIDE 40 #define _HEIGHT 20 //初始化环境。把周围铺满x void init_env(int (*g)[_WIDE]/*, int x, int y*/); //输出环境。&a代表数组,a和b代表吃豆子动物的坐标 void show_env(int (*g)[_WIDE]/*, int a, int b*/); //void operat(int (*g)[_WIDE], int x, int y); int main() { //int wide = _WIDE, height = _HEIGHT; //动物的坐标(_x, _y) //int _x = _WIDE/2, _y = _HEIGHT; /*envir代表环境,元素的值可以为-1、0、1,分别代表: -1:边界,0:空白,1,吃豆子的动物*/ int envir[_HEIGHT][_WIDE]; init_env(envir); /*while (1) { operat(envir, _x, _y); system("cls"); show_env(envir); }*/ show_env(envir); return 0; } void init_env(int (*g)[_WIDE]/*, int x, int y*/) { int temp_x = 0; int temp_y = 0; //把周围铺满瓷砖 for (temp_x = 0; temp_x < _WIDE; temp_x++) { g[0][temp_x] = -1; g[_HEIGHT - 1][temp_x] = -1; } for (temp_y = 0; temp_y < _HEIGHT; temp_y++) { g[temp_y][0] = -1; g[temp_y][_WIDE - 1] = -1; } //再把瓷砖内铺满0 for (temp_x = 1; temp_x < _WIDE - 1; temp_x++) { for (temp_y = 1; temp_y < _HEIGHT - 1; temp_y++) { g[temp_y][temp_x] = 0; } } //最后初始化动物的位置 g[_WIDE/2][_HEIGHT/2] = 1; } void show_env(int (*g)[_WIDE]) { int temp_x; int temp_y; for (temp_y = 0; temp_y < _HEIGHT; temp_y++) { for (temp_x = 0; temp_x < _WIDE; temp_x++) { switch (g[temp_y][temp_x]) { case -1: putchar('x'); break; case 1: putchar('o'); break; case 0: putchar(' '); break; default : printf("!!!!!!!!!ERROR!!!!!!"); exit(0); break; } } putchar('\n'); } }