首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >康威的“生命游戏”--应用生命规则发布Android

康威的“生命游戏”--应用生命规则发布Android
EN

Stack Overflow用户
提问于 2015-04-26 18:25:54
回答 1查看 39关注 0票数 2

我正在尝试为我正在学习的编程类创建Conway的android生命游戏。我可以得到一个初步的模式,在董事会上没有问题。当我想要创造下一代时,我遇到了一些问题。

这是我创建下一代的方法。

代码语言:javascript
复制
public void createNextGen(){
    int neighbors;
    int[][] nextGen = new int[HEIGHT][WIDTH];

    for(int h = 0; h < HEIGHT; h++){
        for(int w = 0; w < WIDTH; w++){
            neighbors = calcNeighbors(h, w);
                if(currentLife[h][w] == 1){
                    if(neighbors < 2){
                        nextGen[h][w] = 0;
                    } else if (neighbors > 3){
                        nextGen[h][w] = 0;
                    } else {
                        nextGen[h][w] = 1;
                    }
                } else if (currentLife[h][w] == 0){
                    if(neighbors == 3){
                        nextGen[h][w] = 1;
                    } else {
                        nextGen[h][w] = 0;
                    }
                }
        }
    }

    copyGrid(nextGen, currentLife);
}

这是我计算邻居的方法。

代码语言:javascript
复制
private int calcNeighbors(int x, int y){
    int total = 0;

    for (int h = -1; h <= +1; h++) {
        for (int w = -1; w <= +1; w++) {
            if (currentLife[(HEIGHT + (y + h)) % HEIGHT][(WIDTH + (x + w)) % WIDTH] != 0) {
                total++;
            }
        }
    }
    return total;
}

这是从网格开始的初始模式。

代码语言:javascript
复制
public void initGrid() {
    resetGrid(currentLife);

    currentLife[8][(WIDTH / 2) - 1] = 1;
    currentLife[8][(WIDTH / 2) + 1] = 1;
    currentLife[9][(WIDTH / 2) - 1] = 1;
    currentLife[9][(WIDTH / 2) + 1] = 1;
    currentLife[10][(WIDTH / 2) - 1] = 1;
    currentLife[10][(WIDTH / 2)] = 1;
    currentLife[10][(WIDTH / 2) + 1] = 1;

}

我认为问题不在于我的onDraw方法,因为这个初始模式如预期的那样显示出来。接下来的几代人都在跳来跳去,我想我在createNextGeneration方法中一定做错了什么。

我使用整数1表示活单元格,使用整数0表示死单元格。

任何帮助或指导都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-26 18:33:44

只是参数顺序上的一个简单错误--您正在将yx发送到calcNeighbors方法,该方法期望xy

代码语言:javascript
复制
calcNeighbors(h, w);
...

private int calcNeighbors(int x, int y)
...

我建议你将方法改为:

代码语言:javascript
复制
private int calcNeighbors(int y, int x)

因为您在其余代码中使用h,w (y,x)顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29881687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档