游戏板随机游戏对象和困难

时间:2014-02-04 02:03:30

标签: java arrays random

我有一个游戏板,我想填充随机游戏对象 让我们在1...6数组中为它们提供值int[10][10]

游戏应该有不同的困难。越容易,相同的对象就越多,彼此相邻;越难,相同物体彼此相邻的越少(半径= 2)。

例:
让我们假设中等难度。对象周围40%的对象(半径= 2)可以是相同的类型。

 -000------
 00000-----
 00100-----
 00000-----
 -000------ 

0中只有40%允许属于1类型。

如何创建这样的随机数组?或者在这种情况下有更好的方法来实现难度吗?

2 个答案:

答案 0 :(得分:1)

我这样做的方法是随机化索引,而不是值本身。 因此,其中40%意味着我只能循环总数的40%。 在你的例子中,这就是我要做的......

int n = 20 * 0.4;
for(i=1; i<n; ++i){
    int r = GetRandomIndex();
    board[r] = 1;
}

答案 1 :(得分:0)

尝试这样的事情:

import java.awt.Point;
import java.awt.geom.Point2D;
import java.util.*;
import static java.lang.Math.sqrt;
class Game {
    Game() {
        clearGameObjects();
    }
    void clearGameObjects() {
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                gameObjects[i][j]=0;
    }
    @Override public String toString() {
        String s="";
        for(int i=0;i<n;i++) {
            List row=Arrays.asList(gameObjects[i]);
            s+="row "+i+" "+row+'\n';
        }
        return s;
    }
    void distributeObjects(int x,int y,double percent,int type) {
        clearGameObjects();
        gameObjects[x][y]=type;
        List<Point> withinRadius=new ArrayList<>(21);
        Point2D p1=new Point2D.Double(x,y);
        Point p;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++) {
                if(p1.distance(p=new Point(i,j))<Math.sqrt(5))
                withinRadius.add(p);
            }
        System.out.println(withinRadius.size()+" points within radius: "+withinRadius);
        int placed=1;
        for(Point p2:withinRadius)
            if(p2.getX()!=x&&p2.getY()!=y) 
                if(placed/(double)withinRadius.size()<percent) {
                    gameObjects[p2.x][p2.y]=type;
                    placed++;
                }

        System.out.println("placed "+placed+" items, "+placed/(double)withinRadius.size()*100+"%");

    }
    final int n=10;
    Integer gameObjects[][]=new Integer[n][n];
}
public class So21541681 {
    public static void main(String[] args) {
        Game game=new Game();
        System.out.println(game);
        game.distributeObjects(5,6,.40,1);
        System.out.println(game);
    }
}