Estoy creando un juego de serpientes. ¿Cómo puedes escribir código que mantenga a la serpiente en 1 dirección hasta que presiones la tecla a, s, d o w?

Una forma común de hacer esto es tener un bucle que se ejecute continuamente pero que sea interrumpible por entrada. Cualquier idioma que utilice debe tener alguna forma de escuchar una pulsación de tecla sin hacer que el programa se detenga. A menudo, esta será una función diferente de la que normalmente llama cuando desea la entrada del usuario. O puede que necesite declarar algún tipo de controlador de eventos antes de comenzar el ciclo.

Si no se presiona ninguna tecla, el bucle continuará ejecutándose y moverá la serpiente más en la dirección actual. Probablemente querrás poner algún tipo de retraso en cada iteración, o la serpiente golpeará la pared antes de que el jugador pueda reaccionar. (Consejo profesional: intente hacer que la cantidad de retraso sea variable, para que pueda crear niveles de dificultad más difíciles que aumenten la velocidad, o potenciadores que ralenticen temporalmente las cosas, o lo que sea).

Si se presiona una tecla, el programa necesita hacer cualquier cambio que sea necesario. Probablemente, la mayoría de las teclas además de WASD simplemente deberían ignorarse, aunque podría tener una pausa en el juego, o cualquier otra cosa que desee agregar. Una vez que el programa ha manejado la clave, debe devolver el control al bucle principal.

El circuito principal también necesita verificar condiciones especiales, como la serpiente que golpea una pared, o parte de su propio cuerpo, o un pedazo de comida.

Sin saber qué idioma estás usando, es difícil ser más específico que esto.

Creo que puedes hacer esto usando dos hilos. Un hilo para la actualización de la interfaz de usuario y otro hilo para tomar la entrada del usuario. Dado que escuchar la pulsación de teclas provocará una pausa en un subproceso, puede actualizar fácilmente la interfaz de usuario utilizando otro subproceso.