วันเสาร์ที่ 3 พฤศจิกายน พ.ศ. 2561

CAT & RAT [java Update]

Commit : https://bitbucket.org/Wanvipa/catandrat/commits/91b214fe8f3f873390bd73d385484f50402240f6


=====class board=====
          แก้ไขฟังก์ชัน setBoard ให้นำค่า C มาใส่ลงใน ตำแหน่งและอัพเดทบอร์ดใหม่
public class Board {
int row;
int col;
private char board[][];
char player = 'C';

         public Board (int row,int col) {
             this.row = row;
              this.col = col;
              this.board= new char[this.row][this.col];
  }
   
        public char getBoard(int row,int col) {
              return this.board[row][col];       
             }

        public void setBoard(char C_or_R,int row,int col) {
              if(player == C_or_R) this.board= new char[this.row][this.col];
              this.board[row][col] = C_or_R ;   
                 }
    }

=====class display=====
            เพิ่มส่วนการแสดงคะแนน

public class Display {
private Board board;
private CheckCatch check_catch;

public Display(Board board , CheckCatch check_catch) {
this.board = board;
this.check_catch = check_catch;
}
   
    public void display() {
// show board
    for (int i = 0; i < this.board.row; i++) {
for (int j = 0; j < this.board.col; j++) {
                           System.out.print(this.board.getBoard(i,j)+"|");
                         }
                   System.out.println();           
                 }
                 //print score
                 System.out.println("Score : "+this.check_catch.score);
}

}

=====class Cat=====
            เก็บตำแหน่งของแมว และ รับ row และ column มาใส่ใน move เพื่อให้แมวเกิดการเคลื่อนที่

public class Cat {
private Board board;
int row = 0;
int col = 0;

public Cat(Board board) {
this.board = board;
    }

public void pos() {
this.board.setBoard(this.board.player, row, col);
    }
public void move(int row , int col) {
this.board.setBoard(this.board.player,row,col);
    }
}

=====class Input=====
            รับค่า ตัวเลข 2 4 6 และ 8 มากำหนดทิศทางการเดินของแมว โดย
2 คือ เดินลง
4 คือ เดินไปทางซ้าย
6 คือ เดินไปทางขวา
8 คือ เดินขึ้น

แล้วส่งค่าไปเปลี่ยน row และ column ของ Cat

import java.util.Scanner;
public class InputPOS {
private Board board;
private Cat cat;

public InputPOS(Board board, Cat cat) {
this.board = board;
this.cat = cat;
}

public void key() {
Scanner inPlayer = new Scanner(System.in);
System.out.print( "Turn "+this.board.player + " move : ");
int move = inPlayer.nextInt();
System.out.println();

if(move == 8)this.cat.row -= 1;
else if(move == 2)this.cat.row += 1;
else if(move == 4)this.cat.col -= 1;
else if(move == 6)this.cat.col += 1;
this.cat.move(this.cat.row,this.cat.col);
}
}

=====class Rat=====
           กำหนดให้หนูเกิดมาที่ตำแหน่ง row=2,column=2
           ถ้ามีหนูอยู่ในตารางแล้วไม่ต้องสร้างหนูตัวใหม่
           ถ้าในตารางไม่มีหนูอยู่ ให้สุ่มหนูมาเกิด ณ ตำแหน่งใดๆ ในบอร์ด

import java.util.*; 
public class Rat {
private Board board;
private boolean run_random;
private CheckCatch check_catch;
int nxtr = 2;
int nxtc = 2;

public Rat(Board board, CheckCatch check_catch){
this.board = board;
this.check_catch = check_catch;
       }
        //ตำแหน่งเกิด
public void pos() {
this.board.setBoard('R' , nxtr, nxtc);
        }

public void randomRat(){
run_random = true;
    Random ran_r = new Random(); 
    Random ran_c = new Random();
    
        if(run_random == true && this.check_catch.check(nxtr, nxtc) == false)
this.board.setBoard('R',nxtr,nxtc);    
while(run_random) {
            for(int i = 0 ; i < this.board.row ; i++) {
            for(int j = 0 ; j < this.board.col ; j++) {
           if(this.board.getBoard(i, j) == 'R') {
           run_random = false;
            }
//ถ้าไม่มีหนู ให้สุ่มตำแหน่ง row,column ใหม่ขึ้นมาให้หนู
else if ((i+1)*(j+1) == this.board.row*this.board.col && 
                                                 run_random == true) { 
            nxtr = ran_r.nextInt(this.board.row); 
            nxtc = ran_c.nextInt(this.board.col);
            this.board.setBoard('R',nxtr,nxtc);
    }
             }
    
 }
}        
 }
}

=====class check catch=====
            ตรวจสอบตำแหน่งแมวและหนู ถ้าตำแหน่งตรงกันให้บวกคะแนนเพิ่มและนำหนูออกจากบอร์ดให้เหลือไว้เพียงแมว

public class CheckCatch {
private Cat cat;
int score = 0;

public CheckCatch(Cat cat){
this.cat = cat;
}

public boolean check(int rat_row, int rat_col) {
if(this.cat.row == rat_row && this.cat.col == rat_col) {
score++;
return true;
}
else return false;
}
}

=====class Main=====
           เรียกใช้ class ต่างๆ

public class Main {
public static void main(String[] args) {
Board board = new Board(5,5);
Cat cat = new Cat(board);
InputPOS input = new InputPOS(board,cat);
CheckCatch check_catch = new CheckCatch(cat);
Display show = new Display(board,check_catch);
Rat rat = new Rat(board,check_catch);
cat.pos();
rat.pos();

while(true) {
show.display();
input.key();
rat.randomRat();

}
}
}

               ==================================================

แมวสามารเดินไปจับหนูและมีคะแนนขึ้นแล้ว แต่หนูยังเดินไม่ได้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น