C#/WPF错误:类型为'的未处理异常;System.StackOverflow异常';发生(抽搐-抽搐-脚趾)
我对C#和WPF很陌生,所以请容忍我。我正在做一个C#/WPF井字游戏。在游戏开始并进行了一些移动之后,我不断地出现以下错误,我不知道为什么: “类型为'System.StackOverflow Exception'的未处理异常” 就计算机而言,不必有任何策略。所以,我想让代码做的就是随机选择谁先走(计算机还是人类),当轮到计算机时,计算机应该随机选择一个启用的按钮,并给它指定一个“X”或“O”。任何帮助都将不胜感激 另外,如果有更简单或更短的方法来编写代码,请务必让我知道!正如我所说的,我对这一切都很陌生 注意:我还没有想出一个函数/方法来确定谁是赢家。我不需要帮助 *****编辑:正如建议的那样,我在“MainWindow”类中声明并实例化了一次“rnd”,并在“randomSquare”方法中留下了“rnd.Next”。以前,它在比赛中的许多不同点上把错误抛得到处都是。现在,它只在人类第一步时抛出错误,这是第九步。有没有关于如何解决这个问题的建议?下面是我编辑的代码*****C#/WPF错误:类型为'的未处理异常;System.StackOverflow异常';发生(抽搐-抽搐-脚趾),c#,wpf,C#,Wpf,我对C#和WPF很陌生,所以请容忍我。我正在做一个C#/WPF井字游戏。在游戏开始并进行了一些移动之后,我不断地出现以下错误,我不知道为什么: “类型为'System.StackOverflow Exception'的未处理异常” 就计算机而言,不必有任何策略。所以,我想让代码做的就是随机选择谁先走(计算机还是人类),当轮到计算机时,计算机应该随机选择一个启用的按钮,并给它指定一个“X”或“O”。任何帮助都将不胜感激 另外,如果有更简单或更短的方法来编写代码,请务必让我知道!正如我所说的,我对这
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Operation6
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
bool player1 = true;
int playerNumber;
Random rnd1 = new Random();
Random rnd2 = new Random(); /// Edit: Instantiated only once.
public MainWindow()
{
InitializeComponent();
playerNumber = rnd1.Next(1, 3);
if (playerNumber == 1)
computer();
}
private int randomSquare()
{
int number;
number = rnd2.Next(1, 10);
return number;
}
private void computer()
{
int squareNumber = randomSquare();
if (squareNumber == 1 && square1.IsEnabled == true)
{
if (player1)
square1.Content = "X";
else
square1.Content = "O";
square1.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 1 && square1.IsEnabled == false)
computer();
else if (squareNumber == 2 && square2.IsEnabled == true)
{
if (player1)
square2.Content = "X";
else
square2.Content = "O";
square2.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 2 && square2.IsEnabled == false)
computer();
else if (squareNumber == 3 && square3.IsEnabled == true)
{
if (player1)
square3.Content = "X";
else
square3.Content = "O";
square3.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 3 && square3.IsEnabled == false)
computer();
else if (squareNumber == 4 && square4.IsEnabled == true)
{
if (player1)
square4.Content = "X";
else
square4.Content = "O";
square4.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 4 && square4.IsEnabled == false)
computer();
else if (squareNumber == 5 && square5.IsEnabled == true)
{
if (player1)
square5.Content = "X";
else
square5.Content = "O";
square5.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 5 && square5.IsEnabled == false)
computer();
else if (squareNumber == 6 && square6.IsEnabled == true)
{
if (player1)
square6.Content = "X";
else
square6.Content = "O";
square6.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 6 && square6.IsEnabled == false)
computer();
else if (squareNumber == 7 && square7.IsEnabled == true)
{
if (player1)
square7.Content = "X";
else
square7.Content = "O";
square7.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 7 && square7.IsEnabled == false)
computer();
else if (squareNumber == 8 && square8.IsEnabled == true)
{
if (player1)
square8.Content = "X";
else
square8.Content = "O";
square8.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 8 && square8.IsEnabled == false)
computer();
else if (squareNumber == 9 && square9.IsEnabled == true)
{
if (player1)
square9.Content = "X";
else
square9.Content = "O";
square9.IsEnabled = false;
player1 = !player1;
}
else if (squareNumber == 9 && square9.IsEnabled == false)
computer();
else
draw();
}
private void draw()
{
textBlock1.Text = "It's a tie!";
}
private void squareClick(object sender, RoutedEventArgs e)
{
Button square = (Button)sender;
if (player1)
square.Content= "X";
else
square.Content = "O";
square.IsEnabled = false;
player1 = !player1;
computer();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes;
命名空间操作6
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
bool player1=真;
int playerNumber;
随机rnd1=新随机();
Random rnd2=new Random();///编辑:仅实例化一次。
公共主窗口()
{
初始化组件();
playerNumber=rnd1.Next(1,3);
如果(playerNumber==1)
计算机();
}
私有整数平方()
{
整数;
编号=rnd2。下一个(1,10);
返回号码;
}
专用计算机()
{
int squareNumber=randomSquare();
if(squareNumber==1&&square1.IsEnabled==true)
{
如果(播放者1)
square1.Content=“X”;
其他的
square1.Content=“O”;
平方1.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==1&&square1.IsEnabled==false)
计算机();
else if(squareNumber==2&&square2.IsEnabled==true)
{
如果(播放者1)
square2.Content=“X”;
其他的
2.Content=“O”;
平方2.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==2&&square2.IsEnabled==false)
计算机();
else if(squareNumber==3&&square3.IsEnabled==true)
{
如果(播放者1)
square3.Content=“X”;
其他的
square3.Content=“O”;
平方3.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==3&&square3.IsEnabled==false)
计算机();
else if(squareNumber==4&&square4.IsEnabled==true)
{
如果(播放者1)
square4.Content=“X”;
其他的
square4.Content=“O”;
平方4.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==4&&square4.IsEnabled==false)
计算机();
else if(squareNumber==5&&square5.IsEnabled==true)
{
如果(播放者1)
square5.Content=“X”;
其他的
square5.Content=“O”;
平方5.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==5&&square5.IsEnabled==false)
计算机();
else if(squareNumber==6&&square6.IsEnabled==true)
{
如果(播放者1)
square6.Content=“X”;
其他的
6.Content=“O”;
square6.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==6&&square6.IsEnabled==false)
计算机();
else if(squareNumber==7&&square7.IsEnabled==true)
{
如果(播放者1)
square7.Content=“X”;
其他的
square7.Content=“O”;
square7.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==7&&square7.IsEnabled==false)
计算机();
else if(squareNumber==8&&square8.IsEnabled==true)
{
如果(播放者1)
square8.Content=“X”;
其他的
square8.Content=“O”;
square8.IsEnabled=假;
player1=!player1;
}
else if(squareNumber==8&&square8.IsEnabled==false)
计算机();
else if(squareNumber==9&&square9.IsEnabled==true)
{
如果(播放者1)
square9.Content=“X”;
其他的
square9.Content=“O”;
平方9.IsEnabled=假;