# Videojuegos de programación

Un videojuego de programación es generalmente un videojuego qué incorpora elementos de programación al juego qué da la posibilidad al jugador para programar unidades autónomas dentro del juego para seguir órdenes, a menudo representado como lenguaje de programación visual para simplificar la metáfora de programación. Este tipo de juegos están dentro de dos áreas o subtipos: juegos de un solo jugador donde los elementos de programación forman parte de o la totalidad de un juego de rompecabezas, y juegos multijugador donde el jugador está automatizado las unidades que se están enfrentado contra las otras unidades programadas de otros jugadores.

## Como juegos de rompecabezas

Los primeros juegos en el género incluyen títulos como System 15000 y Hacker lanzados en 1984 y 1985 respectivamente.
Juegos de programación se han utilizado como parte de juegos de rompecabezas, desafiando al jugador para lograr un resultado específico una vez que el programa comienza a funcionar. Un ejemplo es SpaceChem, donde el jugador tiene que utilizar comandos visuales para manipular herramientas para dividir y juntar moléculas químicas. En tales juegos, los jugadores son capaces de probar y depurar su programa tan a menudo y es necesario hasta que encuentran una solución a los niveles. Muchos de estos juegos animan el jugador para encontrar el código más eficaz, medido por el número de pasos necesarios o el número de órdenes requirió. Otros juegos similares son TIS-100 o Human Resource Machine.
Otros juegos incorporan los elementos de programar como porciones de rompecabezas en el juego más grande. Por ejemplo, Hack 'n' Slash incluye una metáfora para ser capaz de acceder los programas y las variables de objetos representaron en el mundo de juego. Otros juegos similares con este tipo de aproximación son Transistor, Else Heart.Break, Glitchspace, y Pony Island.
Otra aproximación utilizada en algunos juegos es presentar el jugador una línea comandos para enviar órdenes para dirigir objetos dentro del juego. Juegos así son Quadrilateral Cowboy y Duskers el usuario ordena a varias criaturas robóticas pequeñas en tándem para lograr un objetivo. Hackmud da al jugador con un simulador de mainframe qué emiten órdenes para avanzar en el juego.

## Como juegos competitivos

Muchos juegos de programación implican controlar unidades como robots, tanques o bacterias buscando destruir a las unidades de los otros competidores. Tales juegos pueden ser considerados entornos de organismos digitales, relacionados con simulacros de vida artificial. Los jugadores tienen herramientas para desarrollar y probar su código fuera del ámbito del juego. El servidor entonces ejecuta el programa contra otros e informa los resultados al jugador. Hay ligas y torneos diferentes para los videojuegos de programación donde los jugadores pueden competir con cada otro. Normalmente cada script está optimizado para una estrategia especial. También adaptaciones para jugar a juegos más tradicionales; como el World Computer Chess Championship el campeonato Ajedrecístico consta de partidas entre los programas escritos para el juego de estrategia abstracto de ajedrez.
El género juego de programación competitivo también ha encontrado su forma analógica en varios juegos de mesa como RoboRally o Robot Turtles, dónde el código viene en las cartas que componen el juego.
Los investigadores presentaron RoboCode como base para enseñar programación.

## Áreas relacionadas

Los juegos de mundo abierto que ofrecen la capacidad de los jugadores para construir el medio ambiente de una serie de bloques de construcción han sido utilizados con frecuencia por los jugadores más avanzados para construir circuitos lógicos y programas más avanzados que los bloques fundamentales. Minetest es un ejemplo, ya que mientras el juego ofrece un conjunto limitado de bloques que imitan interruptores y circuitos eléctricos, los usuarios han sido capaces de crear computadoras funcionales básicas dentro del mundo virtual, y al menos una modificación está destinada a enseñar a los niños a programar.