java双色球游戏 第一篇博客:一个java双色球游戏 、以及个人介绍

https://blog.csdn.net/activity_time/article/details/81049659

第一篇博客:一个java双色球游戏 、以及个人介绍

<div class="article-info-box">
    <div class="article-bar-top d-flex">
                                            <span class="time">2018年07月15日 03:07:11</span>
        <div class="float-right">
            <span class="read-count">阅读数:25</span>
                                        </div>
    </div>
</div>
<article>
    <div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">
                <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css">
                    <div class="htmledit_views">
            <h2><a name="t0"></a>一、双色球小游戏</h2>

双色球类(6红1蓝):


   
   
  1. package top.liaoyingpeng.bean;
  2. import java.util.Arrays;
  3. public class Balls {
  4. private int[] red = new int[ 6];
  5. private int blue;
  6. private BallBox makeBy;
  7. // 全机器生成
  8. protected Balls(BallBox bx) {
  9. makeBy = bx;
  10. }
  11. // 比较
  12. public byte[] equals(Balls obj) {
  13. byte[] num = { 0, 0 };
  14. if (blue == obj.blue) {
  15. num[ 1] = 1;
  16. } else {
  17. num[ 1] = 0;
  18. }
  19. for ( int i : obj.red) {
  20. for ( int j : this.red) {
  21. if (i == j)
  22. num[ 0]++;
  23. }
  24. }
  25. return num;
  26. }
  27. // 设置球
  28. public int getRed(int n) {
  29. return this.red[n];
  30. }
  31. public int[] getAllRed(){
  32. return red;
  33. }
  34. protected void setRed(int n, int red) {
  35. this.red[n] = red;
  36. }
  37. public int getBlue() {
  38. return blue;
  39. }
  40. protected void setBlue(int blue) {
  41. this.blue = blue;
  42. makeBy.blue = true;
  43. }
  44. // 显示全部
  45. @Override
  46. public String toString() {
  47. return Arrays.toString(red) + "[" + blue + "]";
  48. }
  49. }

球箱类(生成双色球):


   
   
  1. package top.liaoyingpeng.bean;
  2. import java.util.LinkedHashSet;
  3. import java.util.Random;
  4. import java.util.Scanner;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7. public class BallBox {
  8. private LinkedHashSet<Integer> red = new LinkedHashSet<Integer>(); // 1-33已抽出的红球
  9. Scanner sc = new Scanner(System.in);
  10. private Balls Making = null; // 正在抽的球组
  11. private Random rd = new Random();
  12. protected boolean blue = false; // 标识蓝色球是否抽出
  13. // 球填充
  14. public BallBox() {
  15. }
  16. // 获得随机双色球组
  17. public Balls getRandomBalls() {
  18. if (!isUsed()) {
  19. Making = new Balls( this);
  20. int num;
  21. for ( int i = 0 + red.size(); i < 6; i++) {
  22. do {
  23. num = rd.nextInt( 33) + 1; // 1-33
  24. } while (red.contains(num));
  25. red.add(num);
  26. Making.setRed(i, num);
  27. }
  28. if (!blue) {
  29. Making.setBlue(rd.nextInt( 16) + 1);
  30. } // 1-16
  31. return Making;
  32. } else {
  33. return null;
  34. }
  35. }
  36. // 购买双色球
  37. public Balls buy() {
  38. if (!isUsed()) {
  39. System.out.print( "请输入要购买的球号\n格式: [01, 23, 12, 11, 24, 05][15]\n您要购买:");
  40. int ball[] = null;
  41. while (ball == null) {
  42. ball = checkNum(sc.nextLine());
  43. }
  44. /* if (ball != null) {*/
  45. Making = new Balls( this);
  46. for ( int i = 0; i < 6; i++) {
  47. Making.setRed(i, ball[i]);
  48. }
  49. Making.setBlue(ball[ 6]);
  50. return Making;
  51. /* } else {
  52. return null;
  53. }*/
  54. } else {
  55. return null;
  56. }
  57. }
  58. // 格式检测
  59. private int[] checkNum(String balls) {
  60. int[] ball = new int[ 7];
  61. Pattern p = Pattern.compile( "[0-9][0-9]");
  62. Matcher m = p.matcher(balls);
  63. int i;
  64. for (i = 0; i < 10; i++) { //容错
  65. if (m.find()) {
  66. ball[i] = new Integer(m.group());
  67. if (ball[i] > 33 || ball[i] == 0) {
  68. break;
  69. }
  70. } else {
  71. break;
  72. }
  73. }
  74. // System.out.println(i);
  75. if (ball[ 6] <= 16 && i == 7 //应正好7个
  76. && 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*")) {
  77. return ball;
  78. } else {
  79. System.out.println( "格式或球号错误 请重新输入");
  80. return null;
  81. }
  82. }
  83. // 重置球箱
  84. public void clear() {
  85. red.clear();
  86. blue = false;
  87. Making = null;
  88. }
  89. // 是否已抽出蓝色球
  90. public boolean isBlued() {
  91. return blue;
  92. }
  93. // 已抽出红球个数
  94. public int alRed() {
  95. return red.size();
  96. }
  97. // 是否以抽完
  98. public boolean isUsed() {
  99. if (red.size() == 6 && blue)
  100. return true;
  101. else
  102. return false;
  103. }
  104. // 是否正在或已使用
  105. public boolean isUsing() {
  106. if (Making != null)
  107. return true;
  108. else
  109. return false;
  110. }
  111. }

 

