我目前正在Windows窗体中制作一个小游戏,只是为了好玩。
你必须点击按钮来“破坏”他们,如果他们失去足够的健康,他们就会被摧毁。所有这一切都工作正常,但我在第一级只有50个按钮,因此我有每个按钮:
RGB颜色有3个变量,button_click事件有1个方法,健康再生有1个计时器+方法。
我想创建一个类或编辑按钮类,为每个按钮提供这些属性。
我找到了这行代码来为表单中的每个按钮着色,但这对我帮助不大。 GetSelfAndChildrenRecursive(this).OfType<Button>().ToList().ForEach(b.BackColor = Color.FromArgb(255, 0, 0));
我的每个按钮的代码:
按钮类变量:( button1的RGB颜色的变量)
public int btn1r = 0;
public int btn1g = 255;
public int btn1b = 0;
button1_click事件:(点击后,将其颜色从绿色更改为红色)
if (btn1g > 11)
btn1g = btn1g - 10;
if (btn1r < 245)
btn1r = btn1r + 10;
if (btn1r > 245)
button1.Visible = false;
button1.BackColor = Color.FromArgb(btn1r, btn1g, btn1b);
timer_tick事件:(随着时间的推移将颜色从红色变回绿色)
if (btn1g > 11 && btn1g < 245)
btn1g += 2;
if (btn1r < 245 && btn1r > 11)
btn1r -= 2;
button1.BackColor = Color.FromArgb(btn1r, btn1g, btn11b);
我知道我的代码很笨拙,现在它有效。 :d
这是游戏板的截图。正如你所看到的那样,有很多按钮,可以玩更多关卡。我真的不知道为每个按钮制作数百个颜色变量,定时器和事件.. ^^ enter image description here
你的问题缺少细节,但我猜你想要的东西:
public class GameButton : System.Windows.Forms.Button
{
System.Windows.Forms.Timer timer;
public GameButton(string text, Rectangle rect, Color backgroundColor, TimeSpan interval)
: base()
{
Location = rect.Location;
Size = rect.Size;
Text = text;
BackColor = backgroundColor;
timer = new Timer();
timer.Interval = Convert.ToInt32(interval.TotalMilliseconds);
timer.Tick += Button_Tick;
timer.Start();
}
private void Button_Tick(object sender, EventArgs e)
{
BackColor = ????;
}
public new void Dispose()
{
timer.Dispose();
base.Dispose();
}
}
在您的游戏逻辑中,您将执行以下操作:
gb = new GameButton("One", new Rectangle(120, 12, 80, 20),
new Color(???), new TimeSpan(0, 0, 2));
this.Controls.Add(gb);
然后摆脱游戏按钮:
this.Controls.Remove(gb);
gb.Dispose();