Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
18 мая 2023 18:10
563
package com.tetris.tetris;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class Game extends AppCompatActivity implements View.OnClickListener {
DrawView drawView;
GameState gameState;
RelativeLayout gameButtons;
Button left;
Button right;
Button rotateAc;
FrameLayout game;
Button pause;
TextView score;
Button difficultyToggle;
Handler handler;
Runnable loop;
int delayFactor;
int delay;
int delayLowerLimit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gameState = new GameState(24, 20, TetraminoType.getRandomTetramino());
drawView = new DrawView(this, gameState);
drawView.setBackgroundColor(Color.WHITE);
game = new FrameLayout(this);
gameButtons = new RelativeLayout(this);
delay = 500;
delayLowerLimit = 200;
delayFactor = 2;
left = new Button(this);
left.setText("Лево");
left.setId(R.id.left);
right = new Button(this);
right.setText(R.string.right);
right.setId(R.id.right);
rotateAc = new Button(this);
rotateAc.setText(R.string.rotate_ac);
rotateAc.setId(R.id.rotate_ac);
pause = new Button(this);
pause.setText(R.string.pause);
pause.setId(R.id.pause);
score = new TextView(this);
score.setText(R.string.score);
score.setId(R.id.score);
score.setTextSize(30);
difficultyToggle = new Button(this);
difficultyToggle.setText(R.string.easy);
difficultyToggle.setId(R.id.difficulty);
RelativeLayout.LayoutParams rl = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams leftButton = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams rightButton = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams downButton = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams pausebutton = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams scoretext = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams speedbutton = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
gameButtons.setLayoutParams(rl);
gameButtons.addView(left);
gameButtons.addView(right);
gameButtons.addView(rotateAc);
gameButtons.addView(pause);
gameButtons.addView(score);
gameButtons.addView(difficultyToggle);
leftButton.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
leftButton.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
rightButton.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
rightButton.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
downButton.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
downButton.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
pausebutton.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
pausebutton.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
scoretext.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
scoretext.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
speedbutton.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
speedbutton.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
left.setLayoutParams(leftButton);
right.setLayoutParams(rightButton);
rotateAc.setLayoutParams(downButton);
pause.setLayoutParams(pausebutton);
score.setLayoutParams(scoretext);
difficultyToggle.setLayoutParams(speedbutton);
game.addView(drawView);
game.addView(gameButtons);
setContentView(game);
View leftButtonListener = findViewById(R.id.left);
leftButtonListener.setOnClickListener(this);
View rightButtonListener = findViewById(R.id.right);
rightButtonListener.setOnClickListener(this);
View rotateACButtonListener = findViewById(R.id.rotate_ac);
rotateACButtonListener.setOnClickListener(this);
View pauseButtonListener = findViewById(R.id.pause);
pauseButtonListener.setOnClickListener(this);
View speedButtonListener = findViewById(R.id.difficulty);
speedButtonListener.setOnClickListener(this);
handler = new Handler(Looper.getMainLooper());
loop = new Runnable() {
public void run() {
if (gameState.status) {
if (!gameState.pause) {
boolean success = gameState.moveFallingTetraminoDown();
if (!success) {
gameState.paintTetramino(gameState.falling);
gameState.lineRemove();
gameState.pushNewTetramino(TetraminoType.getRandomTetramino());
if (gameState.score % 10 == 9 && delay >= delayLowerLimit) {
delay = delay / delayFactor + 1;
}
gameState.incrementScore();
}
drawView.invalidate();
handler.postDelayed(this, delay);
} else {
handler.postDelayed(this, delay);
}
} else {
pause.setText(R.string.start_new_game);
}
}
};
loop.run();
}
@Override
public void onClick(View action) {
if (action == left) {
gameState.moveFallingTetraminoLeft();
} else if (action == right) {
gameState.moveFallingTetraminoRight();
} else if (action == rotateAc) {
gameState.rotateFallingTetraminoAntiClock();
} else if (action == pause) {
if (gameState.status) {
if (gameState.pause) {
gameState.pause = false;
pause.setText(R.string.pause);
} else {
pause.setText(R.string.play);
gameState.pause = true;
}
} else {
pause.setText(R.string.start_new_game);
Intent intent = new Intent(Game.this, MainActivity.class);
startActivity(intent);
}
} else if (action == difficultyToggle) {
if (!gameState.difficultMode) {
delay = delay / delayFactor;
gameState.difficultMode = true;
difficultyToggle.setText(R.string.hard);
} else {
delay = delay * delayFactor;
difficultyToggle.setText(R.string.easy);
gameState.difficultMode = false;
}
}
}
}
Помогите, пожалуйста, описать этот класс. Написано на Джава
1
ответ
Этот класс представляет собой игру Tetris. Он наследуется от класса AppCompatActivity и реализует интерфейс View.OnClickListener. Внутри класса определены переменные и методы, которые используются для отрисовки игры, обработки пользовательского ввода и управления игровым процессом.
В методе onCreate() происходит инициализация игрового состояния, создание объекта DrawView для отрисовки игры, настройка элементов управления (кнопки "влево", "вправо", "вращение", "пауза", "сложность") и их размещение на экране. Также в методе создается цикл обновления игрового состояния, который вызывается каждый раз, когда игра не находится в состоянии паузы.
Метод onClick() используется для обработки нажатий на элементы управления. В зависимости от нажатой кнопки, происходит соответствующее изменение игрового состояния (движение фигуры влево/вправо, вращение, пауза, изменение сложности).
В целом, этот класс представляет собой основу для игры Tetris и содержит основную логику управления игровым процессом.
В методе onCreate() происходит инициализация игрового состояния, создание объекта DrawView для отрисовки игры, настройка элементов управления (кнопки "влево", "вправо", "вращение", "пауза", "сложность") и их размещение на экране. Также в методе создается цикл обновления игрового состояния, который вызывается каждый раз, когда игра не находится в состоянии паузы.
Метод onClick() используется для обработки нажатий на элементы управления. В зависимости от нажатой кнопки, происходит соответствующее изменение игрового состояния (движение фигуры влево/вправо, вращение, пауза, изменение сложности).
В целом, этот класс представляет собой основу для игры Tetris и содержит основную логику управления игровым процессом.
0
·
Хороший ответ
18 мая 2023 18:12
Остались вопросы?
Еще вопросы по категории Информатика
Я Прошу тебя, помоги, Bыручи друга, спаси !!! 1) Какую смысловую нагрузку несет блок (картинка снизу) а) блок ввода-вывода; б) блок начала алгоритма...
В зоопарке 32 обезьяны живут в двух вольерах :А и Б.Одна из обезьян заболела.Сообщение "Заболела обезьяна из вольера А" содержит 4 бита информации.Ско...
Каждый объект, зарегистрированный в информационной системе, получает уникальный код из 14 символов, каждый из которых может быть одной из 26 заглавных...
1.Почему следует придерживаться единого стиля при создании текстового документа? 2. Что такое шаблон документа? 3.Чем маркированный список отличаетс...
В чем преимущество компьютерных информационных моделей перед теоретическими? Вопрос из учебника информатики за 10 класс, автор Семакин, §13 "Компьютер...