JAVA基礎訓練之模擬雙色球實現案列
阿新 • • 發佈:2019-02-03
今天介紹一下怎麼模擬實現雙色球中獎的過程!
遊戲中獎規則如圖,接下來咱們用java程式碼小小的實現一下,其實,就分幾個步驟。
/**
1.接受使用者輸入,6紅,1藍
2.隨機生成 6紅 1藍
3.比較系統的號碼和使用者號碼,記錄個數
4.驗證是否中獎
5.公佈結果
*/
遊戲開始的時候,會讓玩家選擇是電腦自動生成中獎號碼,還是玩家自己選擇手動輸入中獎號碼
import java.util.Scanner;
import java.util.Random;
public class DoubleBall{
public static void main(String[] args){
int[] userRedBall = new int[6];//定義一個儲存使用者選擇紅色球號碼的陣列
int userBlueBall = 0;//定義一個儲存使用者藍色球的變數
int[] sysRedBall = new int[6];//定義一個系統生成紅色球的陣列
int sysBlueBall =0;//定義一個儲存系統生成藍色球的變數
int redCount = 0;//累計中獎紅球
int blueCount = 0;//累計中獎藍球
int[] redBall = new int[33];//定義一個長度為33的陣列,存放紅球
int[] blueBall = new int[13];//定義一個長度為13的陣列,存放藍球
//生成33個紅球
for(int i=0;i<redBall.length;i++){
redBall[i] = i+1;
}
//接受使用者輸入和生成偽隨機數的
Scanner sc = new Scanner(System.in);
Random r = new Random();
System.out.println("雙色球遊戲開始!");
//==================玩家選號開始======================================
userRedBall.length
<userRedBall.length
System.out.println("請問是選擇1:機選 2:手選");int choose=sc.nextInt();if(choose==1){//玩家選擇用機選...System.out.println("系統為您抽選的紅色球號碼為 ");int index=-1;for(int i=0;i<userRedBall.length;i++){index=r.nextInt(redBall.length-i);//隨機抽選6個紅球中的數字下標賦值給index
userRedBall[i]=redBall[index];//給使用者紅球陣列賦值
//把隨機抽取到的數和redBall數組裡的最後一位數交換,
//這樣效率最高,每次迴圈redBall的長度都減一
//就保證了下一次迴圈的時候,不會抽到重複的
//兩個數交換的時候,一般會用到第三個變數,也就是temp,這樣做比較穩妥,要是不用第三個變數,可以用異或,
// 假設a和b要交換,那就 a=a^b;b=a^b;a=a^b;這樣的話,a和b的值就會交換,而且速度要快很多
int temp=redBall[index];
redBall[index]=redBall[redBall.length-1-i];
redBall[redBall.length-1-i]=temp;
System.out.print(userRedBall[i]+" ");
}
System.out.println();
userBlueBall=r.nextInt(13)+1;
System.out.println("系統為您抽選的藍色球號碼為: "+userBlueBall);
//System.out.println();
}else{
//手選
System.out.println("請輸入6位紅色球號碼 (1-33)");
for(int i=0;i<userRedBall.length;i++){
userRedBall[i]=sc.nextInt();
}
System.out.print("您輸入的6位紅色球號碼為 ");
for(int i=0;i<userRedBall.length;i++){
System.out.print(userRedBall[i]+" ");
}
System.out.println();
System.out.println("請輸入1位藍色球號碼 (1-13)");
userBlueBall=sc.nextInt();
System.out.println("您選擇的藍色球號碼為 "+userBlueBall);
}
//==================玩家選號結束======================================
//==================系統隨機生成中獎號碼開始======================================
System.out.println("本期紅色球中獎號碼生成中。。。");
System.out.println("本期紅色球中獎號碼為:");
int index=-1;
for(int i=0;i<sysRedBall.length;i++){
index=r.nextInt(redBall.length-i);//把隨機到的數字的下標賦值給index
sysRedBall[i]=redBall[index];//把隨機抽取到的數存到系統紅球數組裡
//在redBall數組裡,把隨機到的數和陣列最後一位進行交換,這樣做的目的就是以最高的效率生成號碼
int temp=redBall[index];
redBall[index]=redBall[redBall.length-1-i];
redBall[redBall.length-1-i]=temp;
System.out.print(sysRedBall[i]+" ");
}
System.out.println(" ");
sysBlueBall=r.nextInt(13)+1;
System.out.print("本期藍色球中獎號碼為:"+sysBlueBall);
System.out.println();
//==================系統隨機生成中獎號碼結束======================================
//==================統計結果開始======================================
for(int i=0;i<userRedBall.length;i++){
for(int j=0;j<sysRedBall.length;j++){
if(userRedBall[i]==sysRedBall[j]){
int temp=sysRedBall[j];
sysRedBall[j]=sysRedBall[sysRedBall.length-1-redCount];
sysRedBall[sysRedBall.length-1-redCount]=temp;
redCount++;
}
}
}
if(sysBlueBall==userBlueBall){
blueCount=1;
}
//==================統計結果結束==========================================
//==================判斷是否中獎開始======================================
if(blueCount==0 && redCount<=3 ){
System.out.print("沒中獎!");
}else if((blueCount==1)&&redCount<3){
System.out.print("六等獎:5塊!");
}else if((redCount==3 &&blueCount==1)||(redCount==4 &&blueCount==0)){
System.out.print("五等獎:10塊!");
}else if((redCount==4 &&blueCount==1)||(redCount==5 &&blueCount==0)){
System.out.print("四等獎:200塊!");
}else if(redCount==5 &&blueCount==1){
System.out.print("三等獎:3000塊!");
}else if(redCount==6 &&blueCount==0){
System.out.print("二等獎:150萬!");
}else if(redCount==6 &&blueCount==1){
System.out.print("一等獎:500萬!");
}else
System.out.print("系統錯誤");
//==================判斷是否中獎結束======================================
執行結果:
雙色球遊戲開始!
請問是選擇1:機選 2:手選
1
系統為您抽選的紅色球號碼為
22 6 33 13 5 7
系統為您抽選的藍色球號碼為: 4
本期紅色球中獎號碼生成中。。。
本期紅色球中獎號碼為:
4 14 8 9 12 6
本期藍色球中獎號碼為:10
沒中獎!
最後友情提示:我自己玩了半小時也沒中一次獎。。。買這玩意要慎重啊。。。