1. 程式人生 > >第一篇博客:一個雙色球遊戲 、以及個人介紹

第一篇博客:一個雙色球遊戲 、以及個人介紹

面向 都是 ued 計算機專業 bean b- view 需要 第一次

一、雙色球小遊戲

雙色球類(6紅1藍):

技術分享圖片
 1 package top.liaoyingpeng.bean;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Balls {
 6     private int[] red = new int[6];
 7     private int blue;
 8     private BallBox makeBy;
 9 
10     // 全機器生成
11     protected Balls(BallBox bx) {
12         makeBy = bx;
13     }
14
15 // 比較 16 public byte[] equals(Balls obj) { 17 byte[] num = { 0, 0 }; 18 if (blue == obj.blue) { 19 num[1] = 1; 20 } else { 21 num[1] = 0; 22 } 23 24 for (int i : obj.red) { 25 for (int j : this.red) { 26 if
(i == j) 27 num[0]++; 28 } 29 } 30 return num; 31 } 32 33 // 設置球 34 public int getRed(int n) { 35 return this.red[n]; 36 } 37 38 public int[] getAllRed(){ 39 return red; 40 } 41 42 protected void setRed(int
n, int red) { 43 this.red[n] = red; 44 } 45 46 public int getBlue() { 47 return blue; 48 } 49 50 protected void setBlue(int blue) { 51 this.blue = blue; 52 makeBy.blue = true; 53 } 54 55 // 顯示全部 56 @Override 57 public String toString() { 58 59 return Arrays.toString(red) + "[" + blue + "]"; 60 61 } 62 }
雙色球組

球箱類(生成雙色球):

技術分享圖片
  1 package top.liaoyingpeng.bean;
  2 
  3 import java.util.LinkedHashSet;
  4 import java.util.Random;
  5 import java.util.Scanner;
  6 import java.util.regex.Matcher;
  7 import java.util.regex.Pattern;
  8 
  9 public class BallBox {
 10     private LinkedHashSet<Integer> red = new LinkedHashSet<Integer>();// 1-33已抽出的紅球
 11     Scanner sc = new Scanner(System.in);
 12     private Balls Making = null;// 正在抽的球組
 13     private Random rd = new Random();
 14     protected boolean blue = false;// 標識藍色球是否抽出
 15 
 16     // 球填充
 17     public BallBox() {
 18     }
 19 
 20     // 獲得隨機雙色球組
 21     public Balls getRandomBalls() {
 22         if (!isUsed()) {
 23             Making = new Balls(this);
 24             int num;
 25             for (int i = 0 + red.size(); i < 6; i++) {
 26                 do {
 27                     num = rd.nextInt(33) + 1;// 1-33
 28                 } while (red.contains(num));
 29                 red.add(num);
 30                 Making.setRed(i, num);
 31             }
 32             if (!blue) {
 33                 Making.setBlue(rd.nextInt(16) + 1);
 34             }// 1-16
 35             return Making;
 36         } else {
 37             return null;
 38         }
 39     }
 40 
 41     // 購買雙色球
 42     public Balls buy() {
 43         if (!isUsed()) {
 44             System.out.print("請輸入要購買的球號\n格式:  [01, 23, 12, 11, 24, 05][15]\n您要購買:");
 45             int ball[] = null;
 46             while (ball == null) {
 47                 ball = checkNum(sc.nextLine());
 48             }
 49 /*            if (ball != null) {*/
 50                 Making = new Balls(this);
 51                 for (int i = 0; i < 6; i++) {
 52                     Making.setRed(i, ball[i]);
 53                 }
 54                 Making.setBlue(ball[6]);
 55                 return Making;
 56 /*            } else {
 57                 return null;
 58             }*/
 59         } else {
 60             return null;
 61         }
 62     }
 63 
 64     // 格式檢測
 65     private int[] checkNum(String balls) {
 66         int[] ball = new int[7];
 67         Pattern p = Pattern.compile("[0-9][0-9]");
 68         Matcher m = p.matcher(balls);
 69         int i;
 70         for (i = 0; i < 10; i++) {//容錯
 71             if (m.find()) {
 72                 ball[i] = new Integer(m.group());
 73                 if (ball[i] > 33 || ball[i] == 0) {
 74                     break;
 75                 }
 76             } else {
 77                 break;
 78             }
 79         }
 80         // System.out.println(i);
 81         if (ball[6] <= 16 && i == 7//應正好7個
 82                 && balls.matches("\\s*(\\[\\s*\\d{2}\\s*,\\s*\\d{2}\\s*,\\s*\\d{2}\\s*,\\s*\\d{2}\\s*,\\s*\\d{2}\\s*,\\s*\\d{2}\\s*\\])(\\[\\d\\d\\])\\s*")) {
 83             return ball;
 84         } else {
 85             System.out.println("格式或球號錯誤 請重新輸入");
 86             return null;
 87         }
 88     }
 89 
 90     // 重置球箱
 91     public void clear() {
 92         red.clear();
 93         blue = false;
 94         Making = null;
 95     }
 96 
 97     // 是否已抽出藍色球
 98     public boolean isBlued() {
 99         return blue;
100     }
101 
102     // 已抽出紅球個數
103     public int alRed() {
104         return red.size();
105     }
106 
107     // 是否以抽完
108     public boolean isUsed() {
109         if (red.size() == 6 && blue)
110             return true;
111         else
112             return false;
113     }
114 
115     // 是否正在或已使用
116     public boolean isUsing() {
117         if (Making != null)
118             return true;
119         else
120             return false;
121     }
122 }
球箱類

