1. 程式人生 > >JAVA基礎訓練之模擬雙色球實現案列

JAVA基礎訓練之模擬雙色球實現案列

今天介紹一下怎麼模擬實現雙色球中獎的過程!

遊戲中獎規則如圖,接下來咱們用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
沒中獎!

最後友情提示:我自己玩了半小時也沒中一次獎。。。買這玩意要慎重啊。。。