简易[C#]个人项目_彩票中奖系统

个人写作项目:彩票中奖系统

/*玩法说明
双色球投注区分红蓝,红球范围为01-33,蓝球范围为01-16
每期从红色中开出六个号码,蓝色中开出一个号码作为中奖号码
竞猜开奖6个红球号码和一个蓝球号码
顺序不限 号码不可重复
一等奖 6+1
二等奖 6+0
三等奖 5+1
四等奖 5+0 4+1
五等奖 4+0 3+1
六等奖 2+1 1+1 0+1

要求:
1.控制台中购买彩票的方法
“请输入第一个红球号码”
“号码不能超过1-33”
“当前号码已存在”
2.随机产生一注彩票的方法
random.Next(1,34)(左等右不等)
要求:红球号码不能重复,而且从小到大排序
3.俩注彩票比较的方法,返回中奖等级
先计算红球蓝球中奖数量

在Main中测试
*/

测试类:

 static void Main()
 {
     GetTotalDays getTotalDays =new GetTotalDays();
     int level; int count = 2;
     do
     {
         int[] myTicket = getTotalDays.BuyTicket();
         int[] dandomTicket = getTotalDays.CreateRandomTicket();
         level = getTotalDays.TicketEquals(myTicket, dandomTicket);
         if (level != 0) Console.WriteLine("恭喜中了{0}等奖,共消费{1:c}元", level, count);
         else Console.WriteLine("对不起,并未中奖,谢谢惠顾.本次消费共{0}", count);
         count += 2;
     } while (level != 1);
 }

参与类:

 public class GetTotalDays
 {
     //
     /// <summary>
     /// 存储彩票号码
     /// </summary>
     /// <returns>返回用户所写彩票号码,1-6为红球,第七个为蓝球</returns>
     public int[] BuyTicket()
     {
         int[] ticket = new int[7];

         //前六个红球
         for (int i = 0; i < 6;)
         {
             Console.WriteLine("请输入第{0:d2}个红球号码:", i + 1);
             int redNumber = int.Parse(Console.ReadLine());
             if (redNumber < 1 || redNumber > 33) Console.WriteLine("购买号码超过范围");
             else if (Array.IndexOf(ticket, redNumber) > 0) Console.WriteLine("号码已存在");
             else ticket[i++] = redNumber;
         }
         //第七个蓝球
         int blueNumber;
         do
         {
             Console.WriteLine("请输入蓝球号码:");
             blueNumber = int.Parse(Console.ReadLine());
             if (blueNumber < 1 || blueNumber > 17) Console.WriteLine("输入号码有误:");
             else ticket[6] = blueNumber;
         } while (blueNumber > 16 || blueNumber < 0);
         /* 或者whlie(ture)  (死循环模式,较为简单不用写条件)
         whlie(true)
         {
             Console.WriteLine("请输入蓝球号码:");
             blueNumber = int.Parse(Console.ReadLine());
             if (blueNumber < 1 || blueNumber > 16) Console.WriteLine("输入号码有误:");
             else 
            {
                    ticket[6]= blueNumber;
                    break;
             }
         }
         */
         return ticket;

     }
     /// <summary>
     /// 机选彩票号码
     /// </summary>
     /// <returns>排序完毕的红球与第七个蓝球号码</returns>
     public int[] CreateRandomTicket()
     {
         int[] ticket = new int[7];
         for (int i = 0; i < 6;)
         {
             int redNumber = random.Next(1, 34);
             if (Array.IndexOf(ticket, redNumber) < 0) ticket[i++] = redNumber;
         }
         ticket[6] = random.Next(1, 17);
         //红球号码排序
         Array.Sort(ticket, 0, 6);
         return ticket;
     }
     /// <summary>
     /// 计算中奖号码数量并计算中了几等奖
     /// </summary>
     /// <param name="myTicket">用户输入号码</param>
     /// <param name="randomTicket">计算机生成随机号码</param>
     /// <returns>以level显示中了几等奖</returns>
     public int TicketEquals(int[] myTicket, int[] randomTicket)
     {
         //计算红球蓝球中奖数量
         int blueCount = myTicket[6] == randomTicket[6] ? 1 : 0;
         int redCOunt = 0;
         int level = 0;
         //我第红球号码在随机号码中是否存在
         for (int i = 0; i < 6; i++)
             if (Array.IndexOf(randomTicket, myTicket[i], 0, 6) >= 0)
                 redCOunt++;
         //不要涉及控制台显示
         switch (blueCount)
         {
             case 0:
                 switch (redCOunt)
                 {
                     case 4: level = 5; break;
                     case 5: level = 4; break;
                     case 6: level = 2; break;
                     case 3:
                     case 2:
                     case 1: level = 0; break;
                 }
                 break;
             case 1:
                 switch (redCOunt)
                 {
                     case 6: level = 1; break;
                     case 5: level = 3; break;
                     case 4: level = 4; break;
                     case 3: level = 5; break;
                     case 2: level = 6; break;
                     case 1: level = 6; break;
                 }
                 break;
             default: break;
         }
         return level;
     }
     //本行语句放到方法外类内
     static Random random = new Random();
 }

思路:

分开计算是否中奖,分开排序计算

问题:

方法通用性不行,方法内Console用法较多,需要修改

总结:

转换较为正常,思路较为通常,在方法与写作上有较大提升空间

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值