danh8569

Android Studio Project

Sep 12th, 2020 (edited)
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 36.04 KB | None | 0 0
  1. XML:
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4.     xmlns:app="http://schemas.android.com/apk/res-auto"
  5.     xmlns:tools="http://schemas.android.com/tools"
  6.     android:layout_width="match_parent"
  7.     android:layout_height="match_parent"
  8.     android:orientation="vertical"
  9.     tools:context=".MainActivity">
  10.  
  11.     <LinearLayout
  12.         android:layout_width="match_parent"
  13.         android:layout_height="wrap_content"
  14.         android:layout_weight="0"
  15.         android:orientation="vertical">
  16.  
  17.         <LinearLayout
  18.             android:layout_width="match_parent"
  19.             android:layout_height="wrap_content"
  20.             android:layout_weight="1"
  21.             android:orientation="horizontal">
  22.  
  23.             <ImageButton
  24.                 android:id="@+id/enemy_up"
  25.                 android:layout_width="wrap_content"
  26.                 android:layout_height="40dp"
  27.                 android:layout_weight="1"
  28.                 android:background="#00000000"
  29.                 android:scaleType="centerInside"
  30.                 app:srcCompat="@drawable/enemy_arrow_up" />
  31.         </LinearLayout>
  32.  
  33.         <LinearLayout
  34.             android:layout_width="match_parent"
  35.             android:layout_height="wrap_content"
  36.             android:layout_weight="1"
  37.             android:orientation="horizontal">
  38.  
  39.             <ImageButton
  40.                 android:id="@+id/enemy_left"
  41.                 android:layout_width="wrap_content"
  42.                 android:layout_height="40dp"
  43.                 android:layout_weight="1"
  44.                 android:background="#00000000"
  45.                 android:scaleType="centerInside"
  46.                 app:srcCompat="@drawable/enemy_arrow_left" />
  47.  
  48.             <ImageButton
  49.                 android:id="@+id/enemy_right"
  50.                 android:layout_width="wrap_content"
  51.                 android:layout_height="40dp"
  52.                 android:layout_weight="1"
  53.                 android:background="#00000000"
  54.                 android:scaleType="centerInside"
  55.                 app:srcCompat="@drawable/enemy_arrow_right" />
  56.  
  57.         </LinearLayout>
  58.  
  59.         <LinearLayout
  60.             android:layout_width="match_parent"
  61.             android:layout_height="wrap_content"
  62.             android:layout_weight="1"
  63.             android:orientation="horizontal">
  64.  
  65.             <ImageButton
  66.                 android:id="@+id/enemy_down"
  67.                 android:layout_width="wrap_content"
  68.                 android:layout_height="40dp"
  69.                 android:layout_weight="1"
  70.                 android:background="#00000000"
  71.                 android:scaleType="centerInside"
  72.                 app:srcCompat="@drawable/enemy_arrow_down" />
  73.         </LinearLayout>
  74.     </LinearLayout>
  75.  
  76.     <com.example.BallBrawl.PixelGridView
  77.         android:id="@+id/pixelGridView"
  78.         android:layout_width="wrap_content"
  79.         android:layout_height="wrap_content"
  80.         android:layout_weight="1" />
  81.  
  82.     <LinearLayout
  83.         android:layout_width="match_parent"
  84.         android:layout_height="wrap_content"
  85.         android:layout_weight="0"
  86.         android:orientation="vertical">
  87.  
  88.         <LinearLayout
  89.             android:layout_width="match_parent"
  90.             android:layout_height="wrap_content"
  91.             android:layout_weight="1"
  92.             android:orientation="horizontal">
  93.  
  94.             <ImageButton
  95.                 android:id="@+id/player_up"
  96.                 style="@style/Widget.AppCompat.ImageButton"
  97.                 android:layout_width="wrap_content"
  98.                 android:layout_height="40dp"
  99.                 android:layout_weight="1"
  100.                 android:background="#00000000"
  101.                 android:scaleType="fitCenter"
  102.                 app:srcCompat="@drawable/player_arrow_up" />
  103.  
  104.         </LinearLayout>
  105.  
  106.         <LinearLayout
  107.             android:layout_width="match_parent"
  108.             android:layout_height="wrap_content"
  109.             android:layout_weight="1"
  110.             android:orientation="horizontal">
  111.  
  112.             <ImageButton
  113.                 android:id="@+id/player_left"
  114.                 android:layout_width="wrap_content"
  115.                 android:layout_height="40dp"
  116.                 android:layout_weight="1"
  117.                 android:background="#00000000"
  118.                 android:scaleType="centerInside"
  119.                 app:srcCompat="@drawable/player_arrow_left" />
  120.  
  121.             <ImageButton
  122.                 android:id="@+id/player_right"
  123.                 android:layout_width="wrap_content"
  124.                 android:layout_height="40dp"
  125.                 android:layout_weight="1"
  126.                 android:background="#00000000"
  127.                 android:scaleType="centerInside"
  128.                 app:srcCompat="@drawable/player_arrow_right" />
  129.  
  130.         </LinearLayout>
  131.  
  132.         <LinearLayout
  133.             android:layout_width="match_parent"
  134.             android:layout_height="wrap_content"
  135.             android:layout_weight="1"
  136.             android:orientation="horizontal">
  137.  
  138.             <ImageButton
  139.                 android:id="@+id/player_down"
  140.                 android:layout_width="wrap_content"
  141.                 android:layout_height="40dp"
  142.                 android:layout_weight="1"
  143.                 android:background="#00000000"
  144.                 android:scaleType="centerInside"
  145.                 app:srcCompat="@drawable/player_arrow_down" />
  146.  
  147.         </LinearLayout>
  148.  
  149.     </LinearLayout>
  150.  
  151. </LinearLayout>
  152.  
  153. MainActivity:
  154. package com.example.BallBrawl;
  155.  
  156. import androidx.annotation.NonNull;
  157. import androidx.appcompat.app.AppCompatActivity;
  158.  
  159. import android.content.pm.ActivityInfo;
  160. import android.content.res.Configuration;
  161. import android.os.Bundle;
  162. import android.view.Menu;
  163. import android.view.MenuInflater;
  164. import android.view.MenuItem;
  165. import android.view.View;
  166. import android.widget.ImageButton;
  167.  
  168. import static com.example.BallBrawl.PixelGridView.enemyDead;
  169. import static com.example.BallBrawl.PixelGridView.playerDead;
  170.  
  171. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  172.     ImageButton player_up, player_down, player_left, player_right,
  173.                 enemy_up, enemy_down, enemy_left, enemy_right;
  174.     PixelGridView pixelGridView;
  175.     boolean turn = false;
  176.  
  177.     @Override
  178.     public boolean onCreateOptionsMenu(Menu menu) {
  179.         MenuInflater inflater = getMenuInflater();
  180.         inflater.inflate(R.menu.menu, menu);
  181.         return true;
  182.     }
  183.  
  184.     @Override
  185.     public boolean onOptionsItemSelected(@NonNull MenuItem item) {
  186.         switch(item.getItemId()){
  187.             case R.id.reset:
  188.                 pixelGridView.reset();
  189.                 turn = false;
  190.                 return true;
  191.             case R.id.density1:
  192.                 pixelGridView.random(10);
  193.                 return true;
  194.             case R.id.density2:
  195.                 pixelGridView.random(6);
  196.                 return true;
  197.             case R.id.density3:
  198.                 pixelGridView.random(3);
  199.                 return true;
  200.             default:
  201.                 return super.onOptionsItemSelected(item);
  202.         }
  203.     }
  204.  
  205.     @Override
  206.     protected void onCreate(Bundle savedInstanceState) {
  207.         super.onCreate(savedInstanceState);
  208.         setContentView(R.layout.activity_main);
  209.  
  210.         player_up = findViewById(R.id.player_up);
  211.         player_down = findViewById(R.id.player_down);
  212.         player_left = findViewById(R.id.player_left);
  213.         player_right = findViewById(R.id.player_right);
  214.         enemy_up = findViewById(R.id.enemy_up);
  215.         enemy_down = findViewById(R.id.enemy_down);
  216.         enemy_left = findViewById(R.id.enemy_left);
  217.         enemy_right = findViewById(R.id.enemy_right);
  218.         pixelGridView = findViewById(R.id.pixelGridView);
  219.         pixelGridView.setDimensions(20, 20);
  220.         pixelGridView.random(10);
  221.  
  222.         player_up.setOnClickListener(this);
  223.         player_down.setOnClickListener(this);
  224.         player_left.setOnClickListener(this);
  225.         player_right.setOnClickListener(this);
  226.         enemy_up.setOnClickListener(this);
  227.         enemy_down.setOnClickListener(this);
  228.         enemy_left.setOnClickListener(this);
  229.         enemy_right.setOnClickListener(this);
  230.  
  231.     }
  232.  
  233.     @Override
  234.     public void onClick(View view) {
  235.         if(enemyDead){
  236.             turn = false;
  237.         }
  238.         if(playerDead){
  239.             turn = true;
  240.         }
  241.         if (view == player_right) {
  242.             if(!turn) {
  243.                 pixelGridView.player_goRight();
  244.                 turn = !turn;
  245.             }
  246.             else{}
  247.         }
  248.         if (view == player_left) {
  249.             if(!turn) {
  250.                 pixelGridView.player_goLeft();
  251.                 turn = !turn;
  252.             }
  253.             else{}
  254.         }
  255.         if (view == player_up) {
  256.             if(!turn) {
  257.                 pixelGridView.player_goUp();
  258.                 turn = !turn;
  259.             }
  260.             else{}
  261.         }
  262.         if (view == player_down) {
  263.             if(!turn) {
  264.                 pixelGridView.player_goDown();
  265.                 turn = !turn;
  266.             }
  267.             else{}
  268.         }
  269.         if (view == enemy_right) {
  270.             if(turn) {
  271.                 pixelGridView.enemy_goRight();
  272.                 turn = !turn;
  273.             }
  274.             else{}
  275.         }
  276.         if (view == enemy_left) {
  277.             if(turn) {
  278.                 pixelGridView.enemy_goLeft();
  279.                 turn = !turn;
  280.             }
  281.             else{}
  282.         }
  283.         if (view == enemy_up) {
  284.             if(turn) {
  285.                 pixelGridView.enemy_goUp();
  286.                 turn = !turn;
  287.             }
  288.             else{}
  289.         }
  290.         if (view == enemy_down) {
  291.             if(turn) {
  292.                 pixelGridView.enemy_goDown();
  293.                 turn = !turn;
  294.             }
  295.             else{}
  296.         }
  297.     }
  298.     @Override
  299.     public void onConfigurationChanged(Configuration newConfig) {
  300.         super.onConfigurationChanged(newConfig);
  301.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  302.     }
  303. }
  304.  
  305. PixelGridView:
  306. package com.example.BallBrawl;
  307.  
  308. import android.annotation.SuppressLint;
  309. import android.content.Context;
  310. import android.graphics.Canvas;
  311. import android.graphics.Color;
  312. import android.graphics.Paint;
  313. import android.graphics.drawable.Drawable;
  314. import android.os.Build;
  315. import android.util.AttributeSet;
  316. import android.view.MotionEvent;
  317. import android.view.View;
  318. import android.widget.Toast;
  319.  
  320. import androidx.annotation.Nullable;
  321. import androidx.annotation.RequiresApi;
  322.  
  323. import java.util.Random;
  324.  
  325. import static java.lang.Thread.sleep;
  326.  
  327. @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
  328. public class PixelGridView extends View {
  329.     private int numColumns, numRows;
  330.     private int cellWidth, cellHeight;
  331.     private Paint clearPaint = new Paint();
  332.     private Square[][] cellChecked;
  333.     private int saveI, saveJ;
  334.     private Player player;
  335.     private Enemy enemy;
  336.     private boolean init = false;
  337.     public static boolean playerDead;
  338.     public static boolean enemyDead;
  339.     Drawable edge1 = getResources().getDrawable(R.drawable.edge_top, null);
  340.     Drawable edge2 = getResources().getDrawable(R.drawable.edge_right, null);
  341.     Drawable edge3 = getResources().getDrawable(R.drawable.edge_bottom, null);
  342.     Drawable edge4 = getResources().getDrawable(R.drawable.edge_left, null);
  343.     Drawable edge5 = getResources().getDrawable(R.drawable.edge_top_left, null);
  344.     Drawable edge6 = getResources().getDrawable(R.drawable.edge_top_right, null);
  345.     Drawable edge7 = getResources().getDrawable(R.drawable.edge_bottom_right, null);
  346.     Drawable edge8 = getResources().getDrawable(R.drawable.edge_bottom_left, null);
  347.     Drawable player_ball = getResources().getDrawable(R.drawable.player_ball, null);
  348.     Drawable enemy_ball = getResources().getDrawable(R.drawable.enemy_ball, null);
  349.     Drawable block = getResources().getDrawable(R.drawable.block,null);
  350.  
  351.     public PixelGridView(Context context) {
  352.         this(context, null);
  353.     }
  354.  
  355.     public PixelGridView(Context context, @Nullable AttributeSet attrs) {
  356.         super(context, attrs);
  357.         clearPaint.setStyle(Paint.Style.FILL_AND_STROKE);
  358.         clearPaint.setColor(0);
  359.         invalidate();
  360.     }
  361.  
  362.     public void setDimensions(int numColumns, int numRows) {
  363.         this.numColumns = numColumns;
  364.         this.numRows = numRows;
  365.         calculateDimensions();
  366.     }
  367.  
  368.     public int getNumColumns() {
  369.         return numColumns;
  370.     }
  371.  
  372.     public int getNumRows() {
  373.         return numRows;
  374.     }
  375.  
  376.     @Override
  377.     protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  378.         super.onSizeChanged(w, h, oldw, oldh);
  379.         calculateDimensions();
  380.     }
  381.  
  382.     private void calculateDimensions() {
  383.         if (numColumns < 1 || numRows < 1) {
  384.             return;
  385.         }
  386.  
  387.         cellWidth = getWidth() / numColumns;
  388.         cellHeight = getWidth() / numColumns;
  389.         player = new Player(0, 0);
  390.         cellChecked = new Square[numRows][numColumns];
  391.         for (int i = 0; i < numColumns; i++) {
  392.             for (int j = 0; j < numRows; j++) {
  393.                 cellChecked[i][j] = new Square(false, i, j);
  394.                 if (i == 0 || j == 0 || i == numColumns - 1 || j == numRows - 1) {
  395.                     cellChecked[i][j].setCollidable(true);
  396.                 }
  397.             }
  398.         }
  399.  
  400.         invalidate();
  401.     }
  402.  
  403.     @Override
  404.     protected void onDraw(Canvas canvas) {
  405.         if (numColumns == 0 || numRows == 0) {
  406.             return;
  407.         }
  408.         int width = getWidth();
  409.         int height = getWidth();
  410.         if (!init) {
  411.             player_ball.setBounds(cellWidth, cellHeight,2*cellWidth,2*cellHeight);
  412.             player_ball.draw(canvas);
  413.             player = new Player(1, 1);
  414.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(true);
  415.  
  416.             enemy_ball.setBounds((numColumns-2)*cellWidth,(numRows-2)*cellHeight,(numColumns-1)*cellWidth,(numRows-1)*cellHeight);
  417.             enemy_ball.draw(canvas);
  418.             enemy = new Enemy(numColumns - 2, numRows - 2);
  419.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  420.  
  421.             for (int i = 0; i < numColumns; i++) {
  422.                 for (int j = 0; j < numRows; j++) {
  423.                     if (cellChecked[i][j].getCollidable()) {
  424.                         if (!(i == 0 || j == 0 || i == numColumns - 1 || j == numRows - 1)) {
  425.                             block.setBounds(i*cellWidth,j*cellHeight,(i+1)*cellWidth,(j+1)*cellHeight);
  426.                             block.draw(canvas);
  427.                         } else {
  428. //                            canvas.drawRect(i * cellWidth, j * cellHeight,
  429. //                                    (i + 1) * cellWidth, (j + 1) * cellHeight,
  430. //                                    grayPaint);
  431.                             if(i==0 && j==0){
  432.                                 edge5.setBounds(0,0,cellWidth,cellHeight);
  433.                                 edge5.draw(canvas);
  434.                             }
  435.                             if(i==numColumns-1 && j==0){
  436.                                 edge6.setBounds((numColumns-1)*cellWidth, 0,(numColumns)*cellWidth, cellHeight);
  437.                                 edge6.draw(canvas);
  438.                             }
  439.                             if(i==0 && j==numRows-1){
  440.                                 edge8.setBounds(0,(numRows-1)*cellHeight, cellWidth, numRows*cellHeight);
  441.                                 edge8.draw(canvas);
  442.                             }
  443.                             if(i==numColumns-1 && j==numColumns-1){
  444.                                 edge7.setBounds((numColumns-1)*cellWidth, (numRows-1)*cellHeight, numColumns*cellWidth, numRows*cellHeight);
  445.                                 edge7.draw(canvas);
  446.                             }
  447.                             if(i==1 && j==0){
  448.                                 edge1.setBounds(cellWidth, 0, (numColumns-1)*cellWidth,cellHeight);
  449.                                 edge1.draw(canvas);
  450.                             }
  451.                             if(i==0 && j==1) {
  452.                                 edge4.setBounds(0, cellHeight, cellWidth, (numRows - 1) * cellHeight);
  453.                                 edge4.draw(canvas);
  454.                             }
  455.                             if(i==numColumns-1 && j==0){
  456.                                 edge2.setBounds((numColumns-1)*cellWidth, cellHeight, numColumns*cellWidth,(numColumns-1)*cellHeight);
  457.                                 edge2.draw(canvas);
  458.                             }
  459.                             if(i==numRows-1 && j==1){
  460.                                 edge3.setBounds(cellWidth,(numRows-1)*cellHeight, (numColumns-1)*cellWidth, numRows*cellHeight);
  461.                                 edge3.draw(canvas);
  462.                             }
  463.                         }
  464.                     }
  465.                 }
  466.             }
  467.  
  468. //            for (int i = 0; i < numColumns + 1; i++) {
  469. //                canvas.drawLine(i * cellWidth, 0, i * cellWidth, height, grayPaint);
  470. //            }
  471. //
  472. //            for (int i = 0; i < numRows + 1; i++) {
  473. //                canvas.drawLine(0, i * cellHeight, width, i * cellHeight, grayPaint);
  474. //            }
  475.             init = true;
  476.         } else {
  477.  
  478.             for (int i = 0; i < numColumns; i++) {
  479.                 for (int j = 0; j < numRows; j++) {
  480.                     if (cellChecked[i][j].getCollidable()) {
  481.                         if (!(i == 0 || j == 0 || i == numColumns - 1 || j == numRows - 1)) {
  482.                             block.setBounds(i*cellWidth,j*cellHeight,(i+1)*cellWidth,(j+1)*cellHeight);
  483.                             block.draw(canvas);
  484.                         }
  485.                         else {
  486. //                            canvas.drawRect(i * cellWidth, j * cellHeight,
  487. //                                    (i + 1) * cellWidth, (j + 1) * cellHeight,
  488. //                                    grayPaint);
  489.                             if(i==0 && j==0){
  490.                                 edge5.setBounds(0,0,cellWidth,cellHeight);
  491.                                 edge5.draw(canvas);
  492.                             }
  493.                             if(i==numColumns-1 && j==0){
  494.                                 edge6.setBounds((numColumns-1)*cellWidth, 0,(numColumns)*cellWidth, cellHeight);
  495.                                 edge6.draw(canvas);
  496.                             }
  497.                             if(i==0 && j==numRows-1){
  498.                                 edge8.setBounds(0,(numRows-1)*cellHeight, cellWidth, numRows*cellHeight);
  499.                                 edge8.draw(canvas);
  500.                             }
  501.                             if(i==numColumns-1 && j==numColumns-1){
  502.                                 edge7.setBounds((numColumns-1)*cellWidth, (numRows-1)*cellHeight, numColumns*cellWidth, numRows*cellHeight);
  503.                                 edge7.draw(canvas);
  504.                             }
  505.                             if(i==1 && j==0){
  506.                                 edge1.setBounds(cellWidth, 0, (numColumns-1)*cellWidth,cellHeight);
  507.                                 edge1.draw(canvas);
  508.                             }
  509.                             if(i==0 && j==1) {
  510.                                 edge4.setBounds(0, cellHeight, cellWidth, (numRows - 1) * cellHeight);
  511.                                 edge4.draw(canvas);
  512.                             }
  513.                             if(i==numColumns-1 && j==0){
  514.                                 edge2.setBounds((numColumns-1)*cellWidth, cellHeight, numColumns*cellWidth,(numColumns-1)*cellHeight);
  515.                                 edge2.draw(canvas);
  516.                             }
  517.                             if(i==numRows-1 && j==1){
  518.                                 edge3.setBounds(cellWidth,(numRows-1)*cellHeight, (numColumns-1)*cellWidth, numRows*cellHeight);
  519.                                 edge3.draw(canvas);
  520.                             }
  521.                         }
  522.                     } else {
  523.                         canvas.drawRect(i * cellWidth, j * cellHeight,
  524.                                 (i + 1) * cellWidth, (j + 1) * cellHeight,
  525.                                 clearPaint);
  526.                     }
  527.                 }
  528.             }
  529.             /*for(int i = 1; i < numColumns-2; i++){
  530.                 for(int j = 1; j < numRows-2; j++){
  531.                     if(cellChecked[i][j].getHasPlayer()){
  532.                         canvas.drawCircle(i, j, cellWidth / 2, playerPaint);
  533.                     }
  534.                 }
  535.             }
  536.             for(int i = 1; i < numColumns-2; i++){
  537.                 for(int j = 1; j < numRows-2; j++){
  538.                     if(cellChecked[i][j].getHasEnemy()){
  539.                         canvas.drawCircle(i, j, cellWidth / 2, enemyPaint);
  540.                     }
  541.                 }
  542.             }*/
  543.  
  544.             player_ball.setBounds(player.getPosX()*cellWidth, player.getPosY()*cellHeight,(player.getPosX()+1)*cellWidth,(player.getPosY()+1)*cellHeight);
  545.             player_ball.draw(canvas);
  546.  
  547.             enemy_ball.setBounds(enemy.getPosX()*cellWidth, enemy.getPosY()*cellHeight,(enemy.getPosX()+1)*cellWidth,(enemy.getPosY()+1)*cellHeight);
  548.             enemy_ball.draw(canvas);
  549.         }
  550.     }
  551.  
  552.     @Override
  553.     public boolean onTouchEvent(MotionEvent event) {
  554.         if (event.getAction() == MotionEvent.ACTION_DOWN && event.getY() < numRows * cellHeight && event.getX() < numColumns * cellWidth && event.getY() > 0) {
  555.             int column = (int) (event.getX() / cellWidth);
  556.             saveI = column;
  557.             int row = (int) (event.getY() / cellHeight);
  558.             saveJ = row;
  559.             if (!cellChecked[column][row].getHasPlayer() && !cellChecked[column][row].getHasEnemy()) {
  560.                 if (!(column == 0 || row == 0 || column == numColumns - 1 || row == numRows - 1)) {
  561.                     cellChecked[column][row].setCollidable(!cellChecked[column][row].getCollidable());
  562.                     invalidate();
  563.                 }
  564.             }
  565.         } else if (event.getAction() == MotionEvent.ACTION_MOVE && event.getY() < numRows * cellHeight && event.getX() < numColumns * cellWidth && event.getY() > 0) {
  566.             int column = (int) (event.getX() / cellWidth);
  567.             int row = (int) (event.getY() / cellHeight);
  568.             if (column == saveI && row == saveJ) {
  569.             } else {
  570.                 if (!cellChecked[column][row].getHasPlayer() && !cellChecked[column][row].getHasEnemy()) {
  571.                     if (!(column == 0 || row == 0 || column == numColumns - 1 || row == numRows - 1)) {
  572.                         cellChecked[column][row].setCollidable(cellChecked[saveI][saveJ].getCollidable());
  573.                         invalidate();
  574.                     }
  575.                 }
  576.             }
  577.         }
  578.         return true;
  579.     }
  580.  
  581.     public void random(int num) {
  582.         for (int i = 0; i < numColumns; i++) {
  583.             for (int j = 0; j < numRows; j++) {
  584.                 if (!(i == 0 || j == 0 || i == numColumns - 1 || j == numRows - 1)) {
  585.                     cellChecked[i][j].setCollidable(false);
  586.                 }
  587.             }
  588.         }
  589.         for (int i = 0; i < numColumns; i++) {
  590.             for (int j = 0; j < numRows; j++) {
  591.                 if (!cellChecked[i][j].getHasPlayer() && !cellChecked[i][j].getHasEnemy()) {
  592.                     if (!(i == 0 || j == 0 || i == numColumns - 1 || j == numRows - 1)) {
  593.                         int random = new Random().nextInt(num) + 1;
  594.                         if (random == 1) {
  595.                             cellChecked[i][j].setCollidable(true);
  596.                         }
  597.                     }
  598.                 }
  599.             }
  600.         }
  601.         invalidate();
  602.     }
  603.  
  604.     public void reset() {
  605.         for (int i = 0; i < numColumns; i++) {
  606.             for (int j = 0; j < numRows; j++) {
  607.                 if (!(i == 0 || j == 0 || i == numColumns - 1 || j == numRows - 1)) {
  608.                     cellChecked[i][j].setCollidable(false);
  609.                 }
  610.             }
  611.         }
  612.         if(playerDead)
  613.             revivePlayer(player);
  614.         if(enemyDead)
  615.             reviveEnemy(enemy);
  616.         init = false;
  617.         invalidate();
  618.     }
  619.  
  620.  
  621.     public void player_goRight() {
  622.         if(!player_eat(2)) {
  623.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(false);
  624.             while (!cellChecked[player.getPosX() + 1][player.getPosY()].getCollidable()) {
  625.                 player.setPosX(player.getPosX() + 1);
  626.                 eatEnemy();
  627.                 invalidate();
  628.             }
  629.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(true);
  630.         }
  631.     }
  632.  
  633.     public void player_goLeft() {
  634.         if(!player_eat(3)) {
  635.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(false);
  636.             while (!cellChecked[player.getPosX() - 1][player.getPosY()].getCollidable()) {
  637.                 player.setPosX(player.getPosX() - 1);
  638.                 eatEnemy();
  639.                 invalidate();
  640.             }
  641.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(true);
  642.         }
  643.     }
  644.  
  645.     public void player_goUp() {
  646.         if(!player_eat(0)) {
  647.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(false);
  648.             while (!cellChecked[player.getPosX()][player.getPosY() - 1].getCollidable()) {
  649.                 player.setPosY(player.getPosY() - 1);
  650.                 eatEnemy();
  651.                 invalidate();
  652.             }
  653.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(true);
  654.         }
  655.     }
  656.  
  657.     public void player_goDown() {
  658.         if(!player_eat(1)) {
  659.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(false);
  660.             while (!cellChecked[player.getPosX()][player.getPosY() + 1].getCollidable()) {
  661.                 player.setPosY(player.getPosY() + 1);
  662.                 eatEnemy();
  663.                 invalidate();
  664.             }
  665.             cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(true);
  666.         }
  667.     }
  668.  
  669.     public void enemy_goRight() {
  670.         if(!enemy_eat(2)) {
  671.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  672.             while (!cellChecked[enemy.getPosX() + 1][enemy.getPosY()].getCollidable()) {
  673.                 enemy.setPosX(enemy.getPosX() + 1);
  674.                 eatPlayer();
  675.                 invalidate();
  676.             }
  677.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  678.         }
  679.     }
  680.  
  681.     public void enemy_goLeft() {
  682.         if (!enemy_eat(3)) {
  683.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  684.             while (!cellChecked[enemy.getPosX() - 1][enemy.getPosY()].getCollidable()) {
  685.                 enemy.setPosX(enemy.getPosX() - 1);
  686.                 eatPlayer();
  687.                 invalidate();
  688.             }
  689.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  690.         }
  691.     }
  692.  
  693.     public void enemy_goUp() {
  694.         if(!enemy_eat(0)) {
  695.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  696.             while (!cellChecked[enemy.getPosX()][enemy.getPosY() - 1].getCollidable()) {
  697.                 enemy.setPosY(enemy.getPosY() - 1);
  698.                 eatPlayer();
  699.                 invalidate();
  700.             }
  701.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  702.         }
  703.     }
  704.  
  705.     public void enemy_goDown() {
  706.         if (!enemy_eat(1)) {
  707.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  708.             while (!cellChecked[enemy.getPosX()][enemy.getPosY() + 1].getCollidable()) {
  709.                 enemy.setPosY(enemy.getPosY() + 1);
  710.                 eatPlayer();
  711.                 invalidate();
  712.             }
  713.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  714.         }
  715.     }
  716.  
  717.     public boolean player_eat(int num) {
  718.         if (num == 0) {
  719.             if (cellChecked[player.getPosX()][player.getPosY() - 1].getsPosY() != 0 && cellChecked[player.getPosX()][player.getPosY() - 1].getCollidable()) {
  720.                 cellChecked[player.getPosX()][player.getPosY() - 1].setCollidable(false);
  721.                 invalidate();
  722.                 return true;
  723.             }
  724.         } else if (num == 1) {
  725.             if (cellChecked[player.getPosX()][player.getPosY() + 1].getsPosY() != numRows - 1 && cellChecked[player.getPosX()][player.getPosY() + 1].getCollidable()) {
  726.                 cellChecked[player.getPosX()][player.getPosY() + 1].setCollidable(false);
  727.                 invalidate();
  728.                 return true;
  729.             }
  730.         } else if (num == 2) {
  731.             if (cellChecked[player.getPosX() + 1][player.getPosY()].getsPosX() != numColumns - 1 && cellChecked[player.getPosX() + 1][player.getPosY()].getCollidable()) {
  732.                 cellChecked[player.getPosX() + 1][player.getPosY()].setCollidable(false);
  733.                 invalidate();
  734.                 return true;
  735.             }
  736.         } else if (num == 3) {
  737.             if (cellChecked[player.getPosX() - 1][player.getPosY()].getsPosX() != 0 && cellChecked[player.getPosX() - 1][player.getPosY()].getCollidable()) {
  738.                 cellChecked[player.getPosX() - 1][player.getPosY()].setCollidable(false);
  739.                 invalidate();
  740.                 return true;
  741.             }
  742.         }
  743.         return false;
  744.     }
  745.  
  746.     public boolean enemy_eat(int num) {
  747.         if (num == 0) {
  748.             if (cellChecked[enemy.getPosX()][enemy.getPosY() - 1].getsPosY() != 0 && cellChecked[enemy.getPosX()][enemy.getPosY() - 1].getCollidable()) {
  749.                 cellChecked[enemy.getPosX()][enemy.getPosY() - 1].setCollidable(false);
  750.                 invalidate();
  751.                 return true;
  752.             }
  753.         } else if (num == 1) {
  754.             if (cellChecked[enemy.getPosX()][enemy.getPosY() + 1].getsPosY() != numRows - 1 && cellChecked[enemy.getPosX()][enemy.getPosY() + 1].getCollidable()) {
  755.                 cellChecked[enemy.getPosX()][enemy.getPosY() + 1].setCollidable(false);
  756.                 invalidate();
  757.                 return true;
  758.             }
  759.         } else if (num == 2) {
  760.             if (cellChecked[enemy.getPosX() + 1][enemy.getPosY()].getsPosX() != numColumns - 1 && cellChecked[enemy.getPosX() + 1][enemy.getPosY()].getCollidable()) {
  761.                 cellChecked[enemy.getPosX() + 1][enemy.getPosY()].setCollidable(false);
  762.                 invalidate();
  763.                 return true;
  764.             }
  765.         } else if (num == 3) {
  766.             if (cellChecked[enemy.getPosX() - 1][enemy.getPosY()].getsPosX() != 0 && cellChecked[enemy.getPosX() - 1][enemy.getPosY()].getCollidable()) {
  767.                 cellChecked[enemy.getPosX() - 1][enemy.getPosY()].setCollidable(false);
  768.                 invalidate();
  769.                 return true;
  770.             }
  771.         }
  772.         return false;
  773.     }
  774.  
  775.     public void eatEnemy(){
  776.         if(cellChecked[player.getPosX()][player.getPosY()] == cellChecked[enemy.getPosX()][enemy.getPosY()]){
  777.             killEnemy(enemy);
  778.         }
  779.     }
  780.  
  781.     public void eatPlayer(){
  782.         if(cellChecked[enemy.getPosX()][enemy.getPosY()] == cellChecked[player.getPosX()][player.getPosY()]){
  783.             killPlayer(player);
  784.         }
  785.     }
  786.  
  787.     public void killEnemy(Enemy enemy){
  788.         Toast.makeText(getContext(), "enemy ded lol", Toast.LENGTH_SHORT).show();
  789.         cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  790.         enemy_ball.setAlpha(0);
  791.         enemy.setPosX(0);
  792.         enemy.setPosY(0);
  793.         enemyDead = true;
  794.         invalidate();
  795.     }
  796.  
  797.     public void killPlayer(Player player){
  798.         Toast.makeText(getContext(), "player ded lol", Toast.LENGTH_SHORT).show();
  799.         cellChecked[player.getPosX()][player.getPosY()].setHasPlayer(false);
  800.         player_ball.setAlpha(0);
  801.         player.setPosX(0);
  802.         player.setPosY(0);
  803.         playerDead = true;
  804.         invalidate();
  805.     }
  806.  
  807.     public void revivePlayer(Player player){
  808.         Toast.makeText(getContext(), "player alive now", Toast.LENGTH_SHORT).show();
  809.         player_ball.setAlpha(255);
  810.         playerDead = false;
  811.     }
  812.  
  813.     public void reviveEnemy(Enemy enemy){
  814.         Toast.makeText(getContext(), "enemy alive now", Toast.LENGTH_SHORT).show();
  815.         enemy_ball.setAlpha(255);
  816.         enemyDead = false;
  817.     }
  818.  
  819.     /*public void enemyMove(){
  820.         int random = new Random().nextInt(4);
  821.         //Toast.makeText(getContext(), random+"", Toast.LENGTH_SHORT).show();
  822.         switch (random){
  823.             case 0://up
  824.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  825.                 while (!cellChecked[enemy.getPosX()][enemy.getPosY() - 1].getCollidable()) {
  826.                     enemy.setPosY(enemy.getPosY() - 1);
  827.                     invalidate();
  828.                 }
  829.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  830.                 break;
  831.             case 1: //down
  832.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  833.                 while (!cellChecked[enemy.getPosX()][enemy.getPosY() + 1].getCollidable()) {
  834.                     enemy.setPosY(enemy.getPosY() + 1);
  835.                     invalidate();
  836.                 }
  837.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  838.                 break;
  839.             case 2: //right
  840.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  841.                 while (!cellChecked[enemy.getPosX() + 1][enemy.getPosY()].getCollidable()) {
  842.                     enemy.setPosY(enemy.getPosX() + 1);
  843.                     invalidate();
  844.                 }
  845.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  846.                 break;
  847.             case 3: //left
  848.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  849.                 while (!cellChecked[enemy.getPosX() - 1][enemy.getPosY()].getCollidable()) {
  850.                     enemy.setPosY(enemy.getPosX() - 1);
  851.                     invalidate();
  852.                 }
  853.                 cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  854.                 break;
  855.             default:
  856.                 break;
  857.             }
  858.         }*/
  859.  
  860.     /*public void enemyMove(){
  861.         int random = new Random().nextInt(4);
  862.         //Toast.makeText(getContext(), random+"", Toast.LENGTH_SHORT).show();
  863.         if(random == 0){ //up
  864.             //Toast.makeText(getContext(), "up", Toast.LENGTH_SHORT).show();
  865.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  866.             while (!cellChecked[enemy.getPosX()][enemy.getPosY() - 1].getCollidable()) {
  867.                 enemy.setPosY(enemy.getPosY() - 1);
  868.                 invalidate();
  869.             }
  870.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  871.         }
  872.         else if(random == 1){ //down
  873.             //Toast.makeText(getContext(), "down", Toast.LENGTH_SHORT).show();
  874.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  875.             while (!cellChecked[enemy.getPosX()][enemy.getPosY() + 1].getCollidable()) {
  876.                 enemy.setPosY(enemy.getPosY() + 1);
  877.                 invalidate();
  878.             }
  879.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  880.         }
  881.         else if(random == 2){ //right
  882.             //Toast.makeText(getContext(), "right", Toast.LENGTH_SHORT).show();
  883.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  884.             while (!cellChecked[enemy.getPosX() + 1][enemy.getPosY()].getCollidable()) {
  885.                 enemy.setPosY(enemy.getPosX() + 1);
  886.                 invalidate();
  887.             }
  888.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  889.         }
  890.         else if(random == 3){ //left
  891.             //Toast.makeText(getContext(), "left", Toast.LENGTH_SHORT).show();
  892.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(false);
  893.             while (!cellChecked[enemy.getPosX() - 1][enemy.getPosY()].getCollidable()) {
  894.                 enemy.setPosY(enemy.getPosX() - 1);
  895.                 invalidate();
  896.             }
  897.             cellChecked[enemy.getPosX()][enemy.getPosY()].setHasEnemy(true);
  898.         }
  899.         else{Toast.makeText(getContext(), "how", Toast.LENGTH_SHORT).show();}
  900.     }*/
  901. }
  902.  
  903.  
  904.  
Add Comment
Please, Sign In to add comment