c# - 纸、剪刀、石头如何显示正确的结果?
问题描述
我正在尝试使用 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";
}
解决方案
像这样的东西,请注意这是未经测试的代码,只是在运行中快速敲了它,但应该给你足够的想法吗?
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";
}
推荐阅读
- javascript - 编写一个函数,它接受两个参数,一个数字数组和一个数字,如果数字在数组中,则返回 true 或 false
- angular - Angular cli 应用程序中的摇树摩纳哥编辑器
- ruby - chef-solo 从 bash 脚本中获取日志
- android - 谷歌地图显示不带气泡的地标名称
- azure-cosmosdb - Microsoft.Azure.Documents.Client 用于 Azure Cosmos 多次调用
- javascript - 选择框绘制得高于点击位置?
- ruby-on-rails - 带有 GCP Cloud SQL 的 Kubernetes 应用不接受任何连接。Github 上提供完整源代码
- javascript - 如何在Javascript中使用窗口对象将字符串评估为表达式
- php - 制作 POST 值,使其看起来像一个数组
- amazon-web-services - Lambda 函数的 AWS IoT 按钮问题