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)-----面对对象设计初级应用 龟兔赛跑相关推荐

  1. java奥特曼对战小怪兽_JAVA程序设计(09)-----面对对象设计初级应用 奥特曼打小怪兽...

    1.一个奥特曼固定属性 4个小怪兽随机名字 随机属性 奥特曼有几率发动暴风雪技能 对所有小怪兽造成 50%~60%冰霜伤害 无视防御力 普通攻击伤害为 攻击力*80~120% - 对方防御力*60%~ ...

  2. java 麻将的发牌与洗牌_JAVA程序设计(11)-----面对对象初级设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...

    zzzzZZZZ 1.开始还想贴图的 实在太懒了-- 这是一张麻将 package com.lovo; import java.awt.Graphics; import java.awt.Image; ...

  3. java 麻将_JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...

    zzzzZZZZ 1.開始还想贴图的 实在太懒了-- 这是一张麻将 package com.lovo; import java.awt.Graphics; import java.awt.Image; ...

  4. 【第五人格设计思路】 猩红新娘·时装设计思路

    "猩红新娘"最终完成图欣赏 生产方:第五人格美术天团 精彩程度:⭐⭐⭐⭐⭐ 内容简介:<猩红新娘·时装设计思路> 更多内容:<守墓人·角色设计思路>.< ...

  5. java猜数字游戏课程设计报告_Java程序设计课程设计-猜数字游戏设计.doc

    Java程序设计课程设计-猜数字游戏设计.doc 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 课 程 设 计 报 告课程设计名称 Jav ...

  6. java软件设计教学大纲_Java程序设计课程教学大纲

    Java程序设计课程教学大纲 课程编号: "Java语言程序设计"课程教学大纲 Java Program Design Course Outline 60学时 3学分 一.课程的性 ...

  7. java+实现集合并运算_JAVA程序设计报告+集合运算

    JAVA程序设计报告+集合运算 JAVA程序设计报告集合的运算(交并差)学生学号专业信息工程(系统工程方向)院系信息与控制学院实习时间三周:指导老师陈金辉目录实验目的试验设计实验源程序程序设计调试不足 ...

  8. Java运行作业控制语言_Java安全——语言本身的设计

    Java安全--语言本身的设计 Java 安全 内在安全机制 Java语言本身的安全机制是要保护内存资源--保证内存完整性,核心的安全特性要确保程序不能非法解析或修改驻留在内存中的机密信息.从语言本身 ...

  9. java 正确的表达式_JAVA程序设计课程作业,二、多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou...

    JAVA程序设计课程作业,二.多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou JAVA程序设计课程作业, 二.多选题 1.指出正确的表达式 A.double ...

最新文章

  1. 防火墙连接的三个端口
  2. Mybatis Plugin插件安装破解及使用
  3. Spring Boot自动配置原理
  4. 13.小结Action
  5. 移动平台MOBA发热与帧率优化
  6. Python实现二叉树的三种深度遍历方法!
  7. 【Verilog语法】PC-relatve branch 以及 Delay Slot 的含义
  8. Python print和pprint两者的区别
  9. 【codeup22562】最长回文子串(dp基础题)
  10. 递归方式计算一个数的几次方
  11. php的implode函数的作用是,PHP函数implode介绍
  12. C# winform 快速导入excel 到datagridview
  13. Font Awesome所有图标
  14. Could not find multidex.jar (com.android.support:multidex:1.0.2).
  15. datastage作业hang住
  16. 【采用】信贷业务的25个风险点
  17. 滤波器入门RLC电路BSF
  18. kali虚拟机网络配置
  19. html5音乐和歌词同步,HTML5实现歌词同步
  20. 自动编解码器的训练与数据识别效果解析

热门文章

  1. P1450 [HAOI2008]硬币购物
  2. I. Intersections
  3. 2020牛客国庆集训派对day1 C. Bob in Wonderland
  4. 洛谷P7361:拜神(SA、二分、主席树、启发式合并)
  5. P5363-[SDOI2019]移动金币【阶梯博弈,dp,组合数学】
  6. 行列式、LGV、矩阵树学习笔记
  7. P6240 好吃的题目(分治+背包)
  8. Full_of_Boys训练4总结
  9. 深度学习中反向传播算法简单推导笔记
  10. 汇编语言(一)之反转字符串输出