He estado aprendiendo lenguaje C durante más de medio año. ¡Pero no tengo ni idea de la programación de juegos pequeños como Tetris y Snake! Bloque de preguntas: 1)
No se pueden escribir programas gráficos simplemente aprendiendo C. Como puedes ver, la biblioteca estándar de C admite programas DOS, que es esa cosa negra.
Si quieres saber qué tan lejos estás del minijuego, podemos calcularlo de esta manera. Aquí tienes algunas suposiciones:
Te proporcionamos una función de dibujo de gráficos. solo necesitas pasar Con los parámetros correspondientes, puedes dibujar gráficos, puntos, líneas, círculos, rellenos de color, etc.
Dada la función de hilo, puedes crear un hilo de sistema o usar un temporizador para controlar el movimiento del cuerpo de la serpiente. El método específico puede variar. Se necesita una función que mueva el cuerpo de la serpiente a intervalos fijos.
Entonces, ¿cómo crees que deberías escribir una serpiente codiciosa?
La idea es:
Usar estructuras como listas enlazadas para almacenar el cuerpo de la serpiente. La ventaja es que puede tener cualquier longitud. Debes pensar en qué atributos almacenados en la lista enlazada pueden describir mejor el estado de la serpiente, en qué dirección camina y dónde están los distintos nodos de su cuerpo.
Divida el sistema de coordenadas de la pantalla y asigne la serpiente a un punto en el sistema de coordenadas.
Escribe la función de detección de colisiones. Cuando la serpiente codiciosa encuentra un trozo de 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 golpeó a sí misma.
Detecta si la serpiente golpea el borde de la pantalla.
Utiliza un hilo o un temporizador para mover tu serpiente en una dirección. El patrón de movimiento es moverse a una velocidad constante en la dirección del encabezado de la lista vinculada actual. Puedes configurar el x/ de la. cabecera de la mesa a 0,5 s Suma y resta la coordenada y. El intervalo de tiempo afecta la velocidad de la serpiente. Si se permite que la longitud exceda un cierto nivel para mejorar la aceleración, debe configurar los parámetros aquí.
Según el movimiento de la cabeza del medidor, diseñar 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 correrá. Un enfoque más sencillo es mover cada nodo del cuerpo de la serpiente hacia adelante en secuencia. No es un movimiento de coordenadas, sino un relleno, de modo que los nodos posteriores llenen la posición del nodo anterior antes de que se mueva.
Eso es más o menos. Solo estoy dando una idea. Si cometo algún error, corrígeme o puedes seguir tus propias ideas. El código está muerto, pero. la gente está viva.
Para analizar el problema, hay que abstraer el problema real en un modelo de programación. El proceso de abstracción consiste en asumir que ya tiene la función que desea. Primero puede dar la declaración de la función, como la función de detección de colisiones, la función de subproceso, etc. No sabes cómo escribir estas funciones, así que déjalas en blanco por ahora e imagina que se han completado.
Entonces lo que tienes que hacer es utilizar estos bloques construidos que se supone que existen para implementar tu lógica. Cuál es esta lógica depende de cómo se abstrae un problema específico. Al igual que una serpiente codiciosa, la idea general es abstraerla en coordenadas y estructuras de listas vinculadas. Si utiliza otra forma de pensar, todo el proceso puede ser completamente diferente.
Una vez escrito todo el proceso, necesita saber cómo implementar las funciones que ha asumido.
Dame una idea:
MFC se utiliza para visualización de interfaces, subprocesos, temporizadores, etc. Hay API de Windows correspondientes. Estos gráficos y funciones de subprocesos requieren soporte del sistema operativo. Entonces tienes que usar alguna API de Windows. Toda esta información está disponible y puedes ir a buscarla.
Arriba. Nuevamente pido disculpas por cualquier omisión.