Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 895 б
- Dwayne_Johnson 865 б
18 мая 2023 18:41
317
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
Остались вопросы?
Еще вопросы по категории Информатика
2.Перечислите известные вам формы записи алгоритмов. 6 класс...
среди приведённых ниже трёх чисел, записанных в разных системах счисления,найдите число,сумма цифр которого в десятичной записи наименьшая. В ответе з...
Операционные системы входят в состав: а) системы управления базами данных б) систем программирования в) прикладного ПО г) системного ПО...
Что больше терабайта ответь плиз кто нибудь...
1. На чем основано действие антивирусной программы? 1. На удалении зараженных файлов; 2. На ожидании начала вирусной атаки; 3. На сравнении програм...