主界面(main):

技術分享圖片
  1 package top.liaoyingpeng.view;
  2 
  3 import java.util.Scanner;
  4 
  5 import top.liaoyingpeng.bean.BallBox;
  6 import top.liaoyingpeng.bean.Balls;
  7 
  8 public class Test {
  9     static Scanner sc = new Scanner(System.in);
 10     static int[] hasPrize = { 0, 0, 0, 0, 0, 0, 0 };// 1-6等獎 獎金;
 11     static int times = 0;//抽獎次數
 12 
 13     public static void main(String[] args) {
 14 
 15         System.out.println("**********雙色球遊戲**********");
 16         System.out
 17                 .println("規則:\n\t選擇6個紅球和1個藍球 \n\t紅色球號碼從1--33中選擇\n\t藍色球號碼從1--16中選擇");
 18         System.out.println("\t由系統隨機生成一組雙色球\n\t用戶進行單式投註\n\n按回車鍵開始投註");
 19         sc.nextLine();
 20         while (game())
 21             ;
 22         System.out.println("遊戲結束---退出ing");
 23         sc.close();
 24     }
 25 
 26     public static boolean game() {
 27         System.out.println("******************************");
 28         BallBox bx = new BallBox();
 29         Balls player;
 30         Balls gover;
 31         System.out.println("請選擇:\n\t1)手動下註\n\t2)自動下註");
 32         if ("1".equals(sc.nextLine())) {
 33             player = bx.buy();
 34         } else {
 35             player = bx.getRandomBalls();
 36             System.out.println("您購買了:" + player.toString());
 37         }
 38         bx.clear();// 重置球箱
 39         gover = bx.getRandomBalls();
 40         byte[] result = player.equals(gover);
 41         int prize = prize(result);
 42 
 43         System.out.println("開獎情況:" + gover.toString());
 44         System.out.println("您共猜中紅球" + result[0] + "個,藍球" + result[1] + "個\n");
 45         if (prize > 0) {
 46             String lv = level(prize);
 47             System.out.println("恭喜您獲得" + lv + " 獎金" + prize + "元");
 48         } else {
 49             System.out.println("抱歉 您未獲獎\n******************************");
 50         }
 51         times++;
 52         showPrize();
 53         System.out.println("按回車再來一次\n輸入exit退出遊戲");
 54         if ("exit".equals(sc.nextLine()))
 55             return false;
 56         else
 57             return true;
 58     }
 59 
 60     public static void showPrize() {
 61         System.out.println("您已獲得:\n\t一等獎 " + hasPrize[0] + " 次");
 62         System.out.println("\t二等獎 " + hasPrize[1] + " 次");
 63         System.out.println("\t三等獎 " + hasPrize[2] + " 次");
 64         System.out.println("\t四等獎 " + hasPrize[3] + " 次");
 65         System.out.println("\t五等獎 " + hasPrize[4] + " 次");
 66         System.out.println("\t六等獎 " + hasPrize[5] + " 次");
 67         System.out.println("\t\t獎金共 " + hasPrize[6] + " 元");
 68         System.out.println("\t\t投註共 " + times + " 註\n");
 69     }
 70 
 71     public static int prize(byte[] result) {
 72         int prize = 0;
 73         switch (result[0]) {
 74         case 6: {
 75             if (result[1] == 1)
 76                 prize = 10000000;
 77             else
 78                 prize = 3000000;
 79             break;
 80         }
 81         case 5: {
 82             if (result[1] == 1)
 83                 prize = 3000;
 84             else
 85                 prize = 200;
 86             break;
 87         }
 88         case 4: {
 89             if (result[1] == 1)
 90                 prize = 200;
 91             else
 92                 prize = 10;
 93             break;
 94         }
 95         case 3: {
 96             if (result[1] == 1)
 97                 prize = 10;
 98             break;
 99         }
100         case 2: {
101             if (result[1] == 1)
102                 prize = 5;
103             break;
104         }
105         case 1: {
106             if (result[1] == 1)
107                 prize = 5;
108             break;
109         }
110         case 0: {
111             if (result[1] == 1)
112                 prize = 5;
113             break;
114         }
115         }
116         hasPrize[6] += prize;
117         return prize;
118     }
119 
120     public static String level(int prize) {
121         switch (prize) {
122         case 10000000:
123             hasPrize[0]++;
124             return "一等獎";
125         case 3000000:
126             hasPrize[1]++;
127             return "二等獎";
128         case 3000:
129             hasPrize[2]++;
130             return "三等獎";
131         case 200:
132             hasPrize[3]++;
133             return "四等獎";
134         case 10:
135             hasPrize[4]++;
136             return "五等獎";
137         case 5:
138             hasPrize[5]++;
139             return "六等獎";
140         default:
141             return "未中獎";
142         }
143     }
144 }
主界面

