java龟兔赛跑设计思路_JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑
1.烏龜和兔子共有屬性和方法 做成父類 避免重復代碼
package com.lovo;
/**
* 類: 動物
* @author Abe
* 屬性: 名字 步距 總距離 睡覺的日子
*/
public class Animal {
protected String name;
protected int step;
protected int distance;
protected int sleepDay;
/**
* 構造器
* @param name
*/
public Animal(String name) {
this.name = name;
}
public Animal(){
}
/**
* 方法:獲取 名字 行走長度 休息的天數 設置總距離 設置休息天數
* @return
*/
public String getName() {
return name;
}
public int getStep() {
return step;
}
public int getDistance(){
return distance;
}
public int getSleepDay() {
return sleepDay;
}
public void setDistance(int dis) {
this.distance += dis;
}
public void setSleepDay(int slp) {
this.sleepDay += slp;
}
}
2.類:烏龜
package com.lovo;
/**
* 類 : 烏龜
* @author Abe
* 父類:Animal
* 屬性:疲勞的日期
*/
public class Tortoise extends Animal {
private int encourageDay;
/**
* 構造器
* @param name
*/
public Tortoise(String name) {
super(name);
}
/**
* 方法: 走路,每次2~4米
*/
public void walk() {
if (encourageDay == 0 && sleepDay == 0) {
step = (int) (Math.random() * 3 + 2);
}
}
/**
* 方法:30%鼓勵 ,之后3天每天可以走雙倍的路程,但是之后的第4天只能休息。
*/
public void encourage() {
if (encourageDay == 0 && sleepDay == 0 && Math.random() >= 0.7) {
step = (int) (Math.random() * 3 + 2) * 2;
encourageDay = 3;
sleepDay = 1;
}
}
/**
* 方法: 調用、設置 激勵天數
*
* @return
*/
public int getEncourageDay() {
return encourageDay;
}
public void setEncourageDay(int enc) {
this.encourageDay += enc;
}
/**
* 方法:每天的行動 1.沒激勵不睡覺 就看是否發動技能 沒發動就普通移動 2.有激勵就激勵移動 沒激勵有睡覺就睡覺
* @return 每天活動的結果
*/
public String everyDay() {
if (this.getEncourageDay() == 0 && this.getSleepDay() == 0) {
this.encourage();
if (this.getEncourageDay() > 0) {
this.setDistance(this.getStep());
return this.getName() + "發動了技能《底力》,瘋狂的向前跑出了" + this.getStep()+ "米!!";
} else {
this.walk();
this.setDistance(this.getStep());
return this.getName() + "跑了" + this.getStep() + "米!";
}
} else if (this.getEncourageDay() != 0) {
this.setDistance(this.getStep());
this.setEncourageDay(-1);
return this.getName() + "的《底力》持續中,它瘋狂的向前跑出了" + this.getStep()+ "米!!";
} else {
this.setDistance(0);
this.setSleepDay(-1);
return this.getName() + "美美的睡了一覺~";
}
}
}
3.類:兔子
package com.lovo;
/**
* 類:兔子
* @author Abe
* 父類:Animal
*/
public class Rabbit extends Animal {
/**
* 構造器
*/
public Rabbit(String name) {
super(name);
}
/**
* 方法:跑步 每次可以跑1~16, 但是一次跑步超過6就要休息1天,超過11就要休息2天
*/
public void run() {
step = (int) (Math.random() * 16 + 1);
if (step >= 11) {
sleepDay = 2;
} else if (step >= 6) {
sleepDay = 1;
}
}
/**
* 方法:沒睡覺就跑步
*/
public String everyDay(){
if(this.getSleepDay() == 0 ){
this.run();
this.setDistance(this.getStep());
if (this.getStep() >= 11) {
return this.getName() + "不可思議的跑出了" + this.getStep()
+ "米!!!~ 它累的不得不休息兩天……";
}else if(this.getStep() >= 6){
return this.getName() + "驚人的跑出了" + this.getStep()
+ "米!!~ 它累的不得不休息一天……";
}else{
return this.getName() + "跑了" + this.getStep()
+ "米!";
}
}else{
this.setDistance(0);
this.setSleepDay(-1);
return this.getName() + "懶洋洋的睡了一覺~~";
}
}
}
4.開始賽跑吧~~:)
package com.lovo;
/**
* 開始比賽跑步 先跑完100米獲勝
* @author Abe
*/
public class Running {
public static void main(String[] args) {
Tortoise tor = new Tortoise("小烏龜");
Rabbit rab = new Rabbit("小兔子");
for(int distance = 100 , day = 1 ;tor.getDistance() < 100 && rab.getDistance() < 100 ;day++ ){
System.out.println("-----------第" + day + "天-----------");
System.out.println(tor.everyDay());
System.out.println(rab.everyDay());
if(tor.getDistance() >= 100 && rab.getDistance() >= 100){
System.out.println("怎么回事?!" + tor.getName() + rab.getName() + "同時沖過了終點!! 居然是平局");
}else if(tor.getDistance() >= 100){
System.out.println(tor.getName() +"取得了勝利!");
}else if(rab.getDistance() >= 100){
System.out.println(rab.getName() +"取得了勝利!");
}else{
System.out.println(tor.getName() + "一共跑了"+ tor.getDistance() + "米!");
System.out.println(rab.getName() + "一共跑了"+ rab.getDistance() + "米!");
}
}
}
}
總結
以上是生活随笔為你收集整理的java龟兔赛跑设计思路_JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ie有滚动条怎么设置(ie浏览器滚动条设
- 下一篇: 离婚了怎么走出来(怎样做才能从离婚的痛苦