我这里有这个匹配数字游戏。基本上,当您按下表格时,数字开始随机生成。您单击标签来阻止它们并尝试匹配它们。游戏应该在数字停止并且您按下表格本身时进行,但只让我玩一轮有什么想法吗?
using System;
using System.Linq;
using System.Windows.Forms;
namespace VS_assignment
{
public partial class Form1 : Form
{
private Random random = new Random();
private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
private bool label1Stopped = false;
private bool label2Stopped = false;
private bool label3Stopped = false;
public Form1()
{
InitializeComponent();
InitializeLabels();
InitializeTimer();
}
private void InitializeLabels()
{
// Set labels to display "?"
label1.Text = "?";
label2.Text = "?";
label3.Text = "?";
// Attach click event handler to labels
label1.Click += label_Click;
label2.Click += label_Click;
label3.Click += label_Click;
}
private void label_Click(object sender, EventArgs e)
{
Label label = sender as Label;
if (label != null)
{
label.Tag = true; // Set Tag to true to indicate stopped
if (label == label1)
label1Stopped = true;
else if (label == label2)
label2Stopped = true;
else if (label == label3)
label3Stopped = true;
CheckAndUpdateLabel4();
}
}
private void InitializeTimer()
{
timer.Interval = 600;
timer.Tick += Timer_Tick;
}
private void Timer_Tick(object sender, EventArgs e)
{
UpdateLabel(label1);
UpdateLabel(label2);
UpdateLabel(label3);
}
private void UpdateLabel(Label label)
{
if (!(label.Tag != null && (bool)label.Tag == true))
{
label.Text = random.Next(10).ToString();
}
}
private void CheckAndUpdateLabel4()
{
if (label1Stopped && label2Stopped && label3Stopped)
{
int[] values = { int.Parse(label1.Text), int.Parse(label2.Text), int.Parse(label3.Text) };
if (values.All(x => x == values[0]))
{
// All numbers are the same, increment label4
label4.Text = (int.Parse(label4.Text.Trim('$')) + bet).ToString("$0");
}
else
{
// Numbers are different, decrement label4
label4.Text = (int.Parse(label4.Text.Trim('$')) - bet).ToString("$0");
}
// Reset stop flags
label1Stopped = false;
label2Stopped = false;
label3Stopped = false;
}
}
int bet = 1;
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
bet = 1;
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
bet = 2;
}
private void Form1_Click(object sender, EventArgs e)
{
// Stop the timer if it's running
timer.Stop();
// Reset all labels
label1Stopped = false;
label2Stopped = false;
label3Stopped = false;
// Start a new round when the form is clicked
StartNewRound();
}
private void StartNewRound()
{
// Start the timer
timer.Start();
}
}
}
我的数字工作正常,点根据所选的径向按钮递增和递减,但是当我按下表格时,它第二次什么也不做
我明白了! 我基本上做了一个标签重置状态,并在表单单击中开始新一轮调用。
private void ResetLabels()
{
label1.Tag = null;
label2.Tag = null;
label3.Tag = null;
}
private void Form1_Click(object sender, EventArgs e)
{
// Reset the tag of all labels
ResetLabels();
// Stop the timer if it's running
timer.Stop();
// Start a new round when the form is clicked
StartNewRound();
}