Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
18 мая 2023 18:16
319
package com.tetris.tetris;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
class DrawView extends View {
int yOffset;
Paint paint;
GameState gameState;
public DrawView(Context context, final GameState gameState) {
super(context);
paint = new Paint();
paint.setColor(Color.BLUE);
yOffset = 200;
this.gameState = gameState;
}
private int getBlockColorCode(int color) {
switch (color) {
case 1:
return Color.BLUE;
case 2:
return Color.YELLOW;
case 3:
return Color.RED;
case 4:
return Color.GREEN;
case 5:
return Color.CYAN;
case 6:
return Color.MAGENTA;
case 7:
return Color.DKGRAY;
default:
return Color.TRANSPARENT;
}
}
private void DrawMatrix(BasicBlock[][] matrix, Canvas canvas) {
for (int i = 0; i < 24; i++) {
for (int j = 0; j < 20; j++) {
if (matrix[i][j].state == BasicBlockState.ON_EMPTY)
continue;
int color = this.getBlockColorCode(matrix[i][j].colour);
Paint p = new Paint();
p.setColor(color);
canvas.drawRect(42 + j * 50, yOffset + i * 50 + 2, 88 + j * 50, yOffset + (i + 1) * 50 - 2, p);
}
}
}
private void Clear(BasicBlock[][] matrix, Canvas canvas) {
Paint p = new Paint();
p.setColor(Color.WHITE);
for (int i = 0; i < 24; i++) {
for (int j = 0; j < 20; j++) {
canvas.drawRect(42 + j * 50, yOffset + i * 50 + 2, 88 + j * 50, yOffset + (i + 1) * 50 - 2, p);
}
}
}
private void DrawTetramino(Tetramino tetramino, Canvas canvas) {
for (BasicBlock block : tetramino.blocks) {
int color = this.getBlockColorCode(block.colour);
Paint p = new Paint();
p.setColor(color);
canvas.drawRect(42 + block.coordinate.x * 50, yOffset + block.coordinate.y * 50 + 2, 88 + block.coordinate.x * 50, yOffset + (block.coordinate.y + 1) * 50 - 2, p);
}
}
private void Boundary(Canvas canvas) {
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5f);
canvas.drawLine(40, yOffset, 40, yOffset + 1200, paint);
canvas.drawLine(40, yOffset, 1040, yOffset, paint);
canvas.drawLine(1040, yOffset, 1040, yOffset + 1200, paint);
canvas.drawLine(1040, yOffset + 1200, 40, yOffset + 1200, paint);
}
private void grid(Canvas canvas) {
paint.setStrokeWidth(2f);
for (int i = 90; i < 1040; i = i + 50) {
canvas.drawLine(i, yOffset, i, yOffset + 1200, paint);
}
for (int j = 50; j < 1200; j = j + 50) {
canvas.drawLine(40, yOffset + j, 1040, yOffset + j, paint);
}
}
private void PrintScore(int score, Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.TRANSPARENT);
canvas.drawRect(0, 100, 200, 200, paint);
paint.setColor(Color.BLACK);
paint.setTextSize(100);
canvas.drawText(Integer.toString(score), 80, 170, paint);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5f);
Boundary(canvas);
grid(canvas);
if (gameState.status) {
Clear(gameState.board, canvas);
DrawMatrix(gameState.board, canvas);
DrawTetramino(gameState.falling, canvas);
PrintScore(gameState.score, canvas);
} else {
Paint paint = new Paint();
DrawMatrix(gameState.board, canvas);
DrawTetramino(gameState.falling, canvas);
paint.setColor(Color.BLACK);
paint.setTextSize(200);
canvas.drawText(getResources().getString(R.string.game_over), 60, 800, paint);
PrintScore(gameState.score, canvas);
}
}
}
Напишите, пожалуйста что описано в этом классе. Написано на Джава
1
ответ
Этот класс представляет собой пользовательский интерфейс для игры в тетрис. Он отвечает за отображение игрового поля, тетрамино и текущего счета игрока. Он использует методы для рисования матрицы игрового поля, тетрамино и линий сетки на игровом поле. Класс также содержит методы для очистки игрового поля и вывода сообщения о конце игры. Все рисование происходит в методе onDraw(). Класс использует объект GameState для получения информации о текущем состоянии игры.
0
·
Хороший ответ
18 мая 2023 18:18
Остались вопросы?
Еще вопросы по категории Информатика
Файл содержит текст. Программа подсчитывает количество прописных латинских букв в тексте. В программе пропущена одна команда. Запишите недостающую ком...
Массив A заполнили, а потом изменили: n := 2020; for i := 1 to n do A[i] := i; for i := 1 to n div 2 do A[i] := A[n + 1 - i]; Чему равна сумма п...
Запишите на алгоритмическом языке алгоритм представленный блок схемой Пж помогите...
1. Что такое программное обеспечение ЭВМ? 2.Какие задачи выполняет прикладное программное обеспечение? 3.Назовите основные виды прикладных программ...
Укажите ячейку, адрес которой является относительным: 2. Е$5 3. $А$2 4. $С4...