Лучшие помощники
- Megamozg 2200 б
- Matalya1 1800 б
- DevAdmin 1700 б
- arkasha_bortnikov 890 б
- Dwayne_Johnson 860 б
18 мая 2023 18:41
247
package com.tetris.tetris;
import java.util.Random;
enum TetraminoType {
SQUARE_SHAPED,
T_SHAPED,
L_SHAPED,
LINE_SHAPED,
Z_SHAPED,
INV_L_SHAPED,
INV_Z_SHAPED;
private static final TetraminoType[] VALUES = values();
private static final int SIZE = VALUES.length;
private static final Random RANDOM = new Random();
public static TetraminoType getRandomTetramino() {
return VALUES[RANDOM.nextInt(SIZE)];
}
}
class Tetramino {
BasicBlock[] blocks;
TetraminoType type;
Tetramino(TetraminoType type, int tetraId) {
Coordinate[] coordinates;
switch (type) {
case SQUARE_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(0, 10),
new Coordinate(1, 10),
new Coordinate(1, 11),
new Coordinate(0, 11)
};
blocks = this.blocksGenerator(tetraId, 1, coordinates);
break;
case INV_L_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(0, 10),
new Coordinate(0, 11),
new Coordinate(1, 10),
new Coordinate(2, 10)
};
blocks = this.blocksGenerator(tetraId, 2, coordinates);
break;
case L_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(0, 11),
new Coordinate(0, 10),
new Coordinate(1, 11),
new Coordinate(2, 11)
};
blocks = this.blocksGenerator(tetraId, 3, coordinates);
break;
case T_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(1, 10),
new Coordinate(0, 10),
new Coordinate(1, 11),
new Coordinate(2, 10)
};
blocks = this.blocksGenerator(tetraId, 4, coordinates);
break;
case Z_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(1, 11),
new Coordinate(1, 10),
new Coordinate(0, 10),
new Coordinate(2, 11)
};
blocks = this.blocksGenerator(tetraId, 5, coordinates);
break;
case INV_Z_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(1, 11),
new Coordinate(0, 11),
new Coordinate(1, 10),
new Coordinate(2, 10)
};
blocks = this.blocksGenerator(tetraId, 6, coordinates);
break;
case LINE_SHAPED:
coordinates = new Coordinate[]{
new Coordinate(0, 10),
new Coordinate(1, 10),
new Coordinate(2, 10),
new Coordinate(3, 10)
};
blocks = this.blocksGenerator(tetraId, 7, coordinates);
break;
}
}
private Tetramino(BasicBlock[] blocks) {
this.blocks = blocks;
}
private BasicBlock[] blocksGenerator(int tetraId, int colour, Coordinate[] coordinates) {
BasicBlock[] blocks = new BasicBlock[coordinates.length];
for (int itr = 0; itr < coordinates.length; itr++) {
blocks[itr] = new BasicBlock(colour, tetraId, coordinates[itr], BasicBlockState.ON_TETRAMINO);
}
return blocks;
}
Tetramino copy(int tetraId) {
BasicBlock[] newBlocks = new BasicBlock[this.blocks.length];
for (int itr = 0; itr < this.blocks.length; itr++) {
newBlocks[itr] = this.blocks[itr].copy();
newBlocks[itr].tetraId = tetraId;
}
return new Tetramino(newBlocks);
}
void moveDown() {
for (BasicBlock block : blocks) {
block.coordinate.y++;
}
}
void moveLeft() {
for (BasicBlock block : blocks) {
block.coordinate.x--;
}
}
void moveRight() {
for (BasicBlock block : blocks) {
block.coordinate.x++;
}
}
void performClockWiseRotation() {
BasicBlock referenceBlock = blocks[0];
for (BasicBlock block : blocks) {
Coordinate baseCoordinate = Coordinate.sub(block.coordinate, referenceBlock.coordinate);
block.coordinate = Coordinate.add(Coordinate.rotateAntiClock(baseCoordinate), referenceBlock.coordinate);
}
}
}
Помогите, пожалуйста, какая тут логика класса? написано на Джаве
1
ответ
Этот код реализует игру Тетрис.
Класс `TetraminoType` - это перечисление, которое содержит все возможные типы тетрамино (фигурок) в игре.
Класс `Tetramino` - это класс, который представляет конкретное тетрамино в игре. Он имеет свойство `blocks`, которое является массивом объектов `BasicBlock`, представляющих отдельные блоки тетрамино. Также у него есть свойство `type`, которое определяет тип тетрамино.
Конструктор `Tetramino` создает новый объект тетрамино на основе переданного типа и идентификатора. Он использует метод `blocksGenerator`, чтобы создать массив блоков для тетрамино.
Метод `copy` создает копию тетрамино с новым идентификатором.
Методы `moveDown`, `moveLeft` и `moveRight` перемещают тетрамино вниз, влево и вправо соответственно.
Метод `performClockWiseRotation` выполняет поворот тетрамино по часовой стрелке относительно блока, который находится в верхнем левом углу тетрамино.
Класс `TetraminoType` - это перечисление, которое содержит все возможные типы тетрамино (фигурок) в игре.
Класс `Tetramino` - это класс, который представляет конкретное тетрамино в игре. Он имеет свойство `blocks`, которое является массивом объектов `BasicBlock`, представляющих отдельные блоки тетрамино. Также у него есть свойство `type`, которое определяет тип тетрамино.
Конструктор `Tetramino` создает новый объект тетрамино на основе переданного типа и идентификатора. Он использует метод `blocksGenerator`, чтобы создать массив блоков для тетрамино.
Метод `copy` создает копию тетрамино с новым идентификатором.
Методы `moveDown`, `moveLeft` и `moveRight` перемещают тетрамино вниз, влево и вправо соответственно.
Метод `performClockWiseRotation` выполняет поворот тетрамино по часовой стрелке относительно блока, который находится в верхнем левом углу тетрамино.
0
·
Хороший ответ
18 мая 2023 18:42
Остались вопросы?
Еще вопросы по категории Информатика
Какие данные входят в состав пакета? 1) адрес получателя 2) адрес отправителя 3)число компьютеров в сети отправителя 4)контрольная сумма 5)назва...
На координатной плоскости отметьте и подпишите точки со следующими координатами: A(2,5), B(6,5), C(11,7), D(11,4), E(6,2), F(2,2), G(4,8), H(9,9), I(3...
Какие виды современных компьютеров вы знаете? Найдите в Интернете характеристики их конфигураций и запишите в тетради....
Срочно даю 20 балов пжжж Имя величины в алгоритме мнемоническое. X B2 SUMMA ZARPLATA...
7. Логическими переменными A, B, C, D, E обозначены следующие простые высказывания: A – яблоко красное, B – яблоко вкусное, C – яблоко сладкое, D – яб...
Все предметы