主界面(main):


   
   
  1. package top.liaoyingpeng.view;
  2. import java.util.Scanner;
  3. import top.liaoyingpeng.bean.BallBox;
  4. import top.liaoyingpeng.bean.Balls;
  5. public class Test {
  6. static Scanner sc = new Scanner(System.in);
  7. static int[] hasPrize = { 0, 0, 0, 0, 0, 0, 0 }; // 1-6等奖 奖金;
  8. static int times = 0; //抽奖次数
  9. public static void main(String[] args) {
  10. System.out.println( "**********双色球游戏**********");
  11. System.out
  12. .println( "规则:\n\t选择6个红球和1个蓝球 \n\t红色球号码从1--33中选择\n\t蓝色球号码从1--16中选择");
  13. System.out.println( "\t由系统随机生成一组双色球\n\t用户进行单式投注\n\n按回车键开始投注");
  14. sc.nextLine();
  15. while (game())
  16. ;
  17. System.out.println( "游戏结束---退出ing");
  18. sc.close();
  19. }
  20. public static boolean game() {
  21. System.out.println( "******************************");
  22. BallBox bx = new BallBox();
  23. Balls player;
  24. Balls gover;
  25. System.out.println( "请选择:\n\t1)手动下注\n\t2)自动下注");
  26. if ( "1".equals(sc.nextLine())) {
  27. player = bx.buy();
  28. } else {
  29. player = bx.getRandomBalls();
  30. System.out.println( "您购买了:" + player.toString());
  31. }
  32. bx.clear(); // 重置球箱
  33. gover = bx.getRandomBalls();
  34. byte[] result = player.equals(gover);
  35. int prize = prize(result);
  36. System.out.println( "开奖情况:" + gover.toString());
  37. System.out.println( "您共猜中红球" + result[ 0] + "个,蓝球" + result[ 1] + "个\n");
  38. if (prize > 0) {
  39. String lv = level(prize);
  40. System.out.println( "恭喜您获得" + lv + " 奖金" + prize + "元");
  41. } else {
  42. System.out.println( "抱歉 您未获奖\n******************************");
  43. }
  44. times++;
  45. showPrize();
  46. System.out.println( "按回车再来一次\n输入exit退出游戏");
  47. if ( "exit".equals(sc.nextLine()))
  48. return false;
  49. else
  50. return true;
  51. }
  52. public static void showPrize() {
  53. System.out.println( "您已获得:\n\t一等奖 " + hasPrize[ 0] + " 次");
  54. System.out.println( "\t二等奖 " + hasPrize[ 1] + " 次");
  55. System.out.println( "\t三等奖 " + hasPrize[ 2] + " 次");
  56. System.out.println( "\t四等奖 " + hasPrize[ 3] + " 次");
  57. System.out.println( "\t五等奖 " + hasPrize[ 4] + " 次");
  58. System.out.println( "\t六等奖 " + hasPrize[ 5] + " 次");
  59. System.out.println( "\t\t獎金共 " + hasPrize[ 6] + " 元");
  60. System.out.println( "\t\t投注共 " + times + " 注\n");
  61. }
  62. public static int prize(byte[] result) {
  63. int prize = 0;
  64. switch (result[ 0]) {
  65. case 6: {
  66. if (result[ 1] == 1)
  67. prize = 10000000;
  68. else
  69. prize = 3000000;
  70. break;
  71. }
  72. case 5: {
  73. if (result[ 1] == 1)
  74. prize = 3000;
  75. else
  76. prize = 200;
  77. break;
  78. }
  79. case 4: {
  80. if (result[ 1] == 1)
  81. prize = 200;
  82. else
  83. prize = 10;
  84. break;
  85. }
  86. case 3: {
  87. if (result[ 1] == 1)
  88. prize = 10;
  89. break;
  90. }
  91. case 2: {
  92. if (result[ 1] == 1)
  93. prize = 5;
  94. break;
  95. }
  96. case 1: {
  97. if (result[ 1] == 1)
  98. prize = 5;
  99. break;
  100. }
  101. case 0: {
  102. if (result[ 1] == 1)
  103. prize = 5;
  104. break;
  105. }
  106. }
  107. hasPrize[ 6] += prize;
  108. return prize;
  109. }
  110. public static String level(int prize) {
  111. switch (prize) {
  112. case 10000000:
  113. hasPrize[ 0]++;
  114. return "一等奖";
  115. case 3000000:
  116. hasPrize[ 1]++;
  117. return "二等奖";
  118. case 3000:
  119. hasPrize[ 2]++;
  120. return "三等奖";
  121. case 200:
  122. hasPrize[ 3]++;
  123. return "四等奖";
  124. case 10:
  125. hasPrize[ 4]++;
  126. return "五等奖";
  127. case 5:
  128. hasPrize[ 5]++;
  129. return "六等奖";
  130. default:
  131. return "未中奖";
  132. }
  133. }
  134. }

