欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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("未分出胜负,再来一局!");
	}
}

运行结果

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