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

一、双色球小游戏

双色球类(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,体验营的老师建议我们早些开始写自己的技术博客,固在斟酌之后决定在这里开始自己的第一篇博客。就算没有多少人看,我也想坚持下去,不济也可以当作自己的小笔记,若是以后自己的文章能够帮助某个人解决某个问题,那就很开心了,毕竟之前遇到的一些问题都是在大家的博客上得到的解决。

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

原文地址:https://www.cnblogs.com/ACTIM/p/9313224.html

时间: 2024-10-06 10:38:45

第一篇博客:一个双色球游戏 、以及个人介绍的相关文章

第一篇博客,希望是一个好的开始

博客园"占座位" 因为学习专业的原因,经常浏览博客学习和解惑.在前辈们的作品中学到了很多,也感受到了很多.通过博客的方式去分享知识和记录自己的成长.这种积极向上的,乐于分享的精神,让我很受鼓舞.我时刻准备着加入这一大军的行列.于是我就注册了个账号,呵呵. 第一篇博客 经常会突发奇想的计划着怎么怎么样,却在行动的时候虎头蛇尾了,很难坚持作下去.这或许是很多人都存在的问题.在别人博客上看到:"或许写博客是一个不错的方法".通过博客,经常来记录一下自己的学习,分享一下自己

我的第一篇博客《Hello World》

Hello World! 大家好,这是我的第一篇博客. 作为一名程序员,为了保持优良的传统,所以就从Hello World 开始吧. 简单的介绍 关于名字 本人呢不太会起名字,试了好多个都被占用了,受一本小说影响,所以就起了这个名字. 同时呢,大家可以叫我铵静,做一个铵静的美男子哈. “高手有一颗寂寞的心,因为高手的造就本就是用寂寞堆积而成” —— <高手寂寞> 作者:兰帝魅晨 我的日常 目前主要从事Java EE企业级应用开发相关工作,业余时对网络安全比较感兴趣.周末主要是看看书,听听歌,偶

我的第一篇博客记录我的IOS生涯

这是我的第一篇博客,只为了记录我在IOS开发旅程中得成长之路,一直觉得能发表几百篇的都是大牛,一直都是我崇拜的对象,我希望现在的一小步能成为将来的一大步,坚持每天发表一篇博文,养成一个良好的每天学习新知识的习惯,希望多年以后点开这第一篇博客能感叹当初的自己是多么的幼稚,但也感谢当年的坚持!come on!活着就是为了改变世界!

第一篇博客《import tensorflow的问题解决》

在jupyter notebook中死活无法import jupyter 搞了很久,最后是解决了,过程如下: 1)安装anaconda3 4.2.0版本 2)解决activate tensorflow问题 3)解决import tensorflow问题 以下就两个方面进行详细记录: 1)activate tensorflow失败问题 https://www.cnblogs.com/lvsling/p/8672404.html 根据以上文章操作,解决了激活tensorflow的问题,上述文章我是只

第一篇博客当测试,codeigniter遇到坑了

第一篇博客当测试,codeigniter遇到坑了,耽误了1天时间,才弄明白 如果你发现无论输入什么 URL 都只显示默认页面的话,那么可能是你的服务器不支持 PATH_INFO 变量,该变量用来提供搜索引擎友好的 URL . 解决这个问题的第一步是打开 application/config/config.php 文件, 找到 URI Protocol 信息,根据注释提示,该值可以有几种不同的设置方式, 你可以逐个尝试一下. 如果还是不起作用,你需要让 CodeIgniter 强制在你的 URL

Hello World —— 我的第一篇博客

2019.2.22,我开始写起了属于我的博客,没有什么花里胡哨的想法,目的很简单:就想将自己在学习过程中的每一阶段所学到的知识.所遇到的问题用文字的方式记录下来,方便以后回头看看的时候,能知道自己在这个行业里处于一个什么阶段.好了,废话不多说,第一篇博客,不谈技术,先聊聊自己的一些想法吧.我最喜欢的一件事就是在晚上,一个人静静地坐在那里,看着满天繁星,思考着自己的问题,那时候很安静,很孤独.不过我喜欢孤独.技术也是这样,学技术的道路是孤独,是寂寞的,你要靠你自己一点点提升,难受了你要靠你自己挺过

我的第一篇博客--css 清除浮动

第一篇博客,请大家多多指教! 今天我浅谈对网页编写css中清除浮动几种方法,众所周知在网页编写中,在遇到内容左右布局时,我们必须要使用浮动才能使元素左右排列,而这时 当我们需在下面的网页中继续布局时,浮动就会给下面的元素带来影响,就需要使用清除浮动了. 清除浮动作为每一个Web前端必须掌握的技能,在逆战班学习中我想说说我对不同清除浮动方法的理解和使用方式,下面来介绍一下几种清除浮动的 方法:1.当解决上下排列的情况时,利用clear清除float,具体值为:right.left.both:我在使

我的第一篇博客 —— 用 js 和 css 简单实现瀑布流布局

一个拖延症晚期患者的自述: 注册了博客快一个月了,终于要迎来我的第一篇博客了哈哈哈!!! 刚注册的时候,满脑子要频繁更新,扩充自己的知识库,一到真正落实,就不得不为懒惰屈服,还好有了学习计划,以后应该会每周一更(不更当我没说).当然了,肯定是希望被更多人看到,帮助到大家,如果没人看的话就当作是自己的积累与记录吧! 还有,我目前工作是前端工程师,还是一名刚入行不久的菜鸟哈哈哈!!!现在主要目标是先把前端知识巩固好,再逐步往全栈领域发展(毕竟装13是我一生的职责). 所以,请各位大佬们多多指教,如果

第一篇博客——基于数组的优先队列(java版)

看过园子里和CSND上那么多大牛精彩的博客后,早就按捺不住想亲手写上几篇.奈何每次坐在电脑前准备敲字的时候,立马赶到浑身不自在,无从下手.实在是因为自高考之后,大学以来,本人几乎就再没动笔写过一篇文字,写作水平退化实在严重.今天鼓起勇气开始写作博客,一方面希望通过多写慢慢地找回写作的感觉,一方面也希望通过博客和大家多多交流,共同进步. 既然是第一次试手,就写个简单易懂的内容——优先队列. 话不多说,先上代码. 1 /** 2 * @author Mr Left 3 * @version 1.0