java-生命的游戏neighborCount(int row, int col)问题

问题描述

生命的游戏neighborCount(int row, int col)问题

求大神告知neighborCount还有哪里不对呢?
public class GameOfLife {
private String[][] Society;
private int Rows;
private int Columns;

public GameOfLife(int rows, int cols) {
    Society = new String[rows][cols];
    Rows = Society.length;
    Columns = Society[0].length;

}

public int numberOfRows() {
        return Rows;
}

public int numberOfColumns() {
        return Columns;
}

public void growCellAt(int row, int col) {
    Society[row][col] = "O";
}

public boolean cellAt(int row, int col) {
    if(Society[row][col] != null){
         return true;
     }else{
         return false;
     }
}

public String toString() {
    String text = "";
    for(int i = 0; i < Society.length; i++ ){
        for(int j = 0; j < Society[0].length; j++ ){
            if(Society[i][j] == null)
                Society[i][j] = ".";
            System.out.print(Society[i][j]);
        }
        System.out.println();
    }
    return text;
}

public int neighborCount(int row, int col) {
    int count = 0;

            // up and left
            if (Society[(row - 1 + Society.length) % Society.length][(col - 1 + Society[0].length) % Society[0].length] == "O") {
                count++;
            }
            // up
            if (Society[(row - 1 + Society.length) % Society.length][col] == "O") {
                count++;
            }
            // up and right
            if (Society[(row - 1 + Society.length) % Society.length][(col + 1 + Society[0].length) % Society[0].length] == "O") {
                count++;
            }
            // right
            if (Society[row][(col + 1 + Society[0].length) % Society[0].length] == "O") {
                count++;
            }
            // left
            if (Society[row][(col - 1 + Society[0].length) % Society[0].length] == "O") {
                count++;
            }
            // down and right
            if (Society[(row + 1 + Society.length) % Society.length][(col + 1 + Society[0].length) % Society[0].length] == "O") {
                count++;
            }
            // down
            if (Society[(row + 1 + Society.length) % Society.length][col] == "O"){
                count++;
            }
            // down and left
            if (Society[(row + 1 + Society.length) % Society.length][(col - 1 + Society[0].length) % Society[0].length] == "O") {
                count++;

    }
    return count;

}

public void update() {
    for (int i = 0; i < Society.length - 1; i++) {
        for (int j = 0; j < Society[i].length - 1; j++) {
            if(neighborCount(i,j) ==3){
                Society[i][j] = "O";
            }
            if(neighborCount(i,j) ==2){
                Society[i][j] = Society[i][j];
            }
            if(neighborCount(i,j) >3 || neighborCount(i,j) <2){
                Society[i][j] = ".";
            }
        }
    }

}

}

时间: 2024-09-23 12:50:08

java-生命的游戏neighborCount(int row, int col)问题的相关文章

跟我学Java Swing之游戏设计(2)_Java编程

文章来源:电脑爱好者 作者:张剑 还记得<偷天换日>中精灵般穿梭在好莱坞车流中的Minicooper吗?马克·沃尔伯格和莎莉·赛隆就是驾驶着它在仇人的鼻子底下运走了价值千万的黄金.可是,如果现在将一辆无法奔驰的Minicooper躯壳放在你的面前,你会如何看待它?它还是那个游走自如的精灵吗?今天,就让我们一点一点地为这辆Minicooper组装上零件,让它跑起来. 前言 从本期开始,我们为大家提供完整的游戏源代码(点击下载).Java咖啡馆倡导大家理论与实践并重,我们在连载中将给大家介绍关键技

java io-java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别

问题描述 java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别 InputStream in = new FileInputStream(sourcePath); byte[] b = new byte[1024]; while (in.read(b,0,1023)!=-1) { System.out.println(new String(b)); }; 和 while (in.read(b)!=-1) { System.out.pri

Java中String类型能转成int类型吗

问题描述 Java中String类型能转成int类型吗 一个String字符串 能否像 char类型一样 转换成int值 如果可以Java中怎么写 解决方案 看你用什么预言,各种预言都有转换函数,只要符合数值型,就可以正常转换 解决方案二: double?d?=?1.233; String?s1?=?String.valueOf(d); String?s2?=?s1.substring(0,?s1.indexOf("."))?+?s1.substring(s1.indexOf(&quo

JAVA实现拼图游戏

效果图如下: 源码如下:   package org.test;/*** <p>Title: LoonFramework</p>* <p>Description:拼图图像处理[未优化]</p>* <p>Copyright: Copyright (c) 2007</p>* <p>Company: LoonFramework</p>* @author chenpeng * @email:ceponline@yaho

JAVA猜数游戏程序小研究

最简单且有BUG的一段 package com.zzk.cn; import java.util.*; public class GuestNum { public static void main(String[] ags) { int i; int num = (int) (Math.random() * 100); int b; String answer; Scanner input = new Scanner(System.in); System.out.println("请猜 0~1

Java俄罗斯方块小游戏_java

去年就已经学了这个技术了,一直没去写,现在抽个时间写了个俄罗斯方块游戏. 只有简单的新游戏,暂停,继续,积分功能.简单的实现了俄罗斯的经典功能. 不介绍了,有兴趣的自己运行一下,后面贴出了图片. 代码: package cn.hncu; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.Act

浅谈Java生命周期管理机制_java

先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然只写以下几行代码,于是我感觉瞬间受到了很多伤害. public static void main(String[] args) { System.out.println(new Date() + ",server shutdown!"); } 这个中间件启动和运行的时候,开启了监听,启动着

Java太阳系小游戏分析和源码详解_java

最近看了面向对象的一些知识,然后跟着老师的讲解做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下最近学的知识: 用到知识点:类的继承.方法的重载与重写.多态.封装等 分析: 1.需要加载图片.画图 2.建一个面板,主页面 3.行星类 效果图: 先看一下源码结构图: 现在逐步分析各个类的功能: 1)工具类-----util包中     --Constant类   封装了游戏中用到的常量     --GameUtil类  封装了游戏的图片加载功能     --MyFrame类  封装了游戏面板的构

public int getKeyCode(int gameAction) 与 public int getGameAction(int keyCode)的区别

区别 一个MIDlet应用程序通过调用Canvas方法来探测哪些键盘代码映射到运行的应用程序中的抽象游戏动作:public static int getGameAction(int keyCode); Canvas类定义抽象游戏动作集:UP.DOWN.LEFT.RIGHT.FIRE等等. 游戏开发者应该知道MIDP 1.0规范中的一个问题.这个类定义了转化键盘代码到游戏动作的方法,同样也定义了转化游戏动作到键盘代码的方法.public int getGameAction(int keyCode)