问题描述
- 急求 怎样用WindowsForm 编写 别踩白块??
-
点击下落最简单的功能就可以 ,带点注释,谢谢。。。。。。。。。
解决方案
不会贴图...
界面就是一个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
}
}
时间: 2024-10-21 18:52:41