———————————————————————————————————————————-

这个双色球小游戏是我在体验营的一个小作业,本意是练习数组的使用,但是因为我有在自学一点相关知识,就尝试使用了正则表达式以及面向对象的写法,在写这个的时候我才刚刚接触Java不久,类之间的依赖关系感觉还不太好,索性还有点c语言的基础,学起Java感觉也很有趣,但面向对象的思想还需要多多练习。

———————————————————————————————————————————-

二、自我介绍

        本人目前是一名大一在校生,原本是机械专业,在上学期加入了一个科创类社团,第一次真正接触程序设计。接触之后我就深深地被其所吸引,并在下学期下定决心转专业到了计算机专业。

        在社团我是做单片机编程的,个人对网站开发也有些兴趣,日后也希望在计算机行业就业,所以报名了一个暑期体验营学习Java,体验营的老师建议我们早些开始写自己的技术博客,固在斟酌之后决定在这里开始自己的第一篇博客。就算没有多少人看,我也想坚持下去,不济也可以当作自己的小笔记,若是以后自己的文章能够帮助某个人解决某个问题,那就很开心了,毕竟之前遇到的一些问题都是在大家的博客上得到的解决。

    希望在这里和广大社区的朋友共同进步,感受程序的魅力。



    <div class="article-bar-bottom">
                    <div class="tags-box artic-tag-box">
        <span class="label">文章标签:</span>
                    <a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=小游戏&amp;t=blog" target="_blank">小游戏                       </a><a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=JavaSE&amp;t=blog" target="_blank">JavaSE                     </a><a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=双色球&amp;t=blog" target="_blank">双色球                       </a><a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=数组&amp;t=blog" target="_blank">数组                     </a><a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=正则表达式&amp;t=blog" target="_blank">正则表达式                       </a>
    </div>
                    <div class="tags-box">
        <span class="label">个人分类:</span>
                    <a class="tag-link" href="https://blog.csdn.net/activity_time/article/category/7803941" target="_blank">随笔                      </a><a class="tag-link" href="https://blog.csdn.net/activity_time/article/category/7805742" target="_blank">JavaSE                      </a>
    </div>
                            <div class="tags-box hot-word">
        <span class="label">相关热词:</span>
                    <a class="tag-link" href="https://blog.csdn.net/xtigmh/article/details/161005" target="_blank">
        1999年第一篇            </a>
                    <a class="tag-link" href="https://blog.csdn.net/swj110119/article/details/7261698" target="_blank">
        c第一篇            </a>
                    <a class="tag-link" href="https://blog.csdn.net/Ajesciaje/article/details/51122408" target="_blank">
        第一篇sci          </a>
                    <a class="tag-link" href="https://blog.csdn.net/tzt1026/article/details/80329287" target="_blank">
        第一篇cnn          </a>
                    <a class="tag-link" href="https://blog.csdn.net/shenziheng1/article/details/53469946" target="_blank">
        第一篇学术论文         </a>
                </div>
        </div>

<!-- !empty($pre_next_article[0]) -->
            <div class="related-article related-article-next text-truncate">
    <a href="https://blog.csdn.net/activity_time/article/details/81052864">
        <span>下一篇</span>技术博客那些事儿-如何写好博客     </a>
</div>
</div>

猜你喜欢

转载自blog.csdn.net/qq_21273155/article/details/81147417