gpt4 book ai didi

c# - 完成这个简单的 TicTacToe 练习的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:41 26 4
gpt4 key购买 nike

到这里为止一切正常,我只需要创建检查某人是否获胜的方法。

关于如何有效解决这个问题有什么建议吗?

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 TresEnRaya
{
public partial class Form1 : Form
{
string[,] tablero;
bool jugador = true;

public Form1()
{
InitializeComponent();
AsignarTags();
tablero = new string[3, 3];

button1.Click += clickHandler;
button2.Click += clickHandler;
button3.Click += clickHandler;
button4.Click += clickHandler;
button5.Click += clickHandler;
button6.Click += clickHandler;
button7.Click += clickHandler;
button8.Click += clickHandler;
button9.Click += clickHandler;
}

private void AsignarTags()
{
button1.Tag = new Posicion() { X = 0, Y = 0 };
button2.Tag = new Posicion() { X = 0, Y = 1 };
button3.Tag = new Posicion() { X = 0, Y = 2 };
button4.Tag = new Posicion() { X = 1, Y = 0 };
button5.Tag = new Posicion() { X = 1, Y = 1 };
button6.Tag = new Posicion() { X = 1, Y = 2 };
button7.Tag = new Posicion() { X = 2, Y = 0 };
button8.Tag = new Posicion() { X = 2, Y = 1 };
button9.Tag = new Posicion() { X = 2, Y = 2 };
}

private void CambiarSimbolo(Button button)
{
Posicion objPosicion = (Posicion)button.Tag;

if (jugador == true)
{
tablero[objPosicion.X, objPosicion.Y] = "X";
button.Text = "X";
button.Enabled = false;
jugador = false;
}
else
{
tablero[objPosicion.X, objPosicion.Y] = "Y";
button.Text = "Y";
button.Enabled = false;
jugador = true;
}

VerificarGanador();
}

private void VerificarGanador()
{
//THE MAGIC GOES HERE. WINGARDIUM LEVIO-Sah
}

private void clickHandler(object sender, EventArgs e)
{
Button myButton = (Button)sender;
switch (myButton.Name)
{
case "button1":
CambiarSimbolo(myButton);
break;

case "button2":
CambiarSimbolo(myButton);
break;

case "button3":
CambiarSimbolo(myButton);
break;

case "button4":
CambiarSimbolo(myButton);
break;

case "button5":
CambiarSimbolo(myButton);
break;

case "button6":
CambiarSimbolo(myButton);
break;

case "button7":
CambiarSimbolo(myButton);
break;

case "button8":
CambiarSimbolo(myButton);
break;

case "button9":
CambiarSimbolo(myButton);
break;
}
}
}
}

感谢您的帮助。

最佳答案

我曾经看到一种技术,它保留了 8 个不同的计数器,每个获胜方向一个。

将计数器初始化为零。
放置X 后,为该行、列和对角线的计数器加 1。
当放置 O 时,从行、列和对角线的计数器中减去 1。

如果任何计数器达到 3 或 -3,您就知道您赢了。
+3 表示 X 获胜。
-3 表示 O 赢了。

哪个计数器达到 +/-3 告诉您哪一行/哪一列/对角线赢了。

关于c# - 完成这个简单的 TicTacToe 练习的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com