Red de conocimiento informático - Conocimiento del nombre de dominio - Estoy buscando urgentemente el código fuente de programación del juego Tic Tac Toe (formato MFC)

Estoy buscando urgentemente el código fuente de programación del juego Tic Tac Toe (formato MFC)

El juego "Tic-Tac-Toe" (también llamado "Tic-Tac-Toe") es un juego de rompecabezas muy clásico al que muchos jugadores deben haber jugado. El tablero de ajedrez de "Tic-Tac-Toe" es muy simple, una cuadrícula de 3×3, que es muy similar al carácter chino "Bueno", de ahí el nombre "Tic-Tac-Toe". Las reglas del juego "Tic-Tac-Toe" son muy similares a las del "Go-Bang". La regla del "Go-Bang" es que un lado gana si las primeras cinco piezas se conectan en línea; Tic-Tac-Toe", gana el primero si se conectan tres piezas en línea.

Tic-Tac-Toe (nombre en inglés Tic-Tac-Toe)

Se estima que la edad del Tic-Tac-Toe es desconocida. Los occidentales creen que fue inventado por el. Los antiguos romanos, sin embargo, nosotros, los chinos, creemos que desde que inventamos el Go y el Gobang, es natural inventar el Tic-Tac-Toe. Son disputas puramente verbales, no las mencionemos por ahora.

Recuerdo que cuando era niño me encantaba jugar al tres en raya en clase. Todo lo que necesitabas era un papel borrador, un bolígrafo y dos personas en la misma mesa para jugar. Durante la clase de educación física también podrás jugar en el arenero con ramas. Pero siempre sentí que este juego era demasiado simple. Luego entré en contacto con el backgammon y me fascinó por un tiempo, pero mi nivel siempre fue muy pobre y dejé de jugarlo.

Método de análisis Minmax del juego de ajedrez

Hay nueve espacios, jugados por MAX y MIN. A quien le toque mover pondrá uno en el espacio. , quien primero haga que sus propias piezas de ajedrez formen "tres piezas en línea" (la misma fila, columna o línea diagonal son todas las piezas de ajedrez de alguien), ganará.

Utiliza una cruz para representar MAX y un círculo para representar MIN.

Por ejemplo, la imagen de la derecha es una partida de ajedrez en la que gana MIN.

Para no generar un árbol de juego demasiado grande, se supone que solo se expanden dos niveles a la vez. La función de valoración se define de la siguiente manera:

Sea el juego de ajedrez P y la función de valoración sea e(P).

(1) Si P no es una posición ganadora para ninguna de las partes, entonces e(P)=e (el número total de filas, columnas o diagonales completas que todavía están vacías para MAX) -e (la número total de filas, columnas o diagonales completas que todavía están vacías para MIN)

(2) Si P es un juego de ajedrez que MAX debe ganar, entonces e(P) = ∞.

(3) Si P es un juego de ajedrez que B debe ganar, entonces e(P)=-∞.

Por ejemplo, si P es como se muestra a la derecha, entonces e(P)=6-4=2

Preste atención a la simetría de la posición del tablero de ajedrez al generar la. posición del nodo sucesor, lo siguiente Los resultados del juego

son todos el mismo juego de ajedrez (en el juego, el coeficiente de ramificación del ajedrez Yiyu es menor inicialmente debido a la simetría y luego debido a la reducción de no distribuidos espacios en el tablero de ajedrez). La Figura 3.15 muestra el árbol de juego generado después de dos niveles de búsqueda. La valoración estática se registra debajo del nodo final y el valor inverso se registra en el círculo.

Dado que la posición que se muestra a la derecha tiene el valor de retroceso más grande, debe seleccionarse como el primer paso de MAX (que resulta ser el movimiento de mejor prioridad de MAX).

Ahora supongamos que MAX realiza este movimiento, y el movimiento de regreso de MIN es poner un círculo directamente en el espacio encima de X (este es un mal movimiento para MAX, no debe haber hecho una buena estrategia de búsqueda de movimientos). ). En el siguiente paso, MAX busca dos capas más bajo el nuevo patrón, produciendo un gráfico de búsqueda como se muestra en la Figura 3.16.

Ahora en la imagen, MAX tiene dos posibles "mejores" primeros movimientos, asumiendo que MAX da el paso indicado en la imagen. Y MIN se ve obligado a realizar otro movimiento para evitar la derrota inmediata, lo que resulta en el siguiente juego de ajedrez: MAX busca nuevamente, produciendo el árbol que se muestra en la Figura 3.17.

Algunos nodos finales de este árbol (por ejemplo, uno marcado con A) representan una ganancia MIN, por lo que su evaluación es -∞. Cuando estas estimaciones se retrasan, se puede ver que el mejor y único movimiento de MAX lo salvó del fracaso inmediato. Ahora, MIN puede ver que MAX ganará en su próximo movimiento, por lo que MIN no tiene más remedio que admitir la derrota.

Demostración de programación de una partida de ajedrez según el algoritmo máximo y mínimo (imagen de la derecha, puedes hacer clic en ella). . .

Utilizaremos Visual Basic para escribir un pequeño juego de "Tic-Tac-Toe".

Ideas de diseño

En primer lugar, debemos saber que el juego "Tic-Tac-Toe" es un juego de ajedrez típico. Un jugador es la computadora y el otro es la parte. el jugador. Por lo tanto, hay dos formas de iniciar este tipo de juegos: una es que el jugador vaya primero; la otra es que la computadora vaya primero. Ésta es la primera cuestión que debemos considerar.

En segundo lugar, dado que la computadora juega contra el jugador, tenemos que escribir un proceso (Chuqi), que permita al programa simular el pensamiento humano y jugar al ajedrez con personas (en realidad, la encarnación de la "inteligencia artificial" ), Este proceso de Chuqi también es la clave de este software de juego. Además, tenemos que escribir dos procesos (Lianxian y Shuying). El proceso Lianxian se usa para determinar si hay tres piezas de ajedrez conectadas en una línea en el tablero de ajedrez en todo momento y el proceso Shuying se usa para determinar qué lado está conectado; en línea si hay tres piezas de ajedrez conectadas en línea, es decir, para determinar qué lado gana.

Las preguntas anteriores son las ideas claves para la implementación del juego “Tic-Tac-Toe”. ....