| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:新手开发命令行界面的吃豆子遇见了一个问题,求助!
只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:6 
新手开发命令行界面的吃豆子遇见了一个问题,求助!
我是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');
    }
}

搜索更多相关主题的帖子: 源代码 C语言 
2011-05-17 22:23
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
片片在这里:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

o(∩∩)Linux & Python 群:187367181
2011-05-17 22:24
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
木有人管吖~~~~

o(∩∩)Linux & Python 群:187367181
2011-05-17 22:38
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 

哎呀~~大大们都不愿意给力啊!

o(∩∩)Linux & Python 群:187367181
2011-05-17 23:20
lccwyj
Rank: 4
等 级:业余侠客
帖 子:71
专家分:203
注 册:2011-5-6
收藏
得分:10 
int i,j;
for(i=0,j=0;j<40;j++)
printf("*");
printf("\n");
for(j=0,i=0;i<20;i++)
{printf("*");
for(j=2;j<40;j++)
{if(j==20&&i==10)
printf("o");
else printf(" ");}
printf("*\n");}
for(j=0;j<40;j++)
printf("*");
2011-05-18 06:52
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
看不太懂
2011-05-18 09:22
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:10 
g[_WIDE/2][_HEIGHT/2] = 1;
这块有问题!

当_WIDE = 40的时候,此时_WIDE / 2 = 20,而g[20][_HEIGHT/2]是不可用的!

愿用余生致力编程
2011-05-18 18:47
快速回复:新手开发命令行界面的吃豆子遇见了一个问题,求助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019100 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved