Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#/WPF错误:类型为'的未处理异常;System.StackOverflow异常';发生(抽搐-抽搐-脚趾)_C#_Wpf - Fatal编程技术网

C#/WPF错误:类型为'的未处理异常;System.StackOverflow异常';发生(抽搐-抽搐-脚趾)

C#/WPF错误:类型为'的未处理异常;System.StackOverflow异常';发生(抽搐-抽搐-脚趾),c#,wpf,C#,Wpf,我对C#和WPF很陌生,所以请容忍我。我正在做一个C#/WPF井字游戏。在游戏开始并进行了一些移动之后,我不断地出现以下错误,我不知道为什么: “类型为'System.StackOverflow Exception'的未处理异常” 就计算机而言,不必有任何策略。所以,我想让代码做的就是随机选择谁先走(计算机还是人类),当轮到计算机时,计算机应该随机选择一个启用的按钮,并给它指定一个“X”或“O”。任何帮助都将不胜感激 另外,如果有更简单或更短的方法来编写代码,请务必让我知道!正如我所说的,我对这

我对C#和WPF很陌生,所以请容忍我。我正在做一个C#/WPF井字游戏。在游戏开始并进行了一些移动之后,我不断地出现以下错误,我不知道为什么:

“类型为'System.StackOverflow Exception'的未处理异常”

就计算机而言,不必有任何策略。所以,我想让代码做的就是随机选择谁先走(计算机还是人类),当轮到计算机时,计算机应该随机选择一个启用的按钮,并给它指定一个“X”或“O”。任何帮助都将不胜感激

另外,如果有更简单或更短的方法来编写代码,请务必让我知道!正如我所说的,我对这一切都很陌生

注意:我还没有想出一个函数/方法来确定谁是赢家。我不需要帮助

*****编辑:正如建议的那样,我在“MainWindow”类中声明并实例化了一次“rnd”,并在“randomSquare”方法中留下了“rnd.Next”。以前,它在比赛中的许多不同点上把错误抛得到处都是。现在,它只在人类第一步时抛出错误,这是第九步。有没有关于如何解决这个问题的建议?下面是我编辑的代码*****

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=假;