C# 练习,彩票生成器初级模拟

实现这个功能,比较重要的几个知识点:

1.do while 循环

2.Array基类自带的一些功能,和方法的重载,涉及到排序和查找,查找分范围,排序分范围

3.for循环,通过把循环条件变量i++,下移到满足的功能中,来实现不满足的时候,就一直停留在原循环中。(这里我卡住了)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200328
{
    class Program
    {
        static Random random = new Random();
        static void Main(string[] args)
        {
            /*
             * 红球1-33    6个   不能重复
             * 篮球1-16    1个
             * 不限制顺序
             * (1)控制台中 购买彩票法法
             * “请输入第一个红色球号码”
             * “号码不能超过1-33”“当前号码一件存在”
             * (2)随机产生一注方法
             * staic Random random = new Random()
             * random。Next(1,34)
             * 要求:红球号码不能重复,且按照从小到大排序
             * (3)两注彩票比较方法,返回中奖等级
             * 先计算红球和篮球的中奖数量
             * 在main 中测试
             */
            int[] buyNumb = BuyNum();
            //Console.WriteLine("本期彩票是"+rewardNumb);
            //Console.WriteLine("本期你购买彩票是" + buyNumb);
            //Console.WriteLine("获奖是" + WinWhat(buyNumb, rewardNumb));
            int level = 0;
            int count = 0;
            do
            {
                count++;
                int[] randomTicket = RewordNum();
                level = WinWhat(buyNumb, randomTicket);
                if (level != 0)
                {
                    Console.WriteLine("恭喜{0},累计消费:{1:c}", level, count * 2);
                }
            } while (level != 1);
            Console.ReadLine();
        }
        static int[] BuyNum()
        {
            int[] blueRedNum = new int[7];
            //int[] redNum = new int[6];
            //int blueNum;
            //这里先用红色球接收,判断完成后再存入蓝绿之中,整个循环的关键在于把i++放在存入数据之后才加
            for (int i = 0; i < 6;)
            {
                Console.WriteLine("请输入第{0} 个红色球号码", i + 1);
                int temp = int.Parse(Console.ReadLine());
                //判断是否已经存在
                if (Array.IndexOf(blueRedNum, temp) >= 0)
                {
                    Console.WriteLine("此号码已经存在");
                }
                else if (temp < 1 || temp > 33)
                {
                    Console.WriteLine("号码超过范围");
                }
                else
                {
                    //关键点,只有确认数据存进来了,才会+1,存下一个数据
                    blueRedNum[i++] = temp;
                }
            }
            //篮球放在了第6个索引位置,调试无误
            do
            {
                Console.WriteLine("请输入1个蓝色色球号码");
                blueRedNum[6] = int.Parse(Console.ReadLine());

            } while (blueRedNum[6] < 1 || blueRedNum[6] > 16);
            Array.Sort(blueRedNum, 0, 6);
            return blueRedNum;
        }
        static int[] RewordNum()
        {
            int[] rewordNum = new int[7];

            int temp;
            for (int i = 0; i < 6;)
            {
                temp = random.Next(1, 34);
                if (Array.IndexOf(rewordNum, temp) < 0)
                {
                    //还是那个表示,如果没成功,循环的条件不变化,特别聪明
                    rewordNum[i++] = temp;
                }
            }
            rewordNum[6] = random.Next(1, 17);
            Array.Sort(rewordNum, 0, 6);
            return rewordNum;
        }
        static int WinWhat(int[] buyNum, int[] rewordNum)
        {
            int win_what = 0;
            int is_blue = 0;
            int is_red = 0;
            //篮球号码
            if (buyNum[6] == rewordNum[6])
            {
                is_blue += 1;
            }
            //红球号码
            for (int i = 0; i < 6; i++)
            {
                //这一句Array类中自带的方法重载可以直接实现只遍历rewordNum的前6个数据的方法
                //当然了可以再嵌套一个for循环j++ 的也可以实现这个效果,避免篮球的数值造成影响
                if (Array.IndexOf(rewordNum, buyNum[i], 0, 6) >= 0)
                {
                    is_red += 1;
                }
            }
            if (is_blue == 1 && is_red == 6)
            {
                win_what = 1;
            }
            else if (is_blue == 0 && is_red == 6)
            {
                win_what = 2;
            }
            else if (is_blue == 1 && is_red == 5)
            {
                win_what = 3;
            }
            else if ((is_blue == 0 && is_red == 5) || (is_blue == 1 && is_red == 4))
            {
                win_what = 4;
            }
            else if ((is_blue == 1 && is_red == 3) || (is_blue == 0 && is_red == 4))
            {
                win_what = 5;
            }
            else if ((is_blue == 1 && is_red == 2) || (is_blue == 1 && is_red == 1) || (is_blue == 1 && is_red == 0))
            {
                win_what = 6;
            }
            return win_what;
        }
    }
}
 

你可能感兴趣的:(Unity3D技术学习)