java:一个小明和小张比赛赛跑的小程序
程序员文章站
2022-05-02 10:03:43
...
相关说明
程序相对来说还不是很完美,比如没有考虑到跑的过程中不相上下的情况,台风的风级十级时反而对速度无影响,十级后反而让速度变大。不过大体上还是把游戏给制作完成了。程序代码部分花费的时间相对来说是比较少的,对于图形的绘制才是最多的。其中有一个重大失误,class后的名称忘记改了,造成了好几个小时的代码出错,临近崩溃边缘。其实游戏某些方面还是做得不太好,毕竟能力有限,我相信随着不断的学习,未来会带来更好的作品。
游戏制作的大致步骤
第一步,先用字符串把图案给绘出来,然后创建数组调试,最后把图案的字符串一行一行的放到数组程序中。第二步,写一个输入小明、小张速度的程序,用for循环5000为局限,让速度*时间等于的路程最后跳出循环的轮数。第三步,把第一步的输出程序根据对象放到第二步的相应地方。
源码
/*所想:
一个跑步比赛的小游戏
游戏原理
1.使用cmd的jdk。
2.利用java输出的字符串,整合成图案,根据提示输入相关数值,根据输入结果输出相关图案。
游戏内容:
1.小明和小张比赛跑步,看哪个先到终点,不同阶段输出相关的图案。
2.输入2个速度,一个小明的,一个小张的,历程为5000
3.正常时间20s,异常时间15s,如此的周期。异常是遇到台风,对小明和小张台风级数由玩家分别
输入。
4.台风:
级数 影响时间 速度
一 10s 下降10%
二 10s 下降20%
三 10s 下降30%
四 10s 下降40%
五 10s 下降50%
到九级为止
5.求取所跑的里程L
6.比较哪个L先到5000
speed(速度) journey(路程) typhoon(台风)
相关过程:
图案先定义为一行一行字符串,然后用数组输出图案。
利用跳出5000里程
开始有一副图画。
20s正常时间也有一副,这里不用进入for循环。
*/
import java.util.Scanner;
class Demo{
public static void main(String[] args){
/*
插入开始图画部分,并且以数组输出。以下插入的图画有五张,第一张开头输出,第二、第三张要算出前20s谁的路程长就输出谁暂时领先
的那张图;第四、五张图算出谁花的时间少,比较后输出赢的那个人。输出部分很多个数组下的for循环,不需要的注释掉就可以了。
*/
String array0[]=new String[24];//设置有多少组数组
array0[1]="---------------------|------------------------------------------------------------------------------------";//每一行的字符串
array0[2]=" * | ";
array0[3]=" (明) |";
array0[4]=" * * |";
array0[5]=" ***** |";
array0[6]=" * * |";
array0[7]="小明------>> * | >>>>>>>>>>>>>>>>>>>>>>比赛准备开始 ";
array0[8]=" * * | ";
array0[9]=" * * | ";
array0[10]=" * * | ";
array0[11]=" * * | ";
array0[12]="---------------------|------------------------------------------------------------------------------------";
array0[13]=" * | ";
array0[14]=" (张) | ";
array0[15]=" * * | >>>>>>>>>>>>>>>>>根据提示输入字符 ";
array0[16]=" ***** | ";
array0[17]=" * * | ";
array0[18]="小张------>> * | ";
array0[19]=" * * | ";
array0[20]=" * * | ";
array0[21]=" * * | ";
array0[22]=" * * | ";
array0[23]="---------------------|------------------------------------------------------------------------------------ ";
/*转到 开始输入速度部分前
for(int n=1;n<array0.length;n++){//(图案输出器)输出还未开始状态
System.out.println(array0[n]);
}
*/
/*
插入小明暂时领先的部分,数组输出部分移动到小明20s路程大于小张的地方,复制过去然后
把这部分的数组输出注释掉,后面会插入小张领先、小明胜利、小张胜利的图画。
*/
String array1[]=new String[24];//设置有多少组数组
array1[1]="------------------------------------------------------------------------------";
array1[2]=" * ";
array1[3]=" (明) ";
array1[4]=" * * ";
array1[5]=" ***** ";
array1[6]=" * * ";
array1[7]=" 小明暂时领先,即将面对台风>>>>>>>>>>>> 小明------>> * ";
array1[8]=" * * ";
array1[9]=" * * ";
array1[10]=" * * ";
array1[11]=" * * ";
array1[12]="------------------------------------------------------------------------------";
array1[13]=" * ";
array1[14]=" (张) ";
array1[15]=" * * ";
array1[16]=" ***** ";
array1[17]=" * * ";
array1[18]=" 小张------>> * >>>>>小张暂时落后,即将面对台风 ";
array1[19]=" * * ";
array1[20]=" * * ";
array1[21]=" * * ";
array1[22]=" * * ";
array1[23]="------------------------------------------------------------------------------";
/*
for(int n1=1;n1<array1.length;n1++){//(图案输出器)输出过程中小明领先
System.out.println(array1[n1]);
}
*/
/*
比赛中小张领先的图画
*/
String array2[]=new String[24];//设置有多少组数组
array2[1]="------------------------------------------------------------------------------";
array2[2]=" * ";
array2[3]=" (明) ";
array2[4]=" * * ";
array2[5]=" ***** ";
array2[6]=" * * ";
array2[7]=" 小明------>> * >>>>>小明暂时落后,即将面对台风 ";
array2[8]=" * * ";
array2[9]=" * * ";
array2[10]=" * * ";
array2[11]=" * * ";
array2[12]="------------------------------------------------------------------------------";
array2[13]=" * ";
array2[14]=" (张) ";
array2[15]=" * * ";
array2[16]=" ***** ";
array2[17]=" * * ";
array2[18]=" 小张暂时领先,即将面对台风>>>>>>>>>>>> 小张------>> * ";
array2[19]=" * * ";
array2[20]=" * * ";
array2[21]=" * * ";
array2[22]=" * * ";
array2[23]="------------------------------------------------------------------------------";
/*
for(int n2=1;n2<array2.length;n2++){//(图案输出器)输出过程中小张领先
System.out.println(array2[n2]);
}
*/
/*
小明胜利图案
*/
String array3[]=new String[21];//设置有多少组数组
array3[1]=" * (明) * ";
array3[2]=" * * * ";
array3[3]=" ******* ";
array3[4]=" * ";
array3[5]=" * * (张) * ";
array3[6]=" * * * * * ";
array3[7]=" * * ***** ";
array3[8]=" * * * ";
array3[9]=" ************ * ";
array3[10]=" * * * * ";
array3[11]=" * ** * * * ";
array3[12]=" * *** ************* ";
array3[13]=" * ** * * ";
array3[14]=" * ** * ***** * ";
array3[15]=" ********** ** * * ** * ";
array3[16]=" * * **** * ** * ";
array3[17]=" * * * ** * ";
array3[18]=" * * * ** * ";
array3[19]=" * * * ****** * ";
array3[20]=" -----------------------*--------*----------*-----------*----------------------";
/*
for(int n3=1;n3<array3.length;n3++){//(图案输出器)输出结果小明赢
System.out.println(array3[n3]);
}
*/
/*
小张胜利图案
*/
String array4[]=new String[21];//设置有多少组数组
array4[1]=" * (张) * ";
array4[2]=" * * * ";
array4[3]=" ******* ";
array4[4]=" * ";
array4[5]=" * * (明) * ";
array4[6]=" * * * * * ";
array4[7]=" * * ***** ";
array4[8]=" * * * ";
array4[9]=" ************ * ";
array4[10]=" * * * * ";
array4[11]=" * ** * * * ";
array4[12]=" * *** ************* ";
array4[13]=" * ** * * ";
array4[14]=" * ** * ***** * ";
array4[15]=" ********** ** * * ** * ";
array4[16]=" * * **** * ** * ";
array4[17]=" * * * ** * ";
array4[18]=" * * * ** * ";
array4[19]=" * * * ****** * ";
array4[20]=" -----------------------*--------*----------*-----------*----------------------";
/*
for(int n4=1;n4<array4.length;n4++){//(图案输出器)输出结果小张赢
System.out.println(array4[n4]);
}
*/
/*
小明、小张初始时间输入
*/
for(int n=1;n<array0.length;n++){//(图案1输出器)输出还未开始状态
System.out.println(array0[n]);
}
Scanner scanner=new Scanner(System.in);
System.out.print("输入小明的初始速度:");
float speedMing0=scanner.nextFloat();//输入小明的速度
System.out.print("输入小张的初始速度:");
float speedZhang0=scanner.nextFloat();//输入小张的速度
if(speedMing0>speedZhang0){//因为都为相同的时间,20s谁速度大谁领先
for(int n1=1;n1<array1.length;n1++){//(图案2输出器)输出过程中小明领先
System.out.println(array1[n1]);
}
}
else if(speedMing0<speedZhang0){
for(int n2=1;n2<array2.length;n2++){//(图案3输出器)输出过程中小张领先
System.out.println(array2[n2]);
}
}
else
System.out.println("小明和小张目前比赛不相上下");
float timeMing=0,timeZhang=0;//初始小明所用的时间,初始小张所用的时间
/*
小明求时间部分
*/
for(float journeyMing=0;journeyMing<=5000;){//初始里程,不超过5000就循环
int n=1;
System.out.print("小明遇到的第"+n+"台风级数:");
n++;//第n轮循环
float typhoonMing=scanner.nextInt();//输入小明的台风级数
//路程=正常速度*正常时间+异常速度*异常时间
journeyMing=journeyMing+speedMing0*20+journeyMing*10*(typhoonMing/10);//正常时间段的里程=速度*时间,加上异常的路程
timeMing=timeMing+35;//每轮的时间
}
System.out.println("小明所用时间:"+timeMing);//输出小明跳出5000里程循环的时间和
/*
小张求时间部分
*/
for(float journeyZhang=0;journeyZhang<=5000;){//初始里程,不超过5000就循环
int m=1;
System.out.print("小张遇到的第"+m+"台风级数:");
m++;//第m轮循环
float typhoonZhang=scanner.nextInt();//输入小张的台风级数
//路程=正常速度*正常时间+异常速度*异常时间
journeyZhang=journeyZhang+speedZhang0*20+journeyZhang*10*(typhoonZhang/10);//正常时间段的里程=速度*时间,加上异常的路程
timeZhang=timeZhang+35;//小张每轮的时间
}
System.out.println("小张所用时间:"+timeZhang);
if(timeMing<timeZhang){//比较小明和小张的所用时间,哪个用时少哪个赢
for(int n3=1;n3<array3.length;n3++){//(图案4输出器)输出结果小明赢
System.out.println(array3[n3]);
}
}
else if(timeMing>timeZhang){
for(int n4=1;n4<array4.length;n4++){//(图案5输出器)输出结果小张赢
System.out.println(array4[n4]);
}
}
else
System.out.println("未分出胜负,再来一局!");
}
}
运行结果
下一篇: mysql-proxy实现读写分离
推荐阅读