记事本编辑小游戏( 需要有环境变量 ),代码会在底部会发出来;
( 1 )
创建一个txt文本,把后缀改成 .java ;
( 2 )
先创建一个类一个 main 方法,切记类名要跟文件名一致;
(3)
现在思考掷骰子需要什么呢,掷骰子最重要的是投出随机数,所以我们引用一下 Random() 方法,用于产生随机数字;
这边要记住对 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 ;
(5)
我们在掷骰子的时候一般不会一次只掷一个骰子,所以我们需要对骰子进行多次掷出,而每次掷出骰子的个数并不固定,我们还需要输入骰子个数进行投掷;
为此我们需要利用一个循环对骰子进行多重投掷,控制个数时还需要调用 Scanner() 方法进行对骰子个数进行输入,调用 Scanner() 方法也需要进行导包以及实例化;
还需要注意的是这里的输出语句要用 print ,因为 println 会自动换行;
(6)
我们在玩骰子游戏的时候如果打算多次进行多轮游戏,重复打开会十分的麻烦,所以我们可以再将掷骰子功能放进一个循环体内部,利用辅助变量 temp 来控制走向,进行多论游戏或结束游戏;
为避免在游戏过程中突然需要更换骰子数量,所以需要在原有的选择分支上再进行细分确定每进行完一轮游戏之后所进行的操作;
(7)
因为多次进行投掷之后控制台会显得十分的杂乱,所以我们可以利用 ProcessBuilder 编写一个 clear() 方法进行对控制台的清理;
ProcessBuilder 是属于 lang 里面的类,也需要进行导包和实例化;
(8)
在用 temp 输入数字的时候,有可能会出现不小心多打几个数字上去的情况,为了避免这种情况的出现,把 temp 更换成字符型,只接收第一个元素,对程序进行优化;
(9)运行
在文件目录输入 cmd 回车,出现控制台;
输入 javac 文件名.java 进行编译生成 class 文件;
输入 java 文件名 运行程序
(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");
}
}