我们只需要在运行器里面能显示就好,进行一个简单的逻辑梳理。下面来说一下本次实现全部需要实现的逻辑及其全部作用。
龟兔赛跑:
--普通格,共100格
龟:每次随机移动1至3格
兔子:每次随机移动1至6格
每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能)
功能格:(**和^^可以连续执行,@@和==不能连续执行)
**幸运星格:选手可再行动一次
@@地雷格:兔子回到上数两个地雷格,龟回到上一地雷格(若后方无地雷格则回到起点)
==传送格:兔子到达下一传送格,龟到达下数两个传送格(若前方无传送格则到达终点)
||树格:兔子停止三次行动
^^下坡格:龟前进10格
以上就是我们需要实现的全部逻辑。
首先我们考虑的是如果我们需要什么东西来完成这个程序。首先是需要一个动物类,让兔子类和乌龟类当动物类的子类,让其有关联。需要一个地图,用来进行记录乌龟和兔子走到哪里了。还需要一个游戏让程序运行起来。那么我们可以全部写到一个大类里吗,可以,但是看着会很乱,并且我们如果要做一个项目需要有清晰的逻辑方便每个人进入这个项目的时候能够更快的找到逻辑问题或者增删改查的操作
首先我们先创造一个Game类,有了Game才能进行程序运行,因为本次项目中只有Game中有main方法,进行程序的检验,在Game类中得保证有兔子和乌龟的存在,因此我们创造两个对象,我们在执行游戏的时候必须每点击一次兔子和乌龟进行一次行动,因此
这就是Game的全部作用,说白了他仅仅起到一个运行程序的作用
之后我们创建地图类(Map),让整体可以进行检测,看是否错误。
我们先确定这个地图有多大,定义地图共有一百个格,因此:
之后呢,我们得保证兔子和乌龟有一个走出了100个格子之后保证程序结束,因此
在此借用静态块来初始化地图,并且根据要求将地图20格分成五组,在每组中生成五个不同的特殊格并且保证特殊格不能代替特殊格。之后再用普通格填充剩下的全部格子。
之后输出地图初始化完成方便检验。这就是Map类的全部代码以及全部作用。
因为我们
接下来是动物类,它可以完成一些兔子和乌龟共同的动作以及对于两个动物的影响相同的特殊格的功能以及只影响一个的特殊格的功能。这是我们的思考内容。
设置一个名字和最大值以及位置,再在兔子和乌龟类里面去定义各自的具体内容。
动物类中:
兔子类中:
乌龟类中:
这是定义兔子和乌龟每次要走的步数的限制,实现兔子乌龟可以行走的逻辑在动物类中:
下面的代码是保证乌龟与兔子在程序运行后,保证两个动物的位置与原本位置进行交换,实现可以往前走的逻辑
此外还必须保证到一百格之后程序结束。因此在动物类中:System.sxit(0);表示主动退出程序
使我们写的每个方法都进行调用,在这就全部写出来了,包括了特殊格的调用。
到目前为止我们的程序已经可以进行操作运行并且正常结束了,因为我们普通格和特殊格已经设计好了,只是没有给特殊格进行特殊功能处理,但是不影响程序的正常开始和结束。接下来就是对每个特殊格的功能代码书写了。
要求中的第一个特殊格,**幸运格:
因为兔子和乌龟都是遇到幸运格在行动一次,我们只需要在动物类中定义统一的逻辑就好,没必要分别定义。
动物类中:
要求中第二个特殊格,@@地雷格:
动物类中:(因为对于兔子和乌龟有不同的操作因此在动物类中只需要简单调用就好)
兔子类中:(通过@Override与父类也就是动物类进行连接(在之后就不解释了)if语句检查当前是否遇到了地雷if(Map.map[position].equals("@@") 还进行了判断,判断如果兔子在前40格遇到了地雷就炸回起点,后60格遇到地雷就返回往前数两个地雷格的位置,其中的break是保证兔子让炸到了上一个地雷之后不会再次运行程序再炸一次)
)
乌龟类中:(if语句检查当前是否遇到了地雷if(Map.map[position].equals("@@") 还进行了判断,判断如果乌龟在前20格遇到了地雷就炸回起点,后80格遇到地雷就返回往前数一个地雷格的位置,其中的break是保证乌龟让炸到了上一个地雷之后不会再次运行程序再炸一次)
这就是地雷格的全部功能了,接下来是传送格==,其实跟地雷格的逻辑差不多,一个往前移一个往后移。
动物类中:(依旧简单声明)
兔子类中:(if语句检查当前是否遇到了传送格if(Map.map[position].equals("==") 还进行了判断,判断如果兔子在后20格遇到了传送就传送到终点,前80格遇到传送就往后数一个传送格的位置,其中的break是保证兔子让传送到了下一个传送格之后不会再次运行程序再传送一次)
乌龟类中:(if语句检查当前是否遇到了传送格if(Map.map[position].equals("==") 还进行了判断,判断如果乌龟在后40格遇到了传送就传送到终点,前60格遇到传送就往后数两个传送格的位置,其中的break是保证乌龟让传送到了下一个传送格之后不会再次运行程序再传送一次)
这就是传送格的全部逻辑了,其实就和地雷格几乎没差。接下来先整个简单的(树格相对来说有些麻烦),只关于乌龟的下坡路^^。
不管是关于乌龟还是只关于兔子,还是两个都有关系,我们都必须在动物类中添加定义,要不然光在乌龟类或者兔子类书写,是没有办法调用相关程序的。
动物类中:
乌龟类中:
接下来就是最后一个了,数格||,一个相对比较麻烦的程序,但其实也有简单的方法,我们先来进行常规逻辑的
动物类中:
兔子类:(我们得判断,我们遇到树格停止,这是停止第几轮,得设置stopCount作为记录兔子停止第几轮sleep,停止中兔子不能行走,当到第三轮使sleep变成true,使兔子可以正常行走)
当然也有一种很简单的方法,就是在这个方法里直接让乌龟行动三次,这个方法当我知道后我是感觉我写这么多都是很愚蠢的举动了,但是这也只是偶然可以使用的,这个正常的逻辑我们也得会,毕竟直接让乌龟行动三次的想法除非突然想到我们面对这个树格是没有办法应对的。
这就是我们全部的程序了最后运行结果是
这是其中一次的运行结果我们可以自己写出来尝试尝试。
通过这个简单的龟兔赛跑游戏,我们展示了如何使用Java语言实现一个基本的模拟游戏。这个游戏不仅帮助我们理解Java的基本语法和面向对象编程的概念,还让我们重温了一个经典的寓言故事。
希望这篇博客能帮助你更好地理解Java编程,并在实际项目中应用这些知识。如果你有任何问题或建议,欢迎在评论区留言。