----------------------------------------------------------------------------------------------------------------------------------

這個雙色球小遊戲是我在體驗營的一個小作業,本意是練習數組的使用,但是因為我有在自學一點相關知識,就嘗試使用了正則表達式以及面向對象的寫法,在寫這個的時候我才剛剛接觸Java不久,類之間的依賴關系感覺還不太好,索性還有點c語言的基礎,學起Java感覺也很有趣,但面向對象的思想還需要多多練習。

----------------------------------------------------------------------------------------------------------------------------------

二、自我介紹

本人目前是一名大一在校生,原本是機械專業,在上學期加入了一個科創類社團,第一次真正接觸程序設計。接觸之後我就深深地被其所吸引,並在下學期下定決心轉專業到了計算機專業。

在社團我是做單片機編程的,個人對網站開發也有些興趣,日後也希望在計算機行業就業,所以報名了一個暑期體驗營學習Java,體驗營的老師建議我們早些開始寫自己的技術博客,固在斟酌之後決定在這裏開始自己的第一篇博客。就算沒有多少人看,我也想堅持下去,不濟也可以當作自己的小筆記,若是以後自己的文章能夠幫助某個人解決某個問題,那就很開心了,畢竟之前遇到的一些問題都是在大家的博客上得到的解決。

希望在這裏和廣大社區的朋友共同進步,感受程序的魅力。

第一篇博客:一個雙色球遊戲 、以及個人介紹