Может у меня ноут слабый.
Кому не лень попробуйте запустить.
Это мини игра где два бота играют в крестики нолики.
Первый класс:
public class Gameplay {
int Player1;
int Player2;
int x = 0;
int y = 0;
String[] field = {"0","1","2","3","4","5","6","7","8"};
boolean move0 = false;
boolean move1 = false;
boolean move2 = false;
boolean move3 = false;
boolean move4 = false;
boolean move5 = false;
boolean move6 = false;
boolean move7 = false;
boolean move8 = false;
void StartGame() {
while (x<5) {
Player1 = (int) (Math.random() * 8);
if (Player1 == 0) {
if (move0 == false) {
move0 = true;
field[0] ="x";
}
else {
x=x-1;
}
}
if (Player1 == 1) {
if (move1 == false) {
move1 = true;
field[1] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 2) {
if (move2 == false) {
move2 = true;
field[2] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 3) {
if (move3 == false) {
move3 = true;
field[3] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 4) {
if (move4 == false) {
move4 = true;
field[4] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 5) {
if (move5 == false) {
move5 = true;
field[5] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 6) {
if (move6 == false) {
move6 = true;
field[6] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 7) {
if (move7 == false) {
move7 = true;
field[7] = "x";
}
else {
x=x-1;
}
}
if (Player1 == 8) {
if (move8 == false) {
move8 = true;
field[8] = "x";
}
else {
x=x-1;
}
}
x=x+1;
}
while (y<4) {
Player1 = (int) (Math.random() * 8);
if (Player2 == 0) {
if (move0 == false) {
move0 = true;
field[0] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 1) {
if (move1 == false) {
move1 = true;
field[1] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 2) {
if (move2 == false) {
move2 = true;
field[2] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 3) {
if (move3 == false) {
move3 = true;
field[3] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 4) {
if (move4 == false) {
move4 = true;
field[4] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 5) {
if (move5 == false) {
move5 = true;
field[5] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 6) {
if (move6 == false) {
move6 = true;
field[6] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 7) {
if (move7 == false) {
move7 = true;
field[7] = "o";
}
else {
y=y-1;
}
}
if (Player2 == 8) {
if (move8 == false) {
move8 = true;
field[8] = "o";
}
else {
y=y-1;
}
}
y=y+1;
}
}
}
Второй класс:
public class Main {
public static void main(String[] args) {
Gameplay g = new Gameplay();
g.StartGame();
System.out.println(g.field[0] + " " + g.field[1] + " " + g.field[2]);
System.out.println(g.field[3] + " " + g.field[4] + " " + g.field[5]);
System.out.println(g.field[6] + " " + g.field[7] + " " + g.field[8]);
}
}
Java
Java код долго запускается
Признаки, которые могут вызывать длительное время выполнения вашего кода:
1. Бесконечный цикл: В вашем коде есть два while-цикла без явного условия для их завершения. Это может привести к тому, что программа будет выполняться вечно или до достижения какого-то ограничения, что может занимать много времени.
2. Ошибки логики: В некоторых частях кода вы используете переменную Player2, которая не определена и не инициализирована. Вместо этого вы должны использовать Player1.
3. Неправильное условие проверки: Внутри циклов while вы проверяете значение Player1 и Player2 на равенство некоторому числу (например, 0), но эти переменные объявлены, но не инициализированы, поэтому значение по умолчанию будет 0. В результате условия никогда не будет истинным, и выполнение пойдет по неправильному пути, вызывая неправильные результаты.
4. Операции сравнения boolean переменных: Вместо сравнения boolean переменных с true или false, вы можете просто использовать их без оператора сравнения. Например, вместо `if (move0 == false)` можно написать `if (!move0)`.
5. Однотипный код: Вы используете похожий код несколько раз, который может быть заменен более компактной и поддерживаемой реализацией. Например, вы можете использовать массив для хранения значения x и o вместо отдельных boolean переменных move0, move1, и так далее.
Вот исправленная версия вашего кода:
```java
import java.util.Random;
public class Gameplay {
int[] players = new int[9];
String[] field = {"0", "1", "2", "3", "4", "5", "6", "7", "8"};
void StartGame() {
Random random = new Random();
int x = 0;
int y = 0;
while (x < 5) {
int player = random.nextInt(9);
if (players[player] == 0) {
players[player] = 1;
field[player] = "x";
x++;
}
}
while (y < 4) {
int player = random.nextInt(9);
if (players[player] == 0) {
players[player] = 1;
field[player] = "o";
y++;
}
}
}
}
```
```java
public class Main {
public static void main(String[] args) {
Gameplay g = new Gameplay();
g.StartGame();
System.out.println(g.field[3] + " " + g.field[4] + " " + g.field[5]);
System.out.println(g.field[6] + " " + g.field[7] + " " + g.field[8]);
}
}
```
Теперь код исправлен, и он должен выполняться корректно. Однако стоит отметить, что в данном коде нет логики игры крестики-нолики. Он лишь случайным образом заполняет поле символами 'x' и 'o'. Если у вас есть конкретные требования для реализации игры крестики-нолики или какой-то другой вопрос, пожалуйста, уточните, и я с радостью помогу вам.
1. Бесконечный цикл: В вашем коде есть два while-цикла без явного условия для их завершения. Это может привести к тому, что программа будет выполняться вечно или до достижения какого-то ограничения, что может занимать много времени.
2. Ошибки логики: В некоторых частях кода вы используете переменную Player2, которая не определена и не инициализирована. Вместо этого вы должны использовать Player1.
3. Неправильное условие проверки: Внутри циклов while вы проверяете значение Player1 и Player2 на равенство некоторому числу (например, 0), но эти переменные объявлены, но не инициализированы, поэтому значение по умолчанию будет 0. В результате условия никогда не будет истинным, и выполнение пойдет по неправильному пути, вызывая неправильные результаты.
4. Операции сравнения boolean переменных: Вместо сравнения boolean переменных с true или false, вы можете просто использовать их без оператора сравнения. Например, вместо `if (move0 == false)` можно написать `if (!move0)`.
5. Однотипный код: Вы используете похожий код несколько раз, который может быть заменен более компактной и поддерживаемой реализацией. Например, вы можете использовать массив для хранения значения x и o вместо отдельных boolean переменных move0, move1, и так далее.
Вот исправленная версия вашего кода:
```java
import java.util.Random;
public class Gameplay {
int[] players = new int[9];
String[] field = {"0", "1", "2", "3", "4", "5", "6", "7", "8"};
void StartGame() {
Random random = new Random();
int x = 0;
int y = 0;
while (x < 5) {
int player = random.nextInt(9);
if (players[player] == 0) {
players[player] = 1;
field[player] = "x";
x++;
}
}
while (y < 4) {
int player = random.nextInt(9);
if (players[player] == 0) {
players[player] = 1;
field[player] = "o";
y++;
}
}
}
}
```
```java
public class Main {
public static void main(String[] args) {
Gameplay g = new Gameplay();
g.StartGame();
System.out.println(g.field[3] + " " + g.field[4] + " " + g.field[5]);
System.out.println(g.field[6] + " " + g.field[7] + " " + g.field[8]);
}
}
```
Теперь код исправлен, и он должен выполняться корректно. Однако стоит отметить, что в данном коде нет логики игры крестики-нолики. Он лишь случайным образом заполняет поле символами 'x' и 'o'. Если у вас есть конкретные требования для реализации игры крестики-нолики или какой-то другой вопрос, пожалуйста, уточните, и я с радостью помогу вам.
что это за страсти? ты тупо закодировал ходы одной конкретной игры?
Похожие вопросы
- Как для андроид, в java коде, имитировать нажатие кнопки
- Как можно запустить строчку java кода которая хранится в txt файле?
- Нужно написать Java код на NetBeans IDE 8.2, пожалуйста
- Не запускается код на Java.
- Подскажите пожалуйста, как в данном коде Java сделать так, чтоб при нажатии цифры 3 программа завершала свою работу?
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Прошу помощи код Java
- Код на java.
- Всем привет. Помогите плз. Мне нужна помощь тех кто действительно хорошо знает Java т. к мне нужно выбрать один из курсов
- Простейший код java вопрос