如何创建第二个播放器/电脑
本文关键字:第二个 播放器 电脑 创建 何创建 | 更新日期: 2023-09-27 18:24:43
我正在创建一个双人骰子游戏,玩家可以与另一个用户或计算机一起玩。我很难弄清楚如何创建一个双人游戏。我不确定我是否必须为每个用户创建单独的类,然后创建该类的对象以拥有两个单独的播放器,或者我是否只需要创建一个像这样的变量
static int player = 1;
并将其分配给特定区域,然后使用模数来计算哪个玩家在上面。
此外,在我的roll_Btn
方法下,你会看到,当骰子掷"1"并清除指定字段时,我正试图让它切换到下一个用户,它确实做到了,但一旦我再次尝试掷骰子,然后程序就在我身上结束了。请参阅下面的代码。感谢您的帮助和指导。
public partial class Game : Form
{
public Game()
{
InitializeComponent();
}
static int player = 1;
private void Game_Load(object sender, EventArgs e)
{
oneNameTxt.Text = diceFrm.player1.ToUpper();
twoNameTxt.Text = diceFrm.player2.ToUpper();
}
private void endBtn_Click(object sender, EventArgs e)
{
diceFrm end = new diceFrm();
end.Show();
this.Hide();
}
private void standBtn_Click(object sender, EventArgs e)
{
oneScoreTxt.Text = totalTxt.Text;
}
private void rollBtn_Click(object sender, EventArgs e)
{
int t1 = Convert.ToInt32(turnsTxt.Text);
int t2 = t1 + 1;
turnsTxt.Text = t2.ToString();
Random rand = new Random();
int dice = rand.Next(1, 7);
rollTxt.Text = dice.ToString();
int d1 = Convert.ToInt32(totalTxt.Text);
int d2 = d1 + dice;
totalTxt.Text = d2.ToString();
if(dice == 1)
{
player++;
rollTxt.Text = String.Empty;
turnsTxt.Text = String.Empty;
totalTxt.Text = String.Empty;
}
}
private void oneScoreTxt_TextChanged(object sender, EventArgs e)
{
int score1 = Convert.ToInt32(oneScoreTxt.Text);
int score2 = Convert.ToInt32(twoScoreTxt.Text);
if (score1 >= 100 || score2 >= 100)
{
whatLbl.Text = "Winner";
}
else
{
whatLbl.Text = "Turn";
}
}
正如Ogul Ozgul所说,
private void rollBtn_Click(object sender, EventArgs e)
{
...
if (dice == 1)
{
...
turnsTxt.Text = String.Empty;
...
}
}
当你掷1时,你的回合Text.Text=String.Empty,因此当你下次掷时,
private void rollBtn_Click(object sender, EventArgs e)
{
int t1 = Convert.ToInt32(turnsTxt.Text); // program crash
...
}
你的程序会崩溃得很厉害。
解决方案:我建议您在整个代码中使用TryParse而不是Convert。它将更加强健。
例如。
private void rollBtn_Click(object sender, EventArgs e)
{
int t1 = 0;
int.TryParse(turnsTxt.Text, out t1)
int t2 = t1 + 1;
turnsTxt.Text = t2.ToString();
...
//rest of your code
}