首页 > 解决方案 > 纸、剪刀、石头如何显示正确的结果?

问题描述

我正在尝试使用 windows 窗体来创建一个纸、剪刀、石头游戏。单击按钮 1 开始显示图片框 1。然后点击button2在pictureBox2中显示Scissor,并停止pictureBox1。

如果picture1 是Scissor,标签将显示“Tie”。如果图片1 是石头,显示“你输了”。如果图片 1 是纸,则显示“你赢了”。

但结果是错误的。

剪刀秀“你输了”。石展“领带”。纸展“你赢了”。

    private int state = 1;
    public Exam5()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (state == 1)
        {
            Bitmap bitmap = new Bitmap("Scissor.jpg");
            pictureBox1.Image = bitmap;
        }
        else if (state == 2)
        {
            Bitmap bitmap = new Bitmap("Stone.jpg");
            pictureBox1.Image = bitmap;
        }
        else
        {
            Bitmap bitmap = new Bitmap("Papper.jpg");
            pictureBox1.Image = bitmap;
        }
        state++;
        if (state > 3) state = 1;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        timer1.Enabled = false;
        Bitmap bitmap = new Bitmap("Scissor.jpg");
        pictureBox2.Image = bitmap;

        if (state == 1) label1.Text = "Tie";
        else if (state == 2) label1.Text = "You lose";
        else label1.Text = "You win";
    }

    private void button3_Click(object sender, EventArgs e)
    {
        Bitmap bitmap = new Bitmap("Stone.jpg");
        pictureBox2.Image = bitmap;
        timer1.Enabled = false;

        if (state == 1) label1.Text = "You win";
        else if (state == 2) label1.Text = "Tie";
        else label1.Text = "You lose";
    }

    private void button4_Click(object sender, EventArgs e)
    {
        Bitmap bitmap = new Bitmap("Papper.jpg");
        pictureBox2.Image = bitmap;
        timer1.Enabled = false;

        if (state == 1) label1.Text = "You lose";
        else if (state == 2) label1.Text = "You win";
        else label1.Text = "Tie";
    }

标签: c#windows-forms-designer

解决方案


像这样的东西,请注意这是未经测试的代码,只是在运行中快速敲了它,但应该给你足够的想法吗?

private int state = 1;
public Exam5()
{
    InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
    timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
    string selectedImage;

    state++;

    if (state > 3) state = 1;

    switch (state)
    {
        case 1: 
            selectedImage = "Scissor.jpg";
            break;

        case 1: 
            selectedImage = "Stone.jpg";
            break;

        case 1: 
            selectedImage = "Paper.jpg";
            break;
    }

    pictureBox1.Image = new Bitmap(selectedImage);
}

private void button2_Click(object sender, EventArgs e)
{
    timer1.Enabled = false;
    pictureBox2.Image = new Bitmap("Scissor.jpg");

    if (state == 1) 
        label1.Text = "Tie";
    else if (state == 2) 
        label1.Text = "You lose";
    else 
        label1.Text = "You win";
}

推荐阅读