JAVA 掷骰子小游戏

记事本编辑小游戏( 需要有环境变量 ),代码会在底部会发出来;

( 1 )

        创建一个txt文本,把后缀改成 .java ;

c8f0b32887e5418e8f505056609d9bf0.png

( 2 )

        先创建一个类一个 main 方法,切记类名要跟文件名一致;

7d7c11b0f97d44309e1edf0c665e34e5.png

 (3)

        现在思考掷骰子需要什么呢,掷骰子最重要的是投出随机数,所以我们引用一下 Random() 方法,用于产生随机数字;

e63fc819d02345d3a33396c69037e1f5.png

         这边要记住对 Random 进行导包,并实例化;

(4)

        骰子的点数问题,因为骰子的点数是 1-6 ,而直接使用 random.nextInt() 的方法是生成一个随机的数,故我们要给其设置一个限制 random.nextint( 7 ) ;

        现在新问题又来了,random.nextint( 7 ) 的范围是 0 - 6 ,而我们骰子一共就只有 1 - 6 的点数,那么我们应该怎么让 0 不出现呢?

        我这边想了一个解决方案 random.nextint( 6 ) + 1 ,因为 random.nextint( 6 ) 的范围是 0 - 5 ,如果我把所有输出的值都进行 + 1 ,那么它的范围就相当于是 1 - 6 ;

10aea71732d94d298ffc616fe0b3c676.png

(5)

        我们在掷骰子的时候一般不会一次只掷一个骰子,所以我们需要对骰子进行多次掷出,而每次掷出骰子的个数并不固定,我们还需要输入骰子个数进行投掷;

        为此我们需要利用一个循环对骰子进行多重投掷,控制个数时还需要调用 Scanner() 方法进行对骰子个数进行输入,调用 Scanner() 方法也需要进行导包以及实例化;

        还需要注意的是这里的输出语句要用 print ,因为 println 会自动换行;

bd0acef955c24097a37e4a1eda3b3050.png

 (6)

        我们在玩骰子游戏的时候如果打算多次进行多轮游戏,重复打开会十分的麻烦,所以我们可以再将掷骰子功能放进一个循环体内部,利用辅助变量 temp 来控制走向,进行多论游戏或结束游戏;

9ce87ddbb3344514bd5626280a69b21d.png

        为避免在游戏过程中突然需要更换骰子数量,所以需要在原有的选择分支上再进行细分确定每进行完一轮游戏之后所进行的操作;

7192ac3447134a2fb4673e3cd1ef26d7.png

(7)

        因为多次进行投掷之后控制台会显得十分的杂乱,所以我们可以利用 ProcessBuilder 编写一个 clear() 方法进行对控制台的清理;

e99f51475c4e4744ba541ad21e55ae5c.png

12989dac3e2d4033a81b9add6f07c8a8.png

        ProcessBuilder 是属于 lang 里面的类,也需要进行导包和实例化;

(8) 

        在用 temp 输入数字的时候,有可能会出现不小心多打几个数字上去的情况,为了避免这种情况的出现,把 temp 更换成字符型,只接收第一个元素,对程序进行优化;

32abceb3396c429682020468cd7a49c9.png

(9)运行

        在文件目录输入 cmd 回车,出现控制台; 

5e0874bda84e48beab5b2533d9f5147c.png

         输入 javac 文件名.java 进行编译生成 class 文件;

46716813fc5a4b6f89a2734de973cf4b.png

         输入 java 文件名 运行程序

9edb140aa72a4a15be26717084110c1b.png

 (10)代码分享

import java.util.Random;
import java.util.Scanner;
import java.lang.ProcessBuilder;

public class ShootDice 
{
	public static void main ( String[ ] args ){
		Random random = new Random( ) ;
		Scanner scanf = new Scanner( System.in ) ;
		System.out.print( "请输入骰子个数:" );
		int diceNum = scanf.nextInt() ;
		while( true ){
			int count = 0 ;
			while( count++ < diceNum ){
				int num = random.nextInt( 6 ) + 1 ;
				System.out.print( num + "\t" );
			}
			System.out.println( "\n是否继续掷骰子?( 输入 1 继续,输入 2 重置骰子个数 )" );
			char temp = scanf.next().charAt( 0 ) ;
			if( temp == '1' ) clear() ;
			else if( temp == '2' ) {
				clear() ;
				System.out.print( "请输入骰子个数:" );
				diceNum = scanf.nextInt() ;
			}else break;
		}
	}
	public static void clear(){
        		try{
            			ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "cls");
            			pb.inheritIO().start().waitFor();
        		}catch(Exception e){
            			System.out.println( e );
        		}
        		System.out.println("\n\n\n");
    	}
}

  • 14
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jc_caterpillar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值