我正在用 C# 创建一个 Guess 游戏,我无法让用户猜测的数量在游戏开始时显示 10,它只会在用户已经尝试 1 次猜测时显示,它会显示 10 次,程序总共会给用户 11 次猜测,你能帮我吗?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GuessingGame
{
public partial class Form1 : Form
{
int _randnum;
int _userguess;
void GetRandomNumber()
{
int min = 1;
int max = 101;
Random randomiser;
randomiser = new Random();
_randnum = randomiser.Next(min, max);
}
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void buttonGuess_Click(object sender, EventArgs e)
{
string user = textBox1.Text;
string guessnum = Convert.ToString(_userguess);
int guess = 0;
if (int.TryParse(user, out guess))
{
if (_userguess == 0)
{
buttonGuess.Enabled = false;
label3.Text = "Game Over";
}
else if (guess == _randnum)
{
label3.Text = "Good guess";
buttonGuess.Enabled = false;
}
else if (guess < _randnum)
{
label3.Text = "Too low guess";
_userguess--;
}
else if (guess > _randnum)
{
label3.Text = "Too High guess";
_userguess--;
}
else if (guess < 0 || guess > 100)
{
label3.Text = "Your guess is out of the range";
_userguess--;
}
}
else
{
label3.Text = "Yous should introduce a number";
_userguess--;
}
label2.Text = guessnum;
}
private void buttonExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
GetRandomNumber();
_userguess = 10;
}
private void buttonNew_Game_Click(object sender, EventArgs e)
{
GetRandomNumber();
buttonGuess.Enabled = true;
_userguess = 10;
}
}
}
你可以做的是有一个NewGame函数,它进行游戏设置并删除label2中的文本,并将猜测计数器设置为11。
private void NewGame()
{
GetRandomNumber();
buttonGuess.Enabled = true;
label2.Text = string.Empty;
_userguess = 11;
}
然后,您可以在表单加载和新游戏按钮单击功能中使用它:
private void Form1_Load(object sender, EventArgs e)
{
NewGame();
}
private void buttonNew_Game_Click(object sender, EventArgs e)
{
NewGame();
}
您在错误的点设置了猜测数字字符串。您希望它在 if 语句后显示数字,因此您将变量设置在 if 语句之后。如果在 if 语句之前设置 String,它将获得初始值 _userguess,即 10。
要在游戏开始时显示 10,您必须在开始新游戏时设置 label2 的文本。
如果你想让 guessnum 在每次调用它时都放出正确的字符串。应将其设置为属性或方法。
private string guessnum{ get{ return _userguess.ToString(); } }