#java
#java
Вопрос:
Я новичок в Java, пытающийся реализовать код для игры 1024 для задания в колледже. Я действительно застрял, пытаясь добавить число 1 к двум случайным ячейкам в сетке. Игра немного отличается. Вместо печати сетки 4×4 сетка печатается на основе предпочтений пользователя. Мой приведенный ниже код добавляет число 1 к каждой плитке, потому что все они пустые, но как мне добавить число только к 2 случайным плиткам?
Каждый последующий ход в незанятую ячейку в сетке добавляется плитка «1», по этой причине в конце каждого хода мне нужно составить список всех свободных ячеек и случайным образом выбрать свободную ячейку, используя этот список.
Как мне это сделать? В моем коде я пытался подсчитать каждую пустую ячейку, но это не работает для добавления ‘1’ к 2 случайным плиткам.
int count = 0;
for (int i = 0; i < board.length; i ) {
for (int j = 0; j < board.length; j ) {
if (board[i][j] == 0) {
count;
}
if (count == 0) {
return;
}
int location = r.nextInt(count);
int newTile = 1;
board[i][j] = newTile;
}
}
Ответ №1:
Попробуйте следующее:
public class Main
{
public static void main(String[] args) {
//Create random genertor
Random randomGenerator = new Random();
Scanner input = new Scanner(System.in);
//Get user input
System.out.println("Enter a legth");
int length = input.nextInt();
System.out.println("Enter a width");
int width = input.nextInt();
//Initialize board (4x4)
int[][] board = new int[length][width];
//Segment to generate two different points on the board
int randomCoordinateXOne = randomGenerator.nextInt(length);
int randomCoordinateYOne = randomGenerator.nextInt(width);
int randomCoordinateXTwo = randomGenerator.nextInt(length);
int randomCoordinateYTwo = randomGenerator.nextInt(width);
while (randomCoordinateXOne == randomCoordinateXTwo amp;amp; randomCoordinateXTwo == randomCoordinateYTwo) {
randomCoordinateXTwo = randomGenerator.nextInt(length);
randomCoordinateYTwo = randomGenerator.nextInt(width);
}
//Iterate through the board
for (int i = 0; i < length; i ) {
for (int j = 0; j < width; j ) {
//If the current space is one of the two selected above, put a 1 in that spot
if ((i == randomCoordinateXOne amp;amp; j == randomCoordinateYOne) || (i == randomCoordinateXTwo amp;amp; j == randomCoordinateYTwo)) {
board[i][j] = 1;
}
//Otherwise, put a 0
else {
board[i][j] = 0;
}
//Used to visualize result
System.out.print(board[i][j]);
}
//Used to visualize result
System.out.println();
}
}
}
Убедитесь, что вы включили следующее в начало вашего java-файла:
import java.util.Scanner;
import java.util.Random;
Дайте мне знать, если это поможет. Пожалуйста, отметьте правильный ответ, если это так. Комментарии есть в коде, но если у вас есть какие-либо вопросы, дайте мне знать!
Комментарии:
1. Я думаю, что я неправильно объяснил. Вы устанавливаете доску на 4×4, но в моем коде сетка основана на вводе пользователя. ( int dimension = in.nextInt() ). Мне также нужно вести подсчет количества доступных тайлов на протяжении всей игры.
2. @IzabellaWnuk Не беспокойся. Я обновлю код. Это не должно быть так сложно. Пока есть вопросы?
3. Ответ @IzabellaWnuk был обновлен. Дайте мне знать, если это сработает