在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#游戏开发 → C#挖地雷游戏源码 完整版 仅供学习交流

C#挖地雷游戏源码 完整版 仅供学习交流

C#游戏开发

下载此实例
  • 开发语言:C#
  • 实例大小:9.18M
  • 下载次数:24
  • 浏览次数:396
  • 发布时间:2013-01-09
  • 实例类别:C#游戏开发
  • 发 布 人:chaogu
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 游戏

实例介绍

【实例简介】
【实例截图】


【核心代码】

 

   [Serializable]
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }
        #region 声明等基本参数
        Random random2 = new Random();
        int count = 0;
        int showOneCount = 0;//判断你单击了多少次显示1颗地雷卡片
        Thread th;
        int bom;
        List<int> bombNum = new List<int>();
        List<UserInfo> info = new List<UserInfo>();
        UserInfo tempUserInfo = new UserInfo();
        List<UserInfo> info2 = new List<UserInfo>();//窗体加载时从该集合中调用数据
        Boolean isGameStart = false; //判断游戏是否开始了
        #endregion

        private void btnStart_Click(object sender, EventArgs e)
        {
            txtPoint.Text = "0";
            btnStartMethod();
        }

        private void btnStartMethod()
        {
            tsmiGoShop.Enabled = false;
            bom = int.Parse(textBox2.Text);
            if (bom < 10) { MessageBox.Show("雷数不能少于10个", "雷数填写提醒"); return; }
            else
            {
                if (int.Parse(comboBox1.Text) <= int.Parse(textBox2.Text))
                {
                    MessageBox.Show("输入的雷数过多!!!", "雷数提醒");
                    textBox2.SelectAll();
                    return;
                }
                else
                {
                    comboBox1.Enabled = false;
                    textBox2.Enabled = false;
                    UserTemp.gameType = comboBox1.Text   "格"   textBox2.Text   "雷";
                    StartCmd();
                }
            }
        }

        private void StartCmd()
        {
            UpdateForm_tsmiDaoJu();
            tsmiLook.Enabled = false;
            isGameStart = true;
            tsmiDaoJu.Enabled = true;
            tsmiNewGame.Visible = true;
            showOneCount = 0;
            #region 产生10个不重复的随机数
            int index = 0;//判断是否满足index的最大数个雷
            bombNum.Clear();
        label1:
            int bombIndex = random2.Next(1, Helper.gridNum   1);
            if (index == 0)
            {
                bombNum.Add(bombIndex);
                index  ;
            }
            else
            {
            label2:
                foreach (int i in bombNum)
                {
                    if (i == bombIndex)
                    {
                        bombIndex = random2.Next(1, Helper.gridNum   1);
                        goto label2;
                    }
                }
                bombNum.Add(bombIndex);
                index  ;
            }
            if (index < Helper.bombNum)
            {
                goto label1;
            }

            #endregion
      


            pnlGuess.Controls.Clear();
            pnlGuess.Width = Helper.xNum * Helper.btnWidth   Helper.xNum-1;
            pnlGuess.Height = Helper.yNum * Helper.btnWidth   Helper.yNum-1;
            this.Width = Helper.windowWidth;
            this.Height = Helper.windowHeight;
            int x = 0;
            int y = 0;
            for (int i = 1; i <=Helper.gridNum; i  )
            {
                Button button = new Button();
                button.Text = i.ToString();
                button.Name = i.ToString();
                button.Width = Helper.btnWidth;
                button.Height = Helper.btnWidth;
                button.Location = new Point(x, y);
                button.Click  = new EventHandler(button_Click);
                x  = Helper.btnWidth;
                if (i % Helper.xNum== 0)
                {
                    y  = Helper.btnWidth;
                    x = 0;
                }
                foreach (int j in bombNum)
                {
                    if (j == i)
                    {
                        button.Tag = j;
                     }

                }
                pnlGuess.Controls.Add(button);
            }
            SaveUserInfo.saveUserInfo();
            ThreadTime();
            btnStart.Enabled = false;
            tsmiStopGame.Visible = true;
        }

        private void ThreadTime()
        {
            Thread thread = new Thread(delegate()
            { //新建一条线程

                int t_count = 0;
                while (true)
                {
                    t_count =   t_count > 10000000 ? 0 : t_count;
                    this.Invoke(
                        (MethodInvoker)delegate { lblTime.Text = t_count.ToString(); }

                        );
                    Thread.Sleep(1000);
                }

            });
            th = thread;
            thread.IsBackground = true;
            thread.Start();
        }
        private void ThreadTime2()
        {
            th = new Thread(delegate()
            { //新建一条线程

                int t_count = int.Parse(lblTime.Text);
                while (true)
                {
                    t_count =   t_count > 10000000 ? 0 : t_count;
                    this.Invoke(
                        (MethodInvoker)delegate { lblTime.Text = t_count.ToString(); }
                        );
                    Thread.Sleep(1000);
                }

            });
            th.Start();
        }
        /// <summary>
        /// 判断输赢
        /// </summary>
        private void showBomb()
        {
            foreach (Control contro in pnlGuess.Controls)
            {
                if (contro is Button)
                {
                    int btnText = Convert.ToInt32(contro.Tag);
                    if (btnText != 0)
                        contro.BackgroundImage = Image.FromFile("BombImage\\Bomb.png");
                    contro.Enabled = false;
                }
                else {
                    contro.Enabled = false;
                }


            }
            btnStart.Enabled = true;
            count = 0;
            comboBox1.Enabled = true;
            textBox2.Enabled = true;
            tsmiNewGame.Visible = false;
          
        }
        /// <summary>
        /// 是否胜利
        /// </summary>
        private void isVictory() {
            if (int.Parse(txtNum.Text) == 0) {
                th.Abort();
                if (MessageBox.Show("恭喜你,游戏胜利!是否继续?", "游戏评估", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    lblTime.Text = "0";
                    tsmiNewGame.Visible = false;
                    txtNum.Text = (Helper.gridNum - Helper.bombNum).ToString();
                    txtPoint.Text = UserTemp.userPoint.ToString();
                    btnStartMethod();
                }
                else {
                    GameOver();
                    txtNum.Text = (Helper.gridNum - Helper.bombNum).ToString();
                
                }
            }
        }

        private void button_Click(object sender, EventArgs e) {
            
            Button btn1 = sender as Button;
      
            int btnText = Convert.ToInt32(btn1.Tag);
            if (btnText!=0)
            {

                btn1.BackgroundImage = Image.FromFile("BombImage\\BombDead.png");
                GameOver();
            }
            else {
                btn1.BackColor = Color.GreenYellow;
                btn1.ForeColor = Color.White;
                btn1.Text = " ";
                txtNum.Text = (int.Parse(txtNum.Text) - 1).ToString();
               
                txtPoint.Text = (int.Parse(txtPoint.Text)   int.Parse(txtBeiShu.Text)).ToString();
                btn1.Enabled = false;
                count  ;
                UserTemp.userPoint = int.Parse(txtPoint.Text);
                isVictory();
            }
            
          
        
        }

        /// <summary>
        /// 游戏结束,提示保存信息
        /// </summary>
        private void GameOver()
        {
            Boolean isUseHelpBomb=true;

            th.Abort();
            if (UserTemp.Card_Help > 0)
            {
                if (MessageBox.Show("你碰到了死亡地雷!\r你还有"   UserTemp.Card_Help.ToString()   "个救命地雷。\r是否使用救命地雷?", "死亡友好提示提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    UserTemp.Card_Help -= 1;
                    isUseHelpBomb = false;
                    UpdateForm_tsmiDaoJu();
                    AbortOrStart();
                }
            }
            if(isUseHelpBomb){
            int temp = int.Parse(txtPoint.Text) - int.Parse(lblTime.Text) / 2;
            if (temp < 0)
            {
                temp = 0;
            }
            isGameStart = false;
            tsmiDaoJu.Enabled = false;
            RectangleAndDraw();
            UserTemp.useTime = lblTime.Text   "秒";//存入游戏使用的时间
            UserTemp.userPoint = temp;//存入积分信息
            UserTemp.succeedStep = txtNum.Text;//存入剩余步数
            UserTemp.allpoint  = temp;
            SaveUserInformation();
            SaveUserInfo.saveUserInfo();
            MessageBox.Show("游戏结束!离成功还剩"   txtNum.Text   "步,用时"   lblTime.Text   "秒!\r减去时间的一半\r您共得了"   temp   "分");
            showBomb();
            tsmiLook.Enabled = true ;
            DialogResult iff = MessageBox.Show("是否保存成绩", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (iff == DialogResult.Yes)
            {
                UserInfo user1 = new UserInfo(UserTemp.name, UserTemp.userPoint, UserTemp.gameType, UserTemp.succeedStep, UserTemp.useTime, DateTime.Now.ToString("G"));
                SaveOrLoad sa = new SaveOrLoad();
                if (File.Exists("data\\user.rank"))
                {
                    info = sa.Load();
                }
                info.Add(user1);
                sa.Save(info);
                MessageBox.Show("保存成功!","保存提示");
           
            }
           
             TxtNumBeiShuChange();
            lblTime.Text = "0";
            txtPoint.Text = "0";
            tsmiNewGame.Visible = false;
            tsmiStopGame.Visible = false;
            tsmiGoShop.Enabled = true;
            UpdateForm_tsmiDaoJu();
            } 
        }

        /// <summary>
        /// 保存用户信息  
        /// </summary>
        private static void SaveUserInformation()
        {
            if (UserTemp.topPoint < UserTemp.userPoint) { UserTemp.topPoint = UserTemp.userPoint; }//此次是不是最高分,是的话更新
            UserInfo user = new UserInfo(UserTemp.name, UserTemp.userPoint, UserTemp.gameType, UserTemp.succeedStep, UserTemp.useTime, DateTime.Now.ToString("G"));
            if (UserTemp.useLiShi == null)
            {
                UserTemp.useLiShi = new List<UserInfo>();
                UserTemp.useLiShi.Add(user);
            }
            else
            {
                UserTemp.useLiShi.Add(user);//向个人信息集合中保存游戏记录
            }
            
        }
     

        /// <summary>
        /// 刷新倍数,成功步数
        /// </summary>
        private void TxtNumBeiShuChange()
        {
            txtNum.Text = (Helper.gridNum - Helper.bombNum).ToString();
            if (int.Parse(txtNum.Text) < 0)
            {
                txtNum.Text = "0";
            }
            txtBeiShu.Text = (Helper.gridNum / 10   Helper.bombNum / 2).ToString();
        }
    
        /// <summary>
        /// 窗体加载时
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            UpdateForm_tsmiDaoJu();
            Control.CheckForIllegalCrossThreadCalls = false;
            textBox2.Text = Helper.bombNum.ToString();
            comboBox1.SelectedIndex = 0;
            TxtNumBeiShuChange();
        }
        
        private void UpdateForm_tsmiDaoJu()
        {
            tsmiAllBomb.Text ="狂欢地雷×" UserTemp.Card_AllBomb.ToString();
            tsmiDoubleBeiShu.Text = "倍增地雷×"   UserTemp.Card_DoubleBeiShu.ToString();
            tsmiHalfTime.Text = "惜时地雷×"   UserTemp.Card_MinusHalfTime.ToString();
            tsmiOneBomb.Text = "孤独地雷×"   UserTemp.Card_showOneBomb.ToString();
            tsmiHelp.Text = "救命地雷×" UserTemp.Card_Help.ToString();
            tsmiRectangle.Text="方形地雷×" UserTemp.Card_Rectangle.ToString();
            tsmiDraw.Text = "画家地雷×"   UserTemp.Card_Pic.ToString();
            tsmi1000.Text = "1000积分×"   UserTemp.Card_1000;
            tsmi10000.Text = "10000积分×"   UserTemp.Card_10000;
            tsmi5000.Text = "5000积分×"   UserTemp.Card_5000;


            tltsmiAllBomb.Text ="狂欢地雷×" UserTemp.Card_AllBomb.ToString();
            tltsmiDoubleBeiShu.Text = "倍增地雷×"   UserTemp.Card_DoubleBeiShu.ToString();
            tltsmiHalfTime.Text = "惜时地雷×"   UserTemp.Card_MinusHalfTime.ToString();
            tltsmiOneBomb.Text = "孤独地雷×"   UserTemp.Card_showOneBomb.ToString();
            tltsmiHelp.Text = "救命地雷×"   UserTemp.Card_Help.ToString();
            tltsmiRectangle.Text="方形地雷×" UserTemp.Card_Rectangle.ToString();
            tltsmiDraw.Text = "画家地雷×"   UserTemp.Card_Pic.ToString();
            tltsmi1000.Text = "1000积分×"   UserTemp.Card_1000;
            tltsmi10000.Text = "10000积分×"   UserTemp.Card_10000;
            tltsmi5000.Text = "5000积分×"   UserTemp.Card_5000;
        }

        /// <summary>
        /// 格数对其他变量赋值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int index=comboBox1.SelectedIndex;
            switch (index) { 
                case 0: 
                Helper.gridNum = 100;
                Helper.xNum = 10;
                Helper.yNum = 10;
                Helper.btnWidth = 35;
                Helper.windowWidth = 413;
                Helper.windowHeight = 454;
                Helper.rectangleBombGridy = 4;
                Helper.rectangleBombGridx = 6;
                Helper.rectangleBombGridIndex = 33;
                    break;
                case 1:
                Helper.gridNum = 144;
                Helper.xNum = 12;
                Helper.yNum = 12;
                Helper.btnWidth = 35;
                Helper.windowWidth=481;
                Helper.windowHeight = 525;
                 Helper.rectangleBombGridy = 5;
                Helper.rectangleBombGridx = 8;
                Helper.rectangleBombGridIndex = 39;
                    break;
                case 2:
                    Helper.gridNum = 225;
                    Helper.xNum = 15;
                    Helper.yNum = 15;
                    Helper.btnWidth = 35;
                    Helper.windowWidth = 575;
                    Helper.windowHeight =620;
                 Helper.rectangleBombGridx = 11;
                Helper.rectangleBombGridy = 6;
                Helper.rectangleBombGridIndex = 63;
                    break;
                case 3:
                    Helper.gridNum =361;
                    Helper.xNum = 19;
                    Helper.yNum = 19;
                    Helper.btnWidth = 32;
                    Helper.windowWidth =655;
                    Helper.windowHeight =700;
               Helper.rectangleBombGridy = 7;
                Helper.rectangleBombGridx = 11;
                Helper.rectangleBombGridIndex = 119;
                    break;
            }
       
            TxtNumBeiShuChange();
        }

        /// <summary>
        /// 雷数设定时修改txtNum.Text的值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
                if (int.TryParse(textBox2.Text, out bom))
                {
                        Helper.bombNum = int.Parse(textBox2.Text);

                        TxtNumBeiShuChange();
                   }
                else
                {
                    textBox2.Text = "";
                }
                
        }

        private void 版本信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("制作人:杨洋\r制作时间:2011年5月18日\r版本:第一期","版本信息");
        }

        private void 排行榜ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (File.Exists("data\\user.rank"))
            {
                this.Visible = false;
                RankForm rank = new RankForm();
                rank.ShowDialog();
            }
            else
            {
                MessageBox.Show("目前还没有记录!\r祝贺你,你随便玩玩就可以是第一名啦!\r至少玩一局才能看排行榜", "排行提示");
            }
        }

        private void 玩家信息ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("玩家姓名:"   UserTemp.name  "\r游戏积分为" UserTemp.allpoint "\r你的最高分为"   UserTemp.topPoint.ToString()   "分\r  详细信息请查阅排行榜", "用户信息");
        }

        private void 换名登录ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            isGameStart = false;
            RectangleAndDraw();
            Helper.bombNum = 10;
            Helper.gridNum = 100;
            Helper.xNum = 10;
            Helper.yNum = 10;
            Helper.windowWidth = 413;
            Helper.windowHeight = 454;
            Helper.btnWidth = 35;
            SaveUserInfo.saveUserInfo();
            Login login = new Login();
            login.Visible = true;
            this.Visible = false;
         
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveUserInfo.saveUserInfo();
            Application.Exit();
        }

        private void tsmiNewGame_Click(object sender, EventArgs e)
        {
            txtPoint.Text = "0";
            TxtNumBeiShuChange();
            RectangleAndDraw();
            th.Abort();
            btnStartMethod();
        }

        private void tsmiStopGame_Click(object sender, EventArgs e)
        {
            th.Abort();
            TxtNumBeiShuChange();
            pnlGuess.Controls.Clear();
            comboBox1.Enabled = true;
            textBox2.Enabled = true;
            lblTime.Text = "0";
            txtPoint.Text = "0";
            btnStart.Enabled = true;
            tsmiNewGame.Visible = false;
            tsmiStopGame.Visible = false;
            isGameStart = false;
            tsmiGoShop.Enabled = true;
            tsmiDaoJu.Enabled = false;
            RectangleAndDraw();
        }

        private void RectangleAndDraw()
        {
            tsmiRectangle.Enabled = true;
            tltsmiRectangle.Enabled = true;
            tsmiDraw.Enabled = true;
            tltsmiDraw.Enabled = true;
        }

       

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            tsToolBox.Visible = true;
            if(isGameStart){
                tstlPropBag.Enabled = true;
            }else{
                tstlPropBag.Enabled = false ;
            }
            StartOrAbort();
        }

        private void tsToolBox_MouseMove(object sender, MouseEventArgs e)
        {
            tsToolBox.Visible = true;
        }

        private void tsToolBox_MouseLeave(object sender, EventArgs e)
        {
            tsToolBox.Visible = false;
            AbortOrStart();
        }

        private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e)
        {
            //StartOrAbort();
            SaveUserInfo.saveUserInfo();
                Application.Exit();
        }

        /// <summary>
        /// 停止线程
        /// </summary>
        private void StartOrAbort()
        {

            if (th != null)
            {
                if (th.ThreadState != ThreadState.Unstarted)
                {
                    th.Abort();
                }
            }
        }
        /// <summary>
        /// 鼠标一走后开始线程
        /// </summary>
        private void AbortOrStart()
        {
            if(isGameStart){
            if (th != null)
            {
                if (th.ThreadState == ThreadState.Stopped)
                {
                    ThreadTime2();
                }
            }
            }
        }
        private void 地雷显示1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (showOneCount < Helper.bombNum)
            {
                if (UserTemp.Card_AllBomb > 0)
                {
                    foreach (Control contro in pnlGuess.Controls)
                    {
                        if (contro is Button)
                        {
                            int btnText = Convert.ToInt32(contro.Tag);
                            if (btnText != 0)
                                contro.BackgroundImage = Image.FromFile("BombImage\\Bomb.png");
                        }
                    }
                    UserTemp.Card_AllBomb -= 1;
                    showOneCount = Helper.bombNum;
                    UpdateForm_tsmiDaoJu();
                }
            }
            else {
                MessageBox.Show("该地图上已无地雷可显示!", "单雷卡片使用提示");
            }
          
        }
        private void 显示一颗地雷ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (showOneCount >=Helper.bombNum)
            {
                MessageBox.Show("该地图上已无地雷可显示!", "单雷卡片使用提示");
                UserTemp.Card_showOneBomb  = 1;
            }else{
                if (UserTemp.Card_showOneBomb > 0)
                {
                    int i = 0;
                    foreach (Control contro in pnlGuess.Controls)
                    {
                        if (contro is Button)
                        {
                            int btnText = Convert.ToInt32(contro.Tag);
                            if (btnText != 0)
                            {
                                i  ;
                                contro.BackgroundImage = Image.FromFile("BombImage\\Bomb.png");
                                if (i == showOneCount)
                                {
                                    break;
                                }
                            }
                        }
                    }
                    UserTemp.Card_showOneBomb -= 1;
                    showOneCount  ;
                }
                    UpdateForm_tsmiDaoJu();
               }
        }

        private void 时间减半ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (UserTemp.Card_MinusHalfTime > 0)
            {
                StartOrAbort();
                lblTime.Text = (int.Parse(lblTime.Text) / 2).ToString();
                AbortOrStart();
                UserTemp.Card_MinusHalfTime -=1;
                UpdateForm_tsmiDaoJu();
            }
        }

        private void 倍数加倍1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (UserTemp.Card_DoubleBeiShu > 0)
            {
                
                txtBeiShu.Text = (int.Parse(txtBeiShu.Text) * 2).ToString();
                UserTemp.Card_DoubleBeiShu -= 1;
                UpdateForm_tsmiDaoJu();
            }
        }
     
        private void 道具ToolStripMenuItem_MouseMove(object sender, MouseEventArgs e)
        {
            StartOrAbort();
        }

        private void tsmiDaoJu_MouseLeave(object sender, EventArgs e)
        {
            AbortOrStart();
        }

        private void tsmiGoShop_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            ShopForm form = new ShopForm();
            form.ShowDialog();
        }

        private void tstlPlayerInfo_Click(object sender, EventArgs e)
        {
            UpdateForm_tsmiDaoJu();
            MessageBox.Show("狂欢地雷×"   UserTemp.Card_AllBomb.ToString()   "\r倍增地雷×"   UserTemp.Card_DoubleBeiShu.ToString()   "\r惜时地雷×"   UserTemp.Card_MinusHalfTime.ToString()   "\r孤独地雷×"   UserTemp.Card_showOneBomb.ToString()   "\r救命地雷×"   UserTemp.Card_Help.ToString()   "\r方形地雷×"   UserTemp.Card_Rectangle.ToString()   "\r画家地雷×"   UserTemp.Card_Pic.ToString(), UserTemp.name   "卡片情况");
        }

        private void tsmiDigHistory_Click(object sender, EventArgs e)
        {
            
            if (UserTemp.useLiShi != null)
            {
                this.Visible = false;
                PersonalForm fa = new PersonalForm();
                fa.ShowDialog();
            }
            else
            {
                MessageBox.Show("因为你还没玩该游戏,所以记录信息为0,请玩后在查看自己的挖雷信息", "查看挖雷信息提示");
            }
        }

        private void tsmiMyGoodGrade_Click(object sender, EventArgs e)
        {
            MessageBox.Show("你玩的最高分是" UserTemp.topPoint.ToString() "分\r  详细信息请查阅排行榜");
        }
  
     
        private void tsmiRectangle_Click(object sender, EventArgs e)
        {
            RectangleBomb();
        }
        private void RectangleBomb()
        {
            List<int> index = new List<int>();
            if (UserTemp.Card_Rectangle > 0)
            {
                #region 创建矩形方块数组
                index.Clear();
                int j = 1;
                int lengt = Helper.rectangleBombGridx * Helper.rectangleBombGridy;
                int index1 = Helper.rectangleBombGridIndex;//备份索引
                for (int i = 0; i < lengt; i  )
                {
                    if (j > Helper.rectangleBombGridx)
                    {
                        Helper.rectangleBombGridIndex = Helper.rectangleBombGridIndex   Helper.xNum - Helper.rectangleBombGridx;
                        j = 1;
                    }
                    index.Add(Helper.rectangleBombGridIndex);
                    Helper.rectangleBombGridIndex  ;
                    j  ;
                }
                Helper.rectangleBombGridIndex = index1;
                #endregion
                DrawPnl(index);
                UserTemp.Card_Rectangle -= 1;
                UpdateForm_tsmiDaoJu();
                tsmiRectangle.Enabled = false;
                tltsmiRectangle.Enabled = false;

            }
            else
            {
                MessageBox.Show("你的方形地雷个数为0", "操作失败");
            }
        }
        private void DrawPnl(List<int> index)
        {
            int k = 0;

            foreach (Control contro in pnlGuess.Controls)
            {
               
                if (contro is Button)
                {
                    if (index.Contains(int.Parse(contro.Name)))
                    {
                        int btnText = Convert.ToInt32(contro.Tag);
                        if (btnText != 0)
                        {
                            contro.BackgroundImage = Image.FromFile("BombImage\\Bomb.png");
                        }
                        else
                        {
                            k  ;
                            txtNum.Text = (int.Parse(txtNum.Text) - 1).ToString();
                            txtPoint.Text = (int.Parse(txtPoint.Text)   int.Parse(txtBeiShu.Text)).ToString();
                            contro.BackColor = Color.Red;
                            contro.ForeColor = Color.White;
                            contro.Text = " ";
                            contro.Enabled = false;
                        }
                    }
                }
            }
            if (k == index.Count) {
                StartOrAbort();
                MessageBox.Show("恭喜你!画家地雷实现自己的愿望\r图画的很完整,没有发现任何一个死亡地雷!\r进入抽奖环节");
                int type=0;
                do{
                Random random = new Random();
                type = random.Next(1, 13);
                int num = random.Next(1,4);
                Spin(type,num);
                }while(type<12);
                MessageBox.Show("抽奖过程结束!");
                SaveUserInfo.saveUserInfo();
            }

        }
        /// <summary>
        /// 开心抽奖
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Spin(int type,int num) {
            switch (type)
            {
                case 1:
                    MessageBox.Show("恭喜你获得了 狂欢地雷×" num);
                    UserTemp.Card_AllBomb  = num;
                    break;
                case 2:
                case 3:
                    MessageBox.Show("恭喜你获得了 孤独地雷×"   num);
                    UserTemp.Card_showOneBomb  = num;
                    break;
                case 4:
                case 5:
                case 6:
                    MessageBox.Show("恭喜你获得了 惜时地雷×"   num);
                    UserTemp.Card_MinusHalfTime  = num;
                    break;
                case 7:
                case 8:
                    MessageBox.Show("恭喜你获得了 倍增地雷×"   num);
                    UserTemp.Card_DoubleBeiShu  = num;
                    break;
                case 9:
                    MessageBox.Show("恭喜你获得了 救命地雷×"   num);
                    UserTemp.Card_Help  = num;
                    break;
                case 10:
                    MessageBox.Show("恭喜你获得了 方形地雷×"   num);
                    UserTemp.Card_Rectangle  = num;
                    break;
                case 11:
                    MessageBox.Show("恭喜你获得了 画家地雷×"   num);
                    UserTemp.Card_Pic  = num;
                break;
                case 12:
                MessageBox.Show("恭喜你获得了 500积分");
                txtPoint.Text = (int.Parse(txtPoint.Text)   500).ToString();
                break;
              
            }
        }
        private void tsmiDraw_Click(object sender, EventArgs e)
        {
            if (UserTemp.Card_Pic > 0) {
                List<int> index = new List<int>();
                index.Clear();
                if(Helper.gridNum==100)
                    index.AddRange(new int[]{23,24,26,27,32,33,34,35,36,37,38,42,43,44,45,46,47,48,53,54,55,56,57,64,65,66,75
});
                if (Helper.gridNum == 144)
                    index.AddRange(new int[] { 15, 16, 18, 19, 26, 27, 28, 29, 30, 31, 32, 38, 39, 40, 41, 42, 43, 44, 51, 52, 53, 54, 55, 64, 65, 66, 69, 77, 80, 81, 82, 91, 92, 93, 94, 95, 102, 103, 104, 105, 106, 107, 108, 114, 115, 116, 117, 118, 119, 120, 127, 128, 130, 131 });
                if (Helper.gridNum == 225)
                    index.AddRange(new int[] { 34, 35, 36, 42, 43, 44, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 110, 111, 112, 113, 114, 115, 116, 117, 118, 126, 127, 128, 129, 130, 131, 132, 142, 143, 144, 145, 146, 158, 159, 160, 174 });
                if (Helper.gridNum == 361)
                    index.AddRange(new int[] { 41, 42, 44, 45, 50, 51, 53, 54, 59, 62, 65, 68, 71, 74, 78, 84, 87, 93, 98, 102, 107, 111, 118, 120, 127, 129, 138, 142, 143, 147, 161, 162, 195, 196, 204, 205, 213, 214, 215, 216, 222, 223, 224, 225, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 253, 254, 255, 256, 257, 258, 259, 260, 261, 273, 274, 275, 276, 277, 278, 279, 293, 294, 295, 296, 297});
                DrawPnl(index);
                UserTemp.Card_Pic -= 1;
                UpdateForm_tsmiDaoJu();
                tsmiDraw.Enabled = false;
                tltsmiDraw.Enabled = false;
            } else {
                MessageBox.Show("你的画家地雷个数为0", "操作失败");
            }
           
        }

        private void tsmi1000_Click(object sender, EventArgs e)
        {
            txtPoint.Text = (int.Parse(txtPoint.Text)   1000).ToString();

        }

        private void tsmi5000_Click(object sender, EventArgs e)
        {
            txtPoint.Text = (int.Parse(txtPoint.Text)   5000).ToString();
        }

        private void tsmi10000_Click(object sender, EventArgs e)
        {
            txtPoint.Text = (int.Parse(txtPoint.Text)   10000).ToString();
        }


   
    }


 

标签: 游戏

实例下载地址

C#挖地雷游戏源码 完整版 仅供学习交流

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警