オブジェクト指向設計の原理がよくわからない?? だから私はクラスを持っています
Map クラスは部屋を保持し、すべての部屋を接続し、すべてのハザードを部屋にランダムに配置し、粒子の部屋を返し、ランダムな部屋を返します。
と
ターンをプレイし、プレーヤーを部屋から別の部屋に移動し、部屋に撃ち込み、ゲームをプレイするプレーヤー クラス。
また
ルームクラスは以下の通り。
import java.util.ArrayList;
public class Room
{
private int myRoomID;
private ArrayList<Room> myNeighbours;
private boolean myHasBats;
private boolean myHasPit;
private boolean myHasWumpus;
public Room(int id) {
myRoomID = id;
myNeighbours = new ArrayList<Room>();
}
public int getRoomID() {
return myRoomID;
}
public ArrayList<Room> getNeighbours() {
return myNeighbours;
}
public void connectTo(Room room) {
myNeighbours.add(room);
}
public boolean hasBats() {
return myHasBats;
}
public void setHasBats(boolean flag) {
myHasBats = flag;
}
public boolean hasPit() {
return myHasPit;
}
public void setHasPit(boolean flag) {
myHasPit = flag;
}
public boolean hasWumpus() {
return myHasWumpus;
}
public void setHasWumpus(boolean flag) {
myHasWumpus = flag;
}
public void checkBats() {
boolean bats = false;
for (Room r : myNeighbours) {
if (r.hasBats()) {
bats = true;
}
}
if (bats) {
System.out.println("I hear squeaking!");
}
}
public void checkPit() {
boolean pit = false;
for (Room r : myNeighbours) {
if (r.hasPit()) {
pit = true;
}
}
if (pit) {
System.out.println("I feel a draft!");
}
}
public void checkWumpus() {
boolean wumpus = false;
for (Room r : myNeighbours) {
if (r.hasWumpus()) {
wumpus = true;
}
}
if (wumpus) {
System.out.println("I smell a wumpus!");
}
}
public boolean enter(Player player) {
System.out.println("You are in Room " + myRoomID);
System.out.print("Exits lead to rooms");
for (Room r : myNeighbours) {
System.out.print(" " + r.getRoomID());
}
System.out.println();
checkBats();
checkPit();
checkWumpus();
if (myHasBats) {
System.out.println("A flock of bats picks you up and carries you off to another room!");
return player.moveRandom();
}
else if (myHasPit) {
System.out.println("You fall into a bottomless pit!");
return true;
}
else if (myHasWumpus) {
System.out.println("You have been eaten by a wumpus!");
return true;
}
return false;
}
public boolean shoot()
if (myHasWumpus) {
System.out.println("You killed the Wumpus!");
return true;
}
else {
System.out.println("Your arrow falls with a clatter to the floor!");
return false;
}
}
そして、これを変更して、wumpus を殺すには複数回撃たなければならない (何回か選択する) 必要があるようにします。撃たれるたびに、ランダムな隣の部屋 (プレイヤーがいる部屋ではありません) に移動します。
public boolean shoot()
メソッドをループに変更して、以下のように呼び出す必要があると想定してpublic Room getRandomRoom()
います。
しかし、特にブールメソッドの使用は私にとって非常に混乱しているため、これを行う方法が本当にわかりません。オブジェクト指向設計の基本を学ぶための情報がどこにあるか知っている人はいますか?
public Room getRandomRoom() {
Random rng = new Random();
int i = rng.nextInt(Map.NUM_ROOMS);
return myRooms.get(i);
}
後で、implements
すべてのハザードをクラスに分けるためにクラスで使用します。しかし、それらはすべて Map および Room クラスに含まれているわけではありません。