我正在做一个项目使用面向对象的编程,我沿着一个水平球场比赛乌龟和野兔。我见过其他版本使用小程序和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