我正在做一個項目使用面向對象的編程,我沿着一個水平球場比賽烏龜和野兔。我見過其他版本使用小程序和swing,但我還沒有被介紹給那些,所以我寧願留在更簡單的圖形。野兔烏龜種族視覺顯示
每隻動物都有一組動作發生在百分之x的時間(稍後我會詳細說明)。對於野兔,有五種方法:BigHop() - 向右移動9個方塊,SmallHop() - 向右移動1個方塊,BigSlip() - 向左移動12個方塊,SmallSlip() - 剩下2個方塊和FallAsleep() - 根本沒有活動。現在,「最左邊」的位置是1,所以如果兔子在第6平方米,大滑動仍然只會回到1.(不是-6)
對於烏龜,有三種方法:FastPlod() - 右邊3個方格,SlowPlod() - 右邊1個方格,以及Slip() - 同樣的規則適用於單據,剩下6個方格。
到目前爲止,該計劃包含野兔類,龜類和Race類。
這裏是野兔類:
public class Hare {
private int position;
public void setPosition(int s){
position = s;
}
public int getPosition(){
return position;
}
public void BigHop(){
position += 9;
}
public void SmallHop(){
position += 1;
}
public void BigSlip(){
if (position > 12){
position -= 12;
}
else{
position = 1;
}
}
public void SmallSlip(){
if (position > 2){
position -= 2;
}
else{
position = 1;
}
}
public void FallAsleep(){
position = position;
}
}
烏龜類:
public class Tortoise {
private int position;
public void setPosition(int s){
position = s;
}
public int getPosition(){
return position;
}
public void FastPlod(){
position += 3;
}
public void SlowPlod(){
position += 1;
}
public void Slip(){
if (position > 6){
position -= 6;
}
else{
position = 1;
}
}
}
比賽類實際上執行了比賽。
public class Race {
public static void main(String[] args){
Hare myHare = new Hare();
Tortoise myTortoise = new Tortoise();
myHare.setPosition(1);
myTortoise.setPosition(1);
System.out.println("AND THEY'RE OFF!!");
while (myHare.getPosition() > 0){
int n = (int)(Math.random()*10);
switch (n){
case 1:
myHare.BigHop();
myTortoise.FastPlod();
case 2:
myHare.BigHop();
myTortoise.FastPlod();
case 3:
myHare.SmallHop();
myTortoise.FastPlod();
case 4:
myHare.SmallHop();
myTortoise.FastPlod();
case 5:
myHare.SmallHop();
myTortoise.FastPlod();
case 6:
myHare.BigSlip();
myTortoise.SlowPlod();
case 7:
myHare.SmallSlip();
myTortoise.SlowPlod();
case 8:
myHare.SmallSlip();
myTortoise.SlowPlod();
case 9:
myHare.FallAsleep();
myTortoise.Slip();
case 10:
myHare.FallAsleep();
myTortoise.Slip();
}
if (myHare.getPosition() == myTortoise.getPosition()){
System.out.println("OUCH!!");
}
if (myHare.getPosition() == 50 | myTortoise.getPosition() == 50){
if (myHare.getPosition() == 50){
System.out.println("HARE WINS!!");
break;
}
else{
if (myHare.getPosition() == myTortoise.getPosition()){
System.out.println("IT'S A TIE!!");
break;
}
else{
System.out.println("TORTOISE WINS!!");
break;
}
}
}
}
該邏輯本身的作品。比賽的方式是在賽道上有五十個空間(賽道本身沒有圖形化,這是我遇到的麻煩)。每個動物的動作都是使用switch
構造隨機執行的。例如,30%的時間,烏龜會SlowPlod()。
僅僅因爲有這麼多的滑倒,我們需要一段時間才能跑步,但最終我會得到一個勝利者(通常是烏龜)。所以,邏輯本身起作用。
但是,現在這是我顯示只能輸出:
AND THEY'RE OFF!! TORTOISE WINS!!
這是當然的,沒有所有的數百個「哎喲!」當這兩隻動物分享相同的位置時發生。所以我希望能夠在50個空間的軌道上顯示兩個動物的位置。我曾想過在每個空間都使用'_',但我不確定如何編碼烏龜或野兔的運動。
例如,一個可能的輸出會是這樣的:
_ _ _ _ _ _ _ _ T _ _ _ _ _ _ _ _ _ _ _ H _ _ _
OUCH!!
我只是不知道如何構建一個這樣的跟蹤和碼T的移動和H.
我會很感激任何幫助。
對不起,如果我的大寫弄亂了突出顯示。對Java仍然陌生。 – LightFlicker