Member 13082795 Ответов: 2

Java console based 2048 game (non-gui) - как случайным образом сгенерировать 2 или 4 в массиве 4x4


Не знаю, как правильно кодировать заданный вопрос. Должен быть 90% - ный шанс, что 2 появится в массиве 4x4, и 10% - ный шанс, что 4 появится.

Что я уже пробовал:

Пока что это мой код для совета директоров. Следующий шаг-генератор чисел, и вот тут-то я и застрял.
public class test2
{
	public static int[][] gameBoard = new int[4][4];

	public static void main(String[] args)
	{
		displayBoard(gameBoard);
	}//End main
	
	public static void displayBoard(int[][] board)
	{
		System.out.println("\u2554"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
				"\u2566"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
				"\u2566"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
				"\u2566"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2557");
		for (int row = 0; row < 4; row++)
		{
			System.out.print("\u2551");
			for (int col = 0; col < 4; col++)
			{
				if(board[row][col] > 999)
					System.out.print(board[row][col] + " " + "\u2551");
				else if(board[row][col] > 99)
					System.out.print(" " + board[row][col] + " " + "\u2551");
				else if(board[row][col] > 9)
					System.out.print("  " + board[row][col] + " " + "\u2551");
				else if(board[row][col] > 0)
					System.out.print("   " + board[row][col] + " " + "\u2551");
				if(board[row][col] == 0)
					System.out.print("     " + "\u2551");
			}
			System.out.println();
			if (row < 3)
				System.out.println("\u2560"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
						"\u256c"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
						"\u256c"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
						"\u256c"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2563");
		}
		System.out.println("\u255a"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
				"\u2569"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
				"\u2569"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+
				"\u2569"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u2550"+"\u255d");
	}//End of displayBoard
}

2 Ответов

Рейтинг:
2

Richard MacCutchan

Воспользуйся Random (Java Platform SE 7 )[^].


Рейтинг:
0

CPallini

Вы могли бы написать, например

public static int nextValue( Random r)
{
  int x = r.nextInt(10);
  if ( x == 9)
    return 4;
  return 2;
}


Пример использования:
import java.util.Random;

class MyTest
{
  public static int nextValue( Random r)
  {
    int x = r.nextInt(10); // generates a random number in the {0,1,..,9} range.
    if ( x == 9)
      return 4;
    return 2;
  }

  public static void main(  String args[] )
  {
    Random r = new Random();

    int n;
    for (n=0; n<100; ++n)
    {
      System.out.printf("%d) %d\n", n, nextValue(r));
    }
  }
}