=====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();
}
}
}
==================================================
แมวสามารเดินไปจับหนูและมีคะแนนขึ้นแล้ว แต่หนูยังเดินไม่ได้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น