mmayoub

NumbersPuzle, MainActivity.java, 02.10.2021

Oct 2nd, 2021 (edited)
1,348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.12 KB | None | 0 0
  1. package com.example.mynumberspuzzle;
  2.  
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.TextView;
  9. import android.widget.Toast;
  10.  
  11. import androidx.appcompat.app.AppCompatActivity;
  12.  
  13. public class MainActivity extends AppCompatActivity {
  14.     Puzzle myPuzzle;
  15.     TextView tvMovesCount;
  16.     Button[][] btnsBoard;
  17.  
  18.     int rows;
  19.     int cols;
  20.  
  21.     @Override
  22.     protected void onCreate(Bundle savedInstanceState) {
  23.         super.onCreate(savedInstanceState);
  24.         setContentView(R.layout.activity_main);
  25.  
  26.  
  27.         Intent intent = getIntent();
  28.         rows = intent.getIntExtra("ROWS_COUNT", 4);
  29.         cols = intent.getIntExtra("COLS_COUNT", 4);
  30.  
  31.         // Todo make code for general size
  32.         myPuzzle = new Puzzle(rows, cols);
  33.         btnsBoard = new Button[myPuzzle.getRows()][myPuzzle.getCols()];
  34.  
  35.         tvMovesCount = findViewById(R.id.tvMovesCount);
  36.         for (int r = 0; r < myPuzzle.getRows(); r++) {
  37.             for (int c = 0; c < myPuzzle.getCols(); c++) {
  38.                 int id = getResources().getIdentifier("button" + r + c, "id", getPackageName());
  39.                 Log.d("debug-id", id + "");
  40.                 btnsBoard[r][c] = findViewById(id);
  41.             }
  42.         }
  43.  
  44.         restart();
  45.     }
  46.  
  47.     private void restart() {
  48.         myPuzzle.restart();
  49.  
  50.         // display puzzle on screen
  51.         tvMovesCount.setText(myPuzzle.getMovesCount() + "");
  52.         for (int r = 0; r < myPuzzle.getRows(); r++) {
  53.             for (int c = 0; c < myPuzzle.getCols(); c++) {
  54.                 btnsBoard[r][c].setText("" + myPuzzle.getBoard()[r][c]);
  55.                 btnsBoard[r][c].setVisibility(View.VISIBLE);
  56.             }
  57.         }
  58.  
  59.         btnsBoard[myPuzzle.getBlankRow()][myPuzzle.getBlankCol()].setVisibility(View.INVISIBLE);
  60.     }
  61.  
  62.     public void handleClick(View view) {
  63.         int clickedId = view.getId();
  64.         int clickedRow = 0, clickedCol = 0;
  65.  
  66.         for (int r = 0; r < myPuzzle.getRows(); r++) {
  67.             for (int c = 0; c < myPuzzle.getCols(); c++) {
  68.                 if (clickedId == btnsBoard[r][c].getId()) {
  69.                     clickedRow = r;
  70.                     clickedCol = c;
  71.                 }
  72.             }
  73.         }
  74.  
  75.         if (myPuzzle.move(clickedRow, clickedCol)) {
  76.             for (int r = 0; r < myPuzzle.getRows(); r++) {
  77.                 for (int c = 0; c < myPuzzle.getCols(); c++) {
  78.                     btnsBoard[r][c].setText("" + myPuzzle.getBoard()[r][c]);
  79.                     btnsBoard[r][c].setVisibility(View.VISIBLE);
  80.                 }
  81.             }
  82.  
  83.             btnsBoard[myPuzzle.getBlankRow()][myPuzzle.getBlankCol()].setVisibility(View.INVISIBLE);
  84.             btnsBoard[myPuzzle.getBlankRow()][myPuzzle.getBlankCol()].setVisibility(View.INVISIBLE);
  85.  
  86.             tvMovesCount.setText(myPuzzle.getMovesCount() + "");
  87.         }
  88.  
  89.         if (myPuzzle.isGameOver()) {
  90.             Toast.makeText(this, "You win", Toast.LENGTH_LONG).show();
  91.         }
  92.         if (myPuzzle.getMovesCount() == 0) {
  93.             restart();
  94.         }
  95.     }
  96. }
Add Comment
Please, Sign In to add comment