System.out.println("Победил игрок " + bPlayerNum);
return true;
}
// Проверка существования новых ходов
for (i = 0; i < bPoleSize * bPoleSize; i++) {
switch (getX(i)) {
case 'O':
case 'X':
break;
default:
return false;
}
}
if (bPoleSize*bPoleSize <= i) {
System.out.println("Ничья. Кончились ходы.");
return true;
}
// Продолжаем игру
return false;
}
/**
* Получает значение координаты на поле
*/
private static String getXY(int x, int y) {
return pole[x * bPoleSize + y];
}
/**
* Получает значение координаты на поле
*/
private static char getX(int x) {
return pole[x].charAt(0);
}
/**
* Вставляет на поле крестик или нолик
*/
private static void putX(int x) {
pole[x] = 1 == bPlayerNum ? "X" : "O";
}
/**
* Вывести игровое поле
*/
private static void showPole() {
for (int i = 0; i < bPoleSize; i++) {
for (int j = 0; j < bPoleSize; j++) {
System.out.printf("%4s", getXY(i, j));
}
System.out.print("\n");
}
}
}
Извини если что то не так, не совсем в этом разбираюсь.
vitaldicky349
09.02.2022
Была суббота, но Вася шёл в школу. По дороге он встретил своего друга Митю, который предложил сходить в кино, потому что по субботам не учился и был свободен. 1) Вася отказал сходить в кино, потому что не хотел лишний раз прогуливать школу, но договорился с Митей на воскресенье. К тому же Вася хотел исправить двойку по русскому. "Как знаешь" - ответил Митя. В школе одноклассник Васи Лёша предложил ему поиграть в мячик в коридоре, всё равно ведь делать нечего. -Да он же маленький, теннисный! Нам ничего не будет! 1. Вася отказался от этой затеи. Он пошёл в класс и стал повторять правило и на уроке исправил свою двойку, ответив на отлично. А Лёша разбил мячиком лампу и его вызвали к директору. 2. Вася согласился. Всё равно на перемене было нечего делать. Мальчики весело играли, несколько раз попали в проходящих мимо ребят, и вдруг Лёша попал мячиком в лампу. Она разбилась. Мальчиков вызвали к директору, и после обещаний поговорить с родителями и уличительной беседы водворили на урок. После таких событий мальчики всё забыли и получили ещё по двойке. 2) Вася согласился. Он так давно не видел Митю! К тому же, в хорошую, солнечную погоду так не хотелось идти в школу. Мальчики пошли в кино и по дороге заметили ларёк с мороженым. Вот бы по мороженке! Жаль, что у меня денег нет на мороженое, только на билеты хватит, - сказал Митя. Вася тоже хотел мороженое, да и Митю бы угостил. У него были деньги, но на подарок маме на 8 марта. На другое ему нельзя было их тратить. 1. Вася решил не тратить эти деньги. Он сказал Мите, что у него денег совсем нет и ребята пошли в кино. Они благополучно посмотрели фильм. Вася поругали, за то, что он не пошёл в школу, но двойку он исправил в понедельник. 2. Вася решил - гулять так гулять! Он купил себе и Мите по мороженому, после чего сумма в его кошельке заметно уменьшилась. После этого мальчики пошли смотреть кино. С удовольствием насладившись фильмом, Вася зашёл и за подарком маме. Он исправил двойку в понедельник, а своё отсутствие в школе объяснил родителм тем, что ходил в магазин.
asvirskiy26
09.02.2022
Сначала числа преобразуются в двоичный код. А=-5(10)=-101(2) В=-8,25(10)=-1000,01(2) Числа в формате с фиксированной запятой в памяти хранятся таким образом, что позиция запятой известна и неизменна для всех чисел (отсюда и название с фиксированной точкой) . Для этого число А должно быть представлено в виде -101,00(2) Пусть для хранения используется 8 разрядов. Тогда числа в прямом коде будут представлены в виде А: 1.00101,00 В: 1.01000,01 - здесь отделённый точкой старший разряд знаковый, 1 - означает минус. Обратный код получается инверсией всех разрядов, кроме знаковых. А: 1.11010,11 В: 1.10111,10 Теперь нужно получить дополнительный код. Но перед этим нужно иметь в виду, что ни запятые, ни точки в памяти не хранятся, но всегда известно, где знаковый разряд и сколько разрядов в дробной части. Поэтому А: 11101011 + 1 = 11101100 В: 11011110 + 1 = 11011111 Это и есть внутреннее представление заданных чисел в дополнительном коде. Сложение и вычитание чисел с фиксированной точкой производится так же, как и для целых чисел. 11101100 + 11011111
111001011 - старший разряд (№8) будет выдавлен из разрядной сетки и в данном случае просто отброшен. Результат операции сложения 11001011. Теперь можно преобразовать получившееся число в привычный десятичный вид и проверить результат. 1.1001011 1.0110100 - обратный код 1.0110100 + 1 = 1.0110101 - прямой код. Возвращаем запятую на место 1.01101,01 -> -(8+4+1+1/4) В десятичном виде это число -13,25 Сложение было выполнено правильно.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Надо написать код игры крестики нолики на еклипсе (java)
package test;
import java.util.Scanner;
public class PlusZerro {
// Размер игровово поля
private static final byte bPoleSize = 3;
// Задаем поле как (!)одномерный массив bPoleSize*bPoleSize (неожиданно?)
private static String[] pole = new String[bPoleSize * bPoleSize];
// А тут у нас задается текущий игрок
private static byte bPlayerNum = 0;
public static void main(String[] args) throws Exception {
int iTmp = 0;
Scanner sc = new Scanner(System.in);
// Инициализация поля
for (int i = 0; i < bPoleSize * bPoleSize; i++)
pole[i] = Integer.toString(++iTmp);
// Играем, пока не наступит конец игры
while (!isGameEnd()) {
nextPlayer();
while (true) {
System.out.println("\nХод игрока " + bPlayerNum);
showPole(); // Рисуем поле
System.out.print("Наберите число, куда вы хотите вставить " + (1 == bPlayerNum ? "крестик" : "нолик") + ": ");
if (sc.hasNextInt()) { // проверяем, есть ли в потоке целое число
iTmp = sc.nextInt() - 1; // считывает целое число с потока ввода и сохраняем в переменную
if (isValidInput(iTmp))
break;
}
System.out.println("Вы ввели неправильное число. Повторите ввод");
sc.next();
}
try {
putX(iTmp); // Вставляем на поле крестик или нолик
} catch (Exception e) {
System.out.println("Что-то пошло не так ;(");
}
}
showPole();
}
/**
* Проверяем корректность ввода. Введенное число должно быть по размеру поля
* и поле должно быть в этом месте еще не заполнено
*/
private static boolean isValidInput(int iIn) {
if (iIn >= bPoleSize * bPoleSize) return false;
if (iIn < 0) return false;
switch (getX(iIn)) {
case 'O':
case 'X':
return false;
}
return true;
}
/**
* Функция задает номер следующего игрока
*/
private static void nextPlayer() {
bPlayerNum = (byte) (1 == bPlayerNum ? 2 : 1);
}
/**
* Определяем, наступил конец игры или нет
* Условия:
* 1) Победили крестики
* 2) Победили нолики
* 3) Кончились ходы
*/
private static boolean isGameEnd() {
int i, j;
boolean bRowWin = false, bColWin = false;
// Проверка победы на колонках и столбиках
for (i = 0; i < bPoleSize; i++) {
bRowWin = true;
bColWin = true;
for (j = 0; j < bPoleSize-1; j++) {
bRowWin &= (getXY(i,j).charAt(0) == getXY(i,j+1).charAt(0));
bColWin &= (getXY(j,i).charAt(0) == getXY(j+1,i).charAt(0));
}
if (bColWin || bRowWin) {
System.out.println("Победил игрок " + bPlayerNum);
return true;
}
}
// Проверка победы по диагоналям
bRowWin = true;
bColWin = true;
for (i=0; i<bPoleSize-1; i++) {
bRowWin &= (getXY(i,i).charAt(0) == getXY(i+1,i+1).charAt(0));
bColWin &= (getXY(i, bPoleSize-i-1).charAt(0) == getXY(i+1, bPoleSize-i-2).charAt(0));
}
if (bColWin || bRowWin) {
System.out.println("Победил игрок " + bPlayerNum);
return true;
}
// Проверка существования новых ходов
for (i = 0; i < bPoleSize * bPoleSize; i++) {
switch (getX(i)) {
case 'O':
case 'X':
break;
default:
return false;
}
}
if (bPoleSize*bPoleSize <= i) {
System.out.println("Ничья. Кончились ходы.");
return true;
}
// Продолжаем игру
return false;
}
/**
* Получает значение координаты на поле
*/
private static String getXY(int x, int y) {
return pole[x * bPoleSize + y];
}
/**
* Получает значение координаты на поле
*/
private static char getX(int x) {
return pole[x].charAt(0);
}
/**
* Вставляет на поле крестик или нолик
*/
private static void putX(int x) {
pole[x] = 1 == bPlayerNum ? "X" : "O";
}
/**
* Вывести игровое поле
*/
private static void showPole() {
for (int i = 0; i < bPoleSize; i++) {
for (int j = 0; j < bPoleSize; j++) {
System.out.printf("%4s", getXY(i, j));
}
System.out.print("\n");
}
}
}
Извини если что то не так, не совсем в этом разбираюсь.