| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:C语言--生命细胞游戏 小弟第二次编程,希望大神帮忙指点
取消只看楼主 加入收藏
hugonnyy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
C语言--生命细胞游戏 小弟第二次编程,希望大神帮忙指点
C语言--生命细胞游戏  小弟第二次编程。找了很久,都没有找出问题,不管我输入什么数字,输出的结果都还是@,希望大神帮忙指点


/*
   File name :Life Game.C
   Description:Game of life implementation
   生命细胞游戏

*/

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

#define MAXROW 10
#define MAXCOL 25
#define alive 1
#define dead 0

int map[MAXROW][MAXCOL],newmap[MAXROW][MAXCOL];
int Generation=0;

void init();
int Neighbour(int,int);
void output_map();
void copymap();

void main()
{
    int row,col;
    char ans;
    init();
    output_map();
    do
    {
        for(row=0;row<MAXROW;row++)
            for(col=0;col<MAXCOL;col++)
                switch (Neighbour(row,col))
            {
                case 0:
                case 1:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:newmap[row][col]=dead;
                    break;
                case 2:newmap[row][col]=map[row][col];
                    break;
                case 3:newmap[row][col]=alive;
                    break;
            }
            copymap();
            
            do
            {
                printf("\n Continue Next Generation?");
                ans=toupper(getche());
                if(ans=='Y'||ans=='N')
                    break;
            }while(1);
                 
                if(ans=='Y') output_map();
    }while(ans=='Y');
}

void init()
{
    int row,col;
    for(row=0;row<MAXROW;row++)
        for(col=0;col<MAXCOL;col++)
            map[row][col]=dead;
    printf("初始化成功\n");
    printf("Game Of Life Program \n");
    printf("Enter (x,y) where (x,y) is a living cell\n");
    printf("0<=x<%d,0<=y<%d\n",MAXROW,MAXCOL);
    printf("Terminate with (x,y) =(-1,-1)\n");
    do
    {
        scanf("%d%d",&row,&col);
        if(row<0||row>=MAXROW||col<0||col>=MAXCOL)
            printf("(x,y) exceeds map ranage!\n");
        else
            map[row][col]=alive;
    }while(row!=-1||col!=-1);
}

int Neighbour(int row,int col)
{
    int i,j,count=0;
    for(i=row-1;i<=row+1;i++)
        for(j=col-1;j<col+1;j++)
        {
            if(i<0||i>=MAXROW||j<0||j>=MAXROW)
                continue;
            if(map[i][j]==alive)
                count++;
        }
        if(map[row][col]==alive)
            count--;
        return count;
}

void output_map()
{
    int row,col;
    printf("\n\n%24c Game of Life cell status\n",' ');
    printf("%24Cc--------Generation %d----------\n",++Generation);
    for(row=0;row<MAXROW;row++)
    {
        printf("\n%20c",' ');
        for(col=0;col<MAXCOL;col++)
        {
            if(map[row][col]=dead)
                printf("%2c",'-');
            else
                printf("%2c",'@');
        }
    }
}

void copymap()
{
    int row,col;

    for(row=0;row<MAXROW;row++)
        for(col=0;col<MAXCOL;col++)
            map[row][col]=newmap[row][col];
}

      


搜索更多相关主题的帖子: void 游戏 include C语言 
2012-12-05 22:10
hugonnyy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-4
收藏
得分:0 
   请问怎么个不对???可以说的详细一点吗 ?????
    就是个简单的数学小游戏:如果在格子周围有2个活细胞存在,那么这个格子的状态就不变,如果有3个活细胞存在,则这个格子一定会变成活细胞,如周围有0,1,4,5,6,7,8个活细胞,这个格子就会因为拥挤而死亡。。。
2012-12-05 23:43
hugonnyy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-4
收藏
得分:0 
哦,对哦,自己傻了....这么低级的错误
2012-12-06 12:10
快速回复:C语言--生命细胞游戏 小弟第二次编程,希望大神帮忙指点
数据加载中...
 
   



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

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