Red de conocimiento informático - Conocimiento informático - ¿Puedo convertirme en una serpiente si aprendo programación?

¿Puedo convertirme en una serpiente si aprendo programación?

No se pueden escribir programas gráficos simplemente aprendiendo C. Como puede ver, la biblioteca estándar de C admite programas DOS, que son cosas oscuras.

Si quieres saber a qué distancia estás del minijuego, podemos calcularlo así. Las siguientes son algunas suposiciones:

Le proporciona funciones de dibujo de gráficos Al pasar los parámetros correspondientes, puede dibujar gráficos, puntos, líneas, círculos, rellenos de color, etc.

Proporcione una función de hilo para que pueda crear un hilo del sistema, o use un temporizador para controlar el movimiento del cuerpo de la serpiente. El método específico se puede cambiar. Necesitas una función para mover el cuerpo de la serpiente a intervalos regulares.

¿Cómo crees que debería escribirse una serpiente?

La idea es:

La ventaja de utilizar estructuras como listas enlazadas para almacenar cuerpos de serpientes es que pueden tener cualquier longitud. Tienes que descubrir qué atributos están almacenados en la lista enlazada para describir mejor el estado de la serpiente, en qué dirección trasciende y dónde está cada nodo de su cuerpo.

Divida el sistema de coordenadas de la pantalla y asigne la serpiente en puntos en el sistema de coordenadas.

Escribir una función de detección de colisiones. Cuando la serpiente encuentra comida, agrega un nodo al encabezado de la lista vinculada y actualiza el nodo principal a este nodo.

Utiliza la función de detección de colisiones para detectar si la serpiente se golpea a sí misma.

Detecta si la serpiente toca el límite de la pantalla.

Usa una cuerda o un cronómetro para mover tu serpiente en una dirección. La regla de movimiento es moverse a una velocidad constante hacia el encabezado de la lista vinculada actual. Puede configurar 0,5 s para aumentar o disminuir las coordenadas x/y del encabezado. El intervalo de tiempo afecta la velocidad de la serpiente. Si se permiten longitudes superiores a un cierto nivel, debe configurar el parámetro aquí.

A partir del movimiento de la cabeza del arroz, se diseña un algoritmo para calcular la trayectoria de movimiento de cada punto del cuerpo de la serpiente. Ésta es la clave. Si este algoritmo es incorrecto, tu serpiente estará en todas partes. Un método más directo es mover cada nodo del cuerpo de la serpiente hacia adelante en secuencia, no para mover las coordenadas, sino para completar, de modo que los nodos posteriores se llenen hasta la posición antes de que se moviera el nodo anterior.

En general solo doy una idea. Corrígeme si he cometido un error o puedes seguir tus ideas. Aprender y pensar son importantes. El código está muerto, la gente está viva.

Para analizar el problema, hay que abstraer el problema real en un modelo para programación. El proceso de abstracción consiste en asumir que ya tiene la función que desea y que puede declarar la función primero, como la función de detección de colisiones, la función de subproceso, etc. No puedes escribir estas funciones. Déjalos en blanco e imagina que están terminados.

Entonces todo lo que tienes que hacer es implementar tu lógica usando estas estructuras que ya se supone que existen. Cuál es esta lógica depende de cómo se abstrae un problema específico. Al igual que una serpiente, la idea general es abstraerla en una estructura de lista enlazada de coordenadas. Si utiliza otra forma de pensar, todo el proceso puede ser completamente diferente.

Una vez completado todo el proceso, es necesario saber cómo implementar las funciones que se realizan.

Una idea:

La visualización de la interfaz se realiza mediante MFC, subprocesos, temporizadores, etc., y existen las API de Windows correspondientes. Estas funciones de gráficos y subprocesos requieren compatibilidad con el sistema operativo, por lo que es necesario utilizar algunas API de Windows. Toda esta información está disponible, puedes buscarla.

Arriba. Nuevamente, perdónenme por cualquier omisión.