java:一个小明和小张比赛赛跑的小程序

相关说明

程序相对来说还不是很完美,比如没有考虑到跑的过程中不相上下的情况,台风的风级十级时反而对速度无影响,十级后反而让速度变大。不过大体上还是把游戏给制作完成了。程序代码部分花费的时间相对来说是比较少的,对于图形的绘制才是最多的。其中有一个重大失误,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("未分出胜负,再来一局!");
	}
}

运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了66 篇原创文章 · 获赞 11 · 访问量 1678

猜你喜欢

转载自blog.csdn.net/qq_44925904/article/details/103297999