2009-02-24 5 views
5

Estaba leyendo that question y recuerdo del Wikipedia list of algorithms. Sé que Wikipedia también tiene una lista de juegos de código abierto, pero lo que quiero es enlaces para algoritmos de juegos simples, incluso si están escritos en pseudocódigo.Enlaces para algoritmos de juegos simples

Dado que los juegos "simples", me refiero a juegos como el Sudoku, Bejeweled, Solitario, Buscaminas, Laberinto, serpientes, gorila, ajedrez, Tetris, etc.

Bonificación por código fuente C# :)

+0

¿Estás hablando de algoritmos de IA para jugar estos juegos? –

+0

Eso es muy amplio. Considera enfocarte en algoritmos para un juego por pregunta. –

Respuesta

7

La mayoría de los algoritmos de juego son simplemente algoritmos de búsqueda. De hecho, se podría decir que AI es de búsqueda.

Para Sudoku, dancing links es un buen algoritmo. Alternativamente, se resuelve very concisely in Prolog.

Para el ajedrez, comience con Minimax, luego pruebe Minimax with alpha-beta pruning.

Minesweeper is NP-complete. No se conocen algoritmos rápidos confiables y.

+2

Buscaminas generalizado puede ser NP-completo, pero también lo es Sudoku [Yato y Seta, 2002] y el ajedrez es mucho más complejo (EXPTIME-completo). En la práctica, la compleción NP de Sudoku no significa que no haya algoritmos confiables y rápidos para los problemas que las personas realmente quieren resolver. –

+0

"De hecho, se podría decir que AI es búsqueda" No sé lo que se supone que significa. Creo que la declaración es incorrecta. – Niyaz

+0

@Gareth: buenos puntos. A diferencia de Sudoku y Chess, no he tratado de escribir un programa para jugar Minesweeper. –

0

Evento pensé que los juegos que mencionas arriba ES simple, no creo que el algoritmo para esos juegos no lo sea. (Verdaderamente sin ofender :))

1

No se puede obtener mucho más simple que Conway's Game of Life. Solo hay cuatro reglas:

  1. Cualquier celda viva con menos de dos vecinos vivos muere, como por necesidades debidas a la falta de población.
  2. Cualquier célula viva con más de tres vecinos vivos muere, como por sobrepoblación.
  3. Cualquier célula viva con dos o tres vecinos vivos vive, sin cambios, para la próxima generación.
  4. Cualquier célula muerta con exactamente tres vecinos vivos se convierte en una célula viva.

Se puede implementar fácilmente en cualquier idioma, requiere zero players, y produce algunos patrones interesantes.

+0

¡Realmente interesante! ¡Gracias! –

0

Aquí es el algoritmo para la mayoría de los juegos:

vez que el juego se inicia ...

  1. aceptar la entrada del usuario
  2. actualización de estado del juego basado en la entrada del usuario
  3. Proporcionar retroalimentación visual (actualizar la pantalla)
  4. Verificar cambios en la puntuación y actualizar según sea necesario
  5. Buscar "juego o ver "y salta al paso 1 si el juego no ha terminado aún
  6. Um ... Eso es todo.

Espero que esto ayude.

2

Como casi se ha insinuado, la idea de un "algoritmo" para un juego no encaja realmente, a excepción de algo trivial y no particularmente parecido a un juego como Life.Un algoritmo es una forma de procesar un conjunto de datos de una manera conocida para producir un resultado específico de esos datos, generalmente dentro de algún tipo de límite de tiempo/complejidad. Los juegos no se ajustan a ese criterio simple: se parecen más a simulaciones en las que alteran de forma repetida el estado de los objetos en función del aporte hasta que se alcanzan las condiciones específicas del juego. Como tal, casi todos siguen el loop de entrada-> actualización-> pantalla con lógica de juego a medida en la etapa de actualización. Sin lugar a dudas, las partes individuales del juego se implementarán en términos de algoritmos simples y bien conocidos, pero el programa de juego en sí es realmente solo el circuito de simulación y la lógica dentro de él.

1

¿Qué pasa con los algoritmos, no para jugar juegos, sino para tareas relativamente complejas dentro de ellos. Por ejemplo, en Bejeweled tienes una rejilla de 8x8 llena de joyas en uno de los 7 colores. En cualquier momento, hay alrededor de 8 joyas de cada color. Después de que un usuario mueva una joya para crear una coincidencia, al menos tres joyas (del mismo color) desaparecerán de la pantalla y tres nuevas caerán en la pantalla. ¿Cómo se asegura de que siempre haya al menos una coincidencia disponible en la pantalla? ¿Cómo se asegura de que las coincidencias aparezcan en la pantalla y no solo en la parte superior?

+0

Tengo este problema que resolver para el desarrollo de mi juego –

Cuestiones relacionadas