检查二维数组中某个索引周围索引的最佳方法

发布于 2024-10-10 23:16:53 字数 432 浏览 3 评论 0原文

我正在研究我必须制作的细菌生命游戏。

基本上我有一个 2d 字符串数组,比如说 20 x 20。

检查某个索引周围的所有 8 个点的最佳方法是什么。每个索引都应该代表一种细菌。对于每个细菌(索引),我必须检查该索引周围的 8 个点中是否有另一个细菌,如果索引中有细菌,则仅用“*”星号表示。

检查每个索引周围的所有 8 个点的最佳方法是什么,因为根据某个索引周围的索引中的内容,我必须做出某些更改等。

我想到的唯一想法是有一堆if 语句检查所有 8 个位置,我想知道是否有更好的方法来执行此

操作,例如: 第 1 行 - www ,第 2 行 = wOw ,第 3 行 - www ,

如果我位于 O 索引,那么检查某个字符串周围的所有索引点的最佳方法是什么。

抱歉,我不太擅长解释我的问题,英语不好:o。

感谢您的帮助。

I'm working on this bacteria life game thing I have to make.

Basically I have a 2d string array let's say 20 by 20.

What would be the best way to check all 8 spots around a certain index. Each index is suppose to represent a bacteria. For each bacteria(index) I have to check to see if any of the 8 spots around this index has another bacteria in it, if the index has a bacteria in it, it's represented simply by a "*", asterik.

What would be the best way to go about checking all 8 spots around each index, because based on what is in the indices around a certain index I have to make certain changes etc.

The only idea I have come up with is having a bunch of if statements to check all 8 spots, I was wondering if there is a better way to do this

ex:
row 1 - www , row 2 = wOw , row 3 - www ,

if I am at the O index, what would be the best way to check all the index spots around it for a certain string.

Sorry, I am not very good at explaining my problems, bad english :o.

thanks for any of the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼波传意 2024-10-17 23:16:53

所以你有这样的东西

char[][] table = new char[20][20]

for(int i = 0; i < 20; i++) {
    for(int j = 0; j < 20; j++) {
        int surroundingBacteria = 0;
        for(int x = max(i-1,0); x < min(20,i+1); x++) {
            for(int y = max(i-1,0); y < min(20,i+1); y++) {
                if(table[x][y] == '*') surroundingBacteria++;
            }
        }
        switch(surroundingBacteria) {
            // put your case logic here
        }
    }
}

so you have something like this

char[][] table = new char[20][20]

for(int i = 0; i < 20; i++) {
    for(int j = 0; j < 20; j++) {
        int surroundingBacteria = 0;
        for(int x = max(i-1,0); x < min(20,i+1); x++) {
            for(int y = max(i-1,0); y < min(20,i+1); y++) {
                if(table[x][y] == '*') surroundingBacteria++;
            }
        }
        switch(surroundingBacteria) {
            // put your case logic here
        }
    }
}
快乐很简单 2024-10-17 23:16:53

以下是我过去完成此任务的方法:

for(int x = -1; x<=1; x++){
    if ( i+x < xLength && i+x >= 0){
        for(int y = -1; y<=1; y++){
            if(j+y < yLength && j+y >= 0){
                //logic goes here
            }
        }
    }
}

Here is how I've accomplished this in the past:

for(int x = -1; x<=1; x++){
    if ( i+x < xLength && i+x >= 0){
        for(int y = -1; y<=1; y++){
            if(j+y < yLength && j+y >= 0){
                //logic goes here
            }
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文