首页 > 其他分享 >龟兔赛跑(一个简单飞行棋游戏)

龟兔赛跑(一个简单飞行棋游戏)

时间:2024-09-12 12:25:38浏览次数:9  
标签:赛跑 动物类 地雷 飞行棋 龟兔 兔子 传送 乌龟 我们

我们只需要在运行器里面能显示就好,进行一个简单的逻辑梳理。下面来说一下本次实现全部需要实现的逻辑及其全部作用。

龟兔赛跑:

--普通格,共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编程,并在实际项目中应用这些知识。如果你有任何问题或建议,欢迎在评论区留言。

标签:赛跑,动物类,地雷,飞行棋,龟兔,兔子,传送,乌龟,我们
From: https://blog.csdn.net/2301_77081232/article/details/141832191

相关文章

  • PTA 7-12 龟兔赛跑
    龟兔赛跑(20分)乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直......
  • 动态规划:找出每个位置为止最长的有效障碍赛跑路线
    目录问题定义思路解题过程复杂度code问题定义        你打算构建一些障碍赛跑路线。给你一个 下标从0开始 的整数数组 obstacles ,数组长度为 n ,其中 obstacles[i] 表示第 i 个障碍的高度。对于每个介于 0 和 n-1 之间(包含 0 和 n-1)的下......
  • 题解:P10844 [EGOI2024] Infinite Race / 无限赛跑
    题解:P10844[EGOI2024]InfiniteRace/无限赛跑有n个人在环形跑道上跑步,和q次超越别人或被别人超越,别人要么在Anika前面,要么在后面怎么说呢,建议降红由于只有重复超过一个人才肯定是跑过一圈的,所以一个数组就行了,每超过一次就打上标记,不然去掉标记。#include<bits/stdc......
  • 龟兔赛跑项目
    龟兔赛跑:--普通格,共100格龟:每次随机移动1至3格兔子:每次随机移动1至6格每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能)功能格:(**和^^可以连续执行,@@和==不能连续执行)幸运星格:选手可再行动一次@@地雷格:兔子回到上数两个地雷格,龟回到上一地......
  • 打卡信奥刷题(313)用Scratch图形化工具信奥P2165[普及组/提高] [AHOI2009] 飞行棋
    [AHOI2009]飞行棋题目描述给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。输入格式第一行为正整数N......
  • JavaScript算法之龟兔赛跑
    简介:龟兔赛跑算法,又称弗洛伊德循环检测算法,是一种在链表中非常常用的算法。它基于运动学和直觉的基本定律。本文旨在向您简要介绍该算法,并帮助您了解这个看似神奇的算法。假设高速公路上有两辆车。其中一辆的速度为x,另一辆的速度为2x。它们唯一能相遇的条件是它们都在循环......
  • 分享飞行棋夫妻互动游戏高阶版,揭秘夫妻飞行棋游戏玩法!
    朋友们,今天我要给你们介绍一款超级甜蜜的小游戏——情侣飞行棋。别小看它,这可不是咱们小时候玩的那种,这是专门为咱们这些恩爱的小两口设计的,能让你们的感情在游戏中更加甜蜜蜜,擦出更多爱的火花。准备好了吗?跟着我,咱们一起探索这款软件的魔力吧!首先,这款情侣飞行棋,不管你是安......
  • 使用分形思想,通过图灵完备的机器赛跑关卡,并获得小机快跑成就
    本文作者:Wyu-Cnk前言最近在玩图灵完备(TuringComplete)一路过关斩将,来到机器赛跑(RobotRacing)这一关的时候,一看地图对于选修过分形几何的我来说,这不就是熟悉的希尔伯特曲线嘛!老朋友了!于是我复活已经死去的和分形几何有关的记忆,用分形的思想初步实现了对应的汇编......
  • 超时控制:Go语言下的网络请求与时间赛跑
    开场白:在互联网的世界里,我们经常要与各种API打交道。有时,这些API可能会因为各种原因而变得“慢条斯理”,这时,超时控制就显得尤为重要了。今天,我们就来聊聊如何在Go语言中实现HTTP请求的超时控制,与时间赛跑!知识点一:了解超时控制的必要性想象一下,当你正在等待一个重要的API响应时,如果......
  • 多线程.模拟龟兔赛跑
    packageJavaSE.Thread.document01;/***模拟龟兔赛跑*/publicclassDemo05implementsRunnable{publicstaticStringwinner;//胜者@Overridepublicvoidrun(){for(inti=1;i<=100;i++){if(Thread.currentThread().getName()......