Java龟兔赛跑代码过程模拟.docx
- 文档编号:12837758
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:11
- 大小:16.50KB
Java龟兔赛跑代码过程模拟.docx
《Java龟兔赛跑代码过程模拟.docx》由会员分享,可在线阅读,更多相关《Java龟兔赛跑代码过程模拟.docx(11页珍藏版)》请在冰豆网上搜索。
Java龟兔赛跑代码过程模拟
要求
龟兔赛跑:
--普通格,共100格
龟:
每次随机移动1至3格
兔子:
每次随机移动1至6格
每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能)
功能格:
(**和^^可以连续执行,@@和==不能连续执行)
**幸运星格:
选手可再行动一次
@@地雷格:
兔子回到上数两个地雷格,龟回到上一地雷格(若后方无地雷格则回到起点)
==传送格:
兔子到达下一传送格,龟到达下数两个传送格(若前方无传送格则到达终点)
||树格:
兔子停止三次行动
^^下坡格:
龟前进10格
主程序/地图
packagegtsp;//包名
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassMapp{
publicstaticString[]functionPosition(){//每20格出现随机功能实现
int[]t=newint[5];
String[]partMap=newString[20];
for(inti=0;i<5;){
intrandom=(int)(20*Math.random());
intjudge=0;
for(intj=0;j<5;j++){
if(t[j]==random){
judge=0;
break;
}else{
judge=1;
}
}
if(judge==1){
t[i]=random;
i++;
}
}
for(inti=0;i<20;i++){
partMap[i]="∷";
}
partMap[t[0]]="★";
partMap[t[1]]="@";
partMap[t[2]]="=";
partMap[t[3]]="|";
partMap[t[4]]="^";
returnpartMap;
}
publicstaticString[]getMap(){//创建地图分成五部分每部分20格
String[]map=newString[100];
String[]partMap1=functionPosition();
for(inti=0;i<20;i++){
map[i]=partMap1[i];
}
String[]partMap2=functionPosition();
for(inti=0;i<20;i++){
map[i+(20*1)]=partMap2[i];
}
String[]partMap3=functionPosition();
for(inti=0;i<20;i++){
map[i+(20*2)]=partMap3[i];
}
String[]partMap4=functionPosition();
for(inti=0;i<20;i++){
map[i+(20*3)]=partMap4[i];
}
String[]partMap5=functionPosition();
for(inti=0;i<20;i++){
map[i+(20*4)]=partMap5[i];
}
returnmap;
}
publicstaticvoidshowMap(String[]map,TurtleT,Rabbitr){//打印地图
String[]t=newString[100];
for(inti=0;i<100;i++){
t[i]=map[i];
}
t[T.position]="龟";
if(t[r.position]=="龟"){
t[r.position]="遇";
}else{
t[r.position]="兔";
}
for(Stringi:
t){
System.out.print(i);
}
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
System.out.println("※※");
System.out.println("※※");
System.out.println("※龟兔赛跑※");
System.out.println("※※");
System.out.println("※※");
System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");
String[]map=newString[100];
map=getMap();
TurtleT=newTurtle();
Rabbitr=newRabbit();
showMap(map,T,r);
InputStreamReaderin=null;
BufferedReaderbr=null;
in=newInputStreamReader(System.in);//该处的System.in是各InputSream类型的;
br=newBufferedReader(in);
while((T.position<99)&&(r.position<99)){
try{
Stringstr=br.readLine();
if(str.length()==0){
T.execute(map,T);
r.execute(map,T);
if((T.position<99)&&(r.position<99)){
showMap(map,T,r);
}
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
if(T.position>=
99){
System.out.println("\n乌龟赢了");
}else{
System.out.println("\n兔子赢了");
}
}
}
抽象类/部分功能格功能
packagegtsp;
publicabstractclassGame{//抽象类Game行走等功能
intposition=0;
booleanlandmineJudge;
booleandoorJudge;
publicvoidexecute(String[]map,TurtleT){//执行行走
landmineJudge=true;
doorJudge=true;
position=position+getStep();
function(map,T);
}
publicvoidagain(String[]map,TurtleT){//调用execute方法再走一次
System.out.println("再走一次");
execute(map,T);
}
publicabstractintgetStep();
publicvoidlandmine(String[]map){//地雷功能
System.out.println("遇到地雷");
position=position-1;
while(map[position]!
="@"){
if(position!
=0){
position--;
}else{
break;
}
}
}
publicvoiddoor(String[]map){//传送
System.out.println("执行传送门");
position=position+1;
while(map[position]!
="="){
if(position!
=99){
position++;
}else{
break;
}
}
}
publicabstractvoidfunction(String[]map,TurtleT);
}
兔子类
packagegtsp;
publicclassRabbitextendsGame{
@Override
publicintgetStep(){//兔子行进步数1-6
//TODOAuto-generatedmethodstub
intstep=(int)(Math.random()*10)%6+1;
System.out.println("兔子行进"+step+"格");
returnstep;
}
@Override
publicvoidfunction(String[]map,TurtleT){//兔子功能实现
if(position<99){
if(map[position]=="★"){
System.out.println("兔子遇到幸运星");
again(map,T);
}
if(map[position]=="@"){
System.out.println("兔子遇到地雷");
if(landmineJudge){
landmine(map);
if(position!
=0){
landmine(map);
}
}
landmineJudge=false;
}
if(map[position]=="="){
System.out.println("兔子遇到传送门");
if(doorJudge){
door(map);
}
doorJudge=false;
}
if(map[position]=="|"){
System.out.println("兔子遇到树");
T.execute(map,T);
T.execute(map,T);
T.execute(map,T);
}
}
}
}
乌龟类
packagegtsp;
publicclassTurtleextendsGame{//继承Game
@Override
publicintgetStep(){//乌龟每次行进次数1-3
intstep=(int)(Math.random()*10)%3+1;
System.out.println("乌龟行进"+step+"格");
returnstep;
}
@Override
publicvoidfunction(String[]map,TurtleT){//乌龟功能格
if(position<99){
if(map[position]=="★"){
System.out.println("乌龟遇到幸运星");
again(map,T);
}
if(map[position]=="@"){
System.out.println("乌龟遇到地雷");
if(landmineJudge){
landmine(map);
}
landmineJudge=false;
}
if(map[position]=="="){
System.out.println("乌龟遇到传送门");
if(doorJudge){
door(map);
if(position!
=99){
door(map);
}
}
doorJudge=false;
}
if(map[position]=="^"){
System.out.println("乌龟遇到下坡");
position=position+10;
}
}
}
}
总共四个文件直接导入到一个包中就能运行必要修改包名或者删除文件中的包名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 赛跑 代码 过程 模拟
![提示](https://static.bdocx.com/images/bang_tan.gif)