qq614097636 2014-10-07 10:19 采纳率: 0%
浏览 1805

急求 怎样用WindowsForm 编写 别踩白块??

点击下落最简单的功能就可以 ,带点注释,谢谢。。。。。。。。。

  • 写回答

1条回答 默认 最新

  • Vincent_TT 2014-10-11 01:49
    关注

    不会贴图...
    界面就是一个form里一个大的mainPanel,然后这个Panel里有4*4的16个子Panel,初始化时随机4个数分别设置每一行中随机一个panel的背景色为灰色,然后最后一行添加了点击事件,点击白块时提示失败并初始化,点击灰色块时上面三行的灰色块下移,第一行再次随机一个Panel的背景色设置成灰色,以此反复。
    功能是这样的,其他的地方按照你自己的想法去改吧。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace biecaibaikuai
    {
    public partial class Form1 : Form
    {
    #region 变量
    private int firstRow;
    private int secRow;
    private int thrRow;
    private int fourRow;
    private Random rd = new Random();
    #endregion

        public Form1()
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            init();
        }
    
        #region 初始化
        private void init()
        {
            // 设置所有panel背景色为白色
            foreach (Control ctl in mainPanel.Controls)
            {
                ctl.BackColor = Color.White;
            }
    
            firstRow = rd.Next(1, 4);// 第一行随机数
            secRow = rd.Next(1, 4);// 第二行随机数
            thrRow = rd.Next(1, 4);// 第三行随机数
            fourRow = rd.Next(1, 4);// 第四行随机数
            this.Controls.Find("fPanel" + firstRow, true)[0].BackColor = Color.Gray;// 设置第一行随机一个panel背景色为灰色
            this.Controls.Find("sPanel" + secRow, true)[0].BackColor = Color.Gray;// 设置第二行随机一个panel背景色为灰色
            this.Controls.Find("tPanel" + thrRow, true)[0].BackColor = Color.Gray;// 设置第三行随机一个panel背景色为灰色
            this.Controls.Find("foPanel" + fourRow, true)[0].BackColor = Color.Gray;// 设置第四行随机一个panel背景色为灰色
        }
        #endregion
    
        #region 最后一行panel点击事件处理
        private void foPanel1_Click(object sender, EventArgs e)
        {
            playGame((Panel)sender);
        }
    
        private void foPanel2_Click(object sender, EventArgs e)
        {
            playGame((Panel)sender);
        }
    
        private void foPanel3_Click(object sender, EventArgs e)
        {
            playGame((Panel)sender);
        }
    
        private void foPanel4_Click(object sender, EventArgs e)
        {
            playGame((Panel)sender);
        }
        #endregion
    
        #region 游戏逻辑处理
        /// <summary>
        /// 游戏逻辑处理
        /// </summary>
        /// <param name="pl">被点击的panel</param>
        private void playGame(Panel pl)
        {
            if (pl.BackColor != Color.Gray)// 点到白块
            {
                MessageBox.Show("失败!");
                init();// 重新初始化
            }
            else
            {
                // 清空初始化设置的panel背景色
                this.Controls.Find("fPanel" + firstRow, true)[0].BackColor = Color.White;
                this.Controls.Find("sPanel" + secRow, true)[0].BackColor = Color.White;
                this.Controls.Find("tPanel" + thrRow, true)[0].BackColor = Color.White;
                pl.BackColor = Color.White;
    
                // 之前的随机数按行下移
                fourRow = thrRow;
                thrRow = secRow;
                secRow = firstRow;
                // 第一行再次随机生成一个数
                firstRow = rd.Next(1, 4);
                // 再次设置panel的背景色
                this.Controls.Find("fPanel" + firstRow, true)[0].BackColor = Color.Gray;
                this.Controls.Find("sPanel" + secRow, true)[0].BackColor = Color.Gray;
                this.Controls.Find("tPanel" + thrRow, true)[0].BackColor = Color.Gray;
                this.Controls.Find("foPanel" + fourRow, true)[0].BackColor = Color.Gray;
            }
        }
        #endregion
    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥20 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