我正在尝试用C#创建一个简单的猜数游戏。单击“生成随机数”按钮时,程序会生成一个随机数。一旦您在文本框中输入猜测并单击“猜猜”,该程序就会让您知道您是否猜对了。
问题在于我无法将随机生成的数字传递给myFunction(),因此它可以验证用户的猜测。这是代码,它有点混乱;并提前感谢你们的帮助。
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 Number_guessing_game
{
public partial class Form1 : Form
{
int montH;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
myFunction(int montH);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
int montH = rnd.Next(1, 10);
}
void myFunction(int montH)
{
int guess = int.Parse(textBox1.Text);
if (guess == montH)
{
MessageBox.Show("You win!");
}
if (guess != montH)
{
MessageBox.Show("You lose!");
}
}
}
}
答案 0 :(得分:1)
只需将montH
定义为类级别变量(就像您所做的那样),然后使用以下代码:
int montH;
private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
montH = rnd.Next(1, 10); //<--- there is no need to redefine montH by int monthH
}
private void GussButton_Click(object sender, EventArgs e)
{
myFunction(month);
}
如果您的button2_click
事件处理程序想要使用它,则无需通过int montH;
重新定义它,
因为int montH;
导致在方法级别定义新的montH
变量。
答案 1 :(得分:1)
问题出在您的button2_Click
功能中。在生成随机数后,在函数内部,您将创建一个新的int并将随机数分配给该函数,而不是已经声明的类级变量。将您的button2_Click
更改为以下内容:
private void button2_Click(object sender, EventArgs e)
{
montH = new Random().Next(1,10);
}
我要提到的另外几件事,因为montH是一个类级变量,它可以被类中的每个函数访问,所以你不需要将它作为参数传递给myFunction()
,实际上,button1_Click
可以为您验证结果:
private void button1_Click(object sender, EventArgs e)
{
if (int.Parse(TextBox1.Text) == montH)
{
MessageBox.Show("You Win!!");
}
else
{
MessageBox.Show("You Lose...");
}
}
答案 2 :(得分:0)
将您的代码更改为:
private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
montH = rnd.Next(1, 10);
}
答案 3 :(得分:0)
我希望以下内容适合您!你不需要做的是将你的montH放在你的函数本身,因为它是一个看到的类变量。当您比较guess == montH时,它已经从分配的montH int和从您的montH变量中检查。
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 Number_guessing_game
{
public partial class Form1 : Form
{
int montH;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
myFunction();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
int montH = rnd.Next(1, 10);
}
void myFunction()
{
int guess = int.Parse(textBox1.Text);
if (guess == montH)
{
MessageBox.Show("You win!");
}
if (guess != montH)
{
MessageBox.Show("You lose!");
}
}
}
}
答案 4 :(得分:0)
请尝试以下方法:
namespace Number_guessing_game
{
public partial class Form1 : Form
{
public int montH;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
myFunction(montH);
}
private void Form1_Load(object sender, EventArgs e)
{
montH=0;
}
private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
montH = rnd.Next(1, 10);
}
void myFunction(montH)
{
int guess = int.Parse(textBox1.Text);
if (guess == montH)
{
MessageBox.Show("You win!");
}
if (guess != montH)
{
MessageBox.Show("You lose!");
}
}
}
}
答案 5 :(得分:0)
不要在button2_Click()中创建新的montH ...否则新的montH只能在此函数中存活
private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
montH = rnd.Next(1, 10);
}