Windows窗体应用程序-C#随机数字猜谜游戏
本文关键字:游戏 数字 随机 窗体 应用程序 -C# Windows | 更新日期: 2023-09-27 18:24:47
在visual studio中,我需要一些关于随机数猜测游戏的帮助。我受到了代码的冲击,但我在随机数生成器和将随机数移植到点击事件中时遇到了问题。和往常一样,我真的不需要代码,但需要一些指导和/或解释,说明我做错了什么,以及在学习的初级阶段是否有更有效的方法。下面是我的代码,评论是我遇到麻烦的部分。感谢你的帮助,因为到目前为止,我得到的帮助是非常明显的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace LAB6B
{
public partial class game : Form
{
public game()
{
InitializeComponent();
//Generate Random number between 1 and 100
//Not sure if there is a better way?
Random rand1 = new Random();
int num1 = rand1.Next(1,50);
int num2 = rand1.Next(1,50);
int answer = num1 + num2;
}
private void evaluate_Click(object sender, EventArgs e)
{
int count = 0;
int choice = Convert.ToInt32(guess);
if (guess.Text != string.Empty)
{
// set counter to keep track of how many tries
// should this be done by a loop or will it count without a loop?
count++;
//compare user input against random number
//Can’t import the random number for comparision
if (choice < answer)
{
Evaluate.Visible = false;
lblMessage.Visible = true;
lblMessage.Text = "Too Low!";
Clear.Visible = true;
BackColor = Color.LightSeaGreen;
}
else if (choice > answer)
{
Evaluate.Visible = false;
lblMessage.Visible = true;
lblMessage.Text = "Too High!";
Clear.Visible = true;
BackColor = Color.SlateBlue;
}
else
{
//Display correct message along with how many times it took to get it
MessageBox.Show(" Eso es CORRECTO! It took you {0} tries. ", count);
}
}
}
private void Clear_Click(object sender, EventArgs e)
{
guess.Text = "";
Evaluate.Visible = true;
lblMessage.Visible = false;
Clear.Visible = false;
BackColor = Color.PowderBlue;
}
}
}
由于rand1
和answer
变量是在构造函数中定义的,因此只能在构造函数中访问它们。在类级别定义answer
将解决大多数问题,因为您将能够从构造函数和单击处理程序访问它,如下所示:
private int answer;
private int count;
public game()
{
InitializeComponent();
//Generate Random number between 1 and 100
Random random= new Random();
// no need for num1 and num2, it's just as random
answer = random.Next(1,101);
}
我认为您有范围问题。"answerswer"变量是在构造函数中声明的,因此它对evaluate_Click(…)中的代码不可见。
看起来您需要将answer
声明为类变量。当您在构造函数中声明一个变量时,它仍然是该方法的本地变量,其他方法不可用。
我真的不知道你想要回答什么,但一个明显的错误是,你必须将count
变量定义为成员变量,以便跟踪尝试次数。现在,每当用户按下按钮时,count
将始终初始化为零。
首先,您需要在页面级别声明变量answer
,以便其他页面级别的函数可以使用它。
像这个吗
public partial class game : Form
{
int answer;
public game()
{
}
}
在计数器中,您可以使用静态计数器或页面级变量,例如变量answer
当用户正确猜测时,只需重置计数器