JavaGame-The Tortoise and the Hare(龟兔赛跑)

大家好我是新人猫咪!!!!!!!

Java龟兔赛跑是一个经典的寓言故事,常常用作教学示例来展示Java程序的基本结构和控制流程。在这个模拟中,通常会有一个乌龟和兔子作为两个角色,代表了不同的速度。程序通常包含如下步骤:

  1. 定义一个"兔子"类和一个"乌龟"类,它们都实现了一个共同的"动物"接口,有移动的距离和比赛的方法。

  2. 初始化兔子和乌龟,并设置初始位置和速度差异。

  3. 使用while循环,每一步让两者按照各自的速度移动一段距离。例如,兔子每次比乌龟快很多,但比赛中兔子可能会选择小憩。

  4. 判断比赛条件,比如当乌龟到达终点或兔子休息结束,就停止比赛并计算结果。

通过这个简单的例子,学生可以学习到如何创建类、封装属性、继承、多态以及基本的控制结构,如if-else和循环。

条件:

--普通格,共100格

龟:每次随机移动1至3格
兔子:每次随机移动1至6格

每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能)

功能格:(**和^^可以连续执行,@@和==不能连续执行)
**幸运星格:选手可再行动一次
@@地雷格:兔子回到上数两个地雷格,龟回到上一地雷格(若后方无地雷格则回到起点)
==传送格:兔子到达下一传送格,龟到达下数两个传送格(若前方无传送格则到达终点)
||树格:兔子停止三次行动
^^下坡格:龟前进10格

下面是猫咪写的代码大家可以参考一下:

我们要在项目中准备一个guitu包包和五个类,地图类,以动物为抽象类,还有兔兔类,和龟龟类分别继承动物类,最后还有一个Game类内含main方法来启动游戏

地图类是最基本的

它应该先被写好但是同时也是逻辑最难的,考验大家的算法能力

我们首先将数组中的数据填充为基本格,然后定义一个功能格数组里面有五种功能格

最难的是一个嵌套循环,用于生成一个长度为5的整数数组,并为每个数组元素赋予一个随机数。外部的for循环控制生成5个数组,内部的for循环用于为每个数组元素生成随机数。

内部的随机数生成部分使用了Math类的random()方法,该方法会生成一个位于0到1之间的随机小数。代码中通过将该随机小数乘以20再加上20乘以外部循环变量i的值,得到了一个介于20i到20(i+1)之间的随机整数。此处的目的是使得每个数组元素的值都在固定的范围内。

之后通过一个while循环,使用check方法来检查生成的随机数是否已经存在于数组中。如果存在,则重新生成随机数,直到随机数不重复为止。check方法的作用是遍历数组,检查数组中是否存在与随机数相等的元素。

一旦得到一个不重复的随机数,将其赋值给数组元素,并使用该随机数作为索引,从map数组中取出对应的function元素,并将其存储在map[rand]中。

最终,在外部的for循环执行完毕后,会生成5个不重复的随机数数组,并通过map数组记录每个随机数对应的function元素。

静态块的作用是因为它在程序加载的时候就初始化地图数据,如果不这样做每一次摁下回车地图都会重新加载导致地图不唯一(哭哭)

package guitu;
import java.util.Arrays;
public class Map {
    static String[] map=new String[100];
    public static boolean check(int[] arr,int rand){
        for (int a:arr){
            if (a==rand){
                return true;
       
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值