@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); // Initialize the GameSettings int[] boardSizeChoices = getResources().getIntArray(R.array.boardSizeChoices); int[] numColorsChoices = getResources().getIntArray(R.array.numColorsChoices); gameSettings = new GameSettings( boardSizeChoices[boardSizeChoices.length / 2], numColorsChoices[numColorsChoices.length / 2]); // Get the FloodView floodView = (FloodView) findViewById(R.id.floodView); // Initialize the paints array and pass it to the FloodView initPaints(); floodView.setPaints(paints); ImageView settingsButton = (ImageView) findViewById(R.id.settingsButton); settingsButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent launchSettingsIntent = new Intent(GameActivity.this, SettingsActivity.class); launchSettingsIntent.putExtra("boardSize", gameSettings.getBoardSize()); launchSettingsIntent.putExtra("numColors", gameSettings.getNumColors()); startActivityForResult(launchSettingsIntent, UPDATE_SETTINGS); } }); ImageView infoButton = (ImageView) findViewById(R.id.infoButton); infoButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent launchSettingsIntent = new Intent(GameActivity.this, InfoActivity.class); startActivity(launchSettingsIntent); } }); ImageView newGameButton = (ImageView) findViewById(R.id.newGameButton); newGameButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { newGame(); } }); // Get the steps text view stepsTextView = (TextView) findViewById(R.id.stepsTextView); // Set up a new game newGame(); }
private void newGame() { game = new Game(gameSettings.getBoardSize(), gameSettings.getNumColors()); lastColor = game.getColor(0, 0); // Add color buttons LinearLayout buttonLayout = (LinearLayout) findViewById(R.id.buttonLayout); buttonLayout.removeAllViews(); Resources resources = getResources(); for (int i = 0; i < gameSettings.getNumColors(); i++) { final int localI = i; ImageView newButton = new ImageView(this); newButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { v.startAnimation(AnimationUtils.loadAnimation(GameActivity.this, R.anim.button_anim)); if (localI != lastColor) { doColor(localI); } } }); newButton.setLayoutParams( new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT, 1.0f)); Drawable buttonDrawable = ContextCompat.getDrawable(this, R.drawable.button); buttonDrawable.setColorFilter(paints[i].getColor(), PorterDuff.Mode.SRC_ATOP); newButton.setImageDrawable(buttonDrawable); newButton.setPadding(5, 5, 5, 5); buttonLayout.addView(newButton); } stepsTextView.setText(game.getSteps() + " / " + game.getMaxSteps()); floodView.setBoardSize(gameSettings.getBoardSize()); floodView.drawGame(game); }
private void doColor(int color) { if (game.getSteps() >= game.getMaxSteps()) { return; } game.flood(color); floodView.drawGame(game); lastColor = color; stepsTextView.setText(game.getSteps() + " / " + game.getMaxSteps()); if (game.checkWin() || game.getSteps() == game.getMaxSteps()) { showEndGameActivity(); } return; }