Загрузка данных
package com.example.rps;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
// 0 - камень, 1 - ножницы, 2 - бумага
private static final String[] NAMES = {"Камень", "Ножницы", "Бумага"};
private final Random random = new Random();
private int targetScore;
private int playerScore;
private int computerScore;
private boolean gameOver;
private TextView tvTarget, tvScore, tvChoices, tvResult;
private ImageButton btnRock, btnScissors, btnPaper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTarget = findViewById(R.id.tvTarget);
tvScore = findViewById(R.id.tvScore);
tvChoices = findViewById(R.id.tvChoices);
tvResult = findViewById(R.id.tvResult);
btnRock = findViewById(R.id.btnRock);
btnScissors = findViewById(R.id.btnScissors);
btnPaper = findViewById(R.id.btnPaper);
Button btnNewGame = findViewById(R.id.btnNewGame);
Button btnSettings = findViewById(R.id.btnSettings);
btnRock.setOnClickListener(v -> play(0));
btnScissors.setOnClickListener(v -> play(1));
btnPaper.setOnClickListener(v -> play(2));
btnNewGame.setOnClickListener(v -> startNewGame());
btnSettings.setOnClickListener(v ->
startActivity(new Intent(this, SettingsActivity.class)));
}
// При возврате с экрана настроек начинаем игру заново с новым лимитом очков
@Override
protected void onResume() {
super.onResume();
startNewGame();
}
private void startNewGame() {
targetScore = getSharedPreferences(SettingsActivity.PREFS, MODE_PRIVATE)
.getInt(SettingsActivity.KEY_TARGET, SettingsActivity.DEFAULT_TARGET);
playerScore = 0;
computerScore = 0;
gameOver = false;
setButtonsEnabled(true);
tvTarget.setText(getString(R.string.win_points, targetScore));
tvChoices.setText("");
tvResult.setText(R.string.choose);
updateScore();
}
private void play(int player) {
if (gameOver) return;
int computer = random.nextInt(3);
String result;
if (player == computer) {
result = "Ничья в этом раунде!";
} else if ((player - computer + 3) % 3 == 2) {
// камень > ножницы, ножницы > бумага, бумага > камень
playerScore++;
result = "Вы выиграли раунд!";
} else {
computerScore++;
result = "Раунд за компьютером!";
}
tvChoices.setText("Вы: " + NAMES[player] + " Компьютер: " + NAMES[computer]);
updateScore();
if (playerScore >= targetScore || computerScore >= targetScore) {
gameOver = true;
setButtonsEnabled(false);
result = (playerScore >= targetScore)
? "Игра окончена. Вы победили! 🎉"
: "Игра окончена. Победил компьютер!";
}
tvResult.setText(result);
}
private void updateScore() {
tvScore.setText("Вы " + playerScore + " : " + computerScore + " Компьютер");
}
private void setButtonsEnabled(boolean enabled) {
btnRock.setEnabled(enabled);
btnScissors.setEnabled(enabled);
btnPaper.setEnabled(enabled);
float alpha = enabled ? 1f : 0.4f;
btnRock.setAlpha(alpha);
btnScissors.setAlpha(alpha);
btnPaper.setAlpha(alpha);
}
}