程序只让我玩一次游戏

问题描述 投票:0回答:1

我这里有这个匹配数字游戏。基本上,当您按下表格时,数字开始随机生成。您单击标签来阻止它们并尝试匹配它们。游戏应该在数字停止并且您按下表格本身时进行,但只让我玩一轮有什么想法吗?


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();
        }
    }
}

我的数字工作正常,点根据所选的径向按钮递增和递减,但是当我按下表格时,它第二次什么也不做

c# winforms
1个回答
0
投票

我明白了! 我基本上做了一个标签重置状态,并在表单单击中开始新一轮调用。

 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();
}
© www.soinside.com 2019 - 2024. All rights reserved.