Red de conocimiento informático - Programación de la red - Código fuente del lenguaje Snake

Código fuente del lenguaje Snake

1. Algoritmo

1. Primero, use una matriz de estructura para marcar la posición X y la posición Y de la serpiente, así como la dirección de cada nodo. Utilice variables para determinar la longitud de la serpiente.

2. Cuando la serpiente se mueve sin girar, utiliza un temporizador para moverse automáticamente. No importa qué forma tenga la serpiente, solo necesita mover cada segmento hacia atrás cada vez (abandone la cola de la serpiente y reemplace la nueva cola de la serpiente con el segmento anterior de la cola de la serpiente): si la serpiente en sí es serpiente [0] a serpiente [3], es decir, serpiente [0] a serpiente [2] y moverse juntos a serpiente [1] a serpiente [3]: asigne las coordenadas XY de serpiente [2] a las coordenadas XY de serpiente [3], y asigne las coordenadas XY de la serpiente [1] a Las coordenadas XY de la serpiente [2], serpiente [0] luego determine la dirección de la cabeza de la serpiente y luego mueva la cabeza de la serpiente hacia adelante un espacio en esta dirección, que es la coordenada XY de la serpiente cabeza de serpiente[0]. La dirección de cada segmento de la serpiente, excepto la cabeza de la serpiente, está determinada por la función SetDirection() (obviamente, en este caso, la dirección de la cabeza de la serpiente permanece sin cambios). La idea de SetDirection() es determinar la dirección de cada segmento de la serpiente en función de su posición relativa con respecto al segmento anterior. (En realidad, esta función es redundante, en realidad solo se usa para la dirección de la cabeza de serpiente).

3. Cuando la serpiente gira, cada segmento se mueve hacia atrás una vez y la posición de la cabeza de la serpiente se mueve a lo largo de la dirección de giro, que está determinada por la dirección de giro.

4. Cuando la serpiente come comida, la longitud aumenta en uno, y la posición de la cabeza de la serpiente se convierte en la posición de la comida, y la dirección permanece sin cambios. La posición XY de cada nodo de la serpiente se mueve hacia atrás. Si la serpiente en sí es serpiente [0] a serpiente [3], significa mover serpiente [0] a serpiente [3] a serpiente [1] a serpiente [4] juntas.

5. Para aplicaciones basadas en diálogos, el mensaje clave de respuesta debe ser PreTranslateMessage, no OnKeyDown como el modo de visualización de documentos.

6. Cada vez que la serpiente gira, solo puede haber una tecla de dirección para responder, es decir, puede girar hacia la izquierda y hacia la derecha, o hacia arriba y hacia abajo. Cuando la cabeza de serpiente gira hacia la izquierda o hacia la derecha, solo puede girar hacia arriba y hacia abajo; cuando la dirección de la cabeza de la serpiente es hacia arriba o hacia abajo, solo puede girar hacia la izquierda y hacia la derecha.

7. La posición de la comida se genera aleatoriamente mediante la función rand.

2. Agregue las siguientes funciones y variables

1 void Huafangge (int Bianchang, int gridShumu); //Si dibuja 20*20 en un cuadrado de 400*400, entonces bianChang = 400; gridShumu = 20

2 void InitSnackSite(); //Inicializa la posición de la serpiente.

Tres

4 int SnakeLength//Indica la longitud de la serpiente.

5 int foodX//X posición de los alimentos

6 int foodY//Y posición de los alimentos

7 bool start//¿Se inició el signo?

8 bool restart; //¿Se reinicia la marca?

Nueve

10 estructura serpiente

11 {

12 int x

13 int y;

14 char direction; //La dirección de una posición es la dirección de la posición anterior relativa a esta posición, determinada por SetDirection().

15 } serpiente[200];

16

17 void draw(int x, int y); //Especifica 0*0 a 20*20; , dibuja el color correspondiente, igual que abajo (cabeza roja, cuerpo verde, cola azul).

18 void DrawGreen(int x, int y);

19 void DrawBlue(int x, int y

20 void DrawBlack(int x, int y); //Dibuja alimentos según foodX y foodY determinados por SetFoodXY().

21

22 void draw Snakefood(); //Dibuja la forma, posición y color de la serpiente de acuerdo con la clase de información de identificación de la matriz SnakeSite.

23 void SetFoodXY(); // Dibuja aleatoriamente la posición XY de la comida.

24

Aproximadamente 25 bool; // Determina si puede subir y bajar (la serpiente misma sube y baja, y es inútil presionarla nuevamente)

26 bool upDown// Determina si puede caminar de izquierda a derecha (la serpiente misma camina de izquierda a derecha, y presionar izquierda y derecha es inútil)

27

28 void move site(); // Durante el movimiento de la serpiente, establezca Las posiciones X e Y de cada segmento, excepto la "cabeza de serpiente", avanzan en secuencia.

29 void set direction(); //Establece la dirección de cada parte de la serpiente excepto la "cabeza de serpiente" cuando se mueve.

30

31 void gira a la izquierda(); //Cuando la serpiente gira a la izquierda,

32 void gira a la derecha(); //Cuando la serpiente gira left Al girar a la derecha,

33 void GoUp(); //Cuando la serpiente se levanta.

34 void GoDown(); //Cuando la serpiente cae,

Puedes consultar aquí: blogs.com/jncpp/archive/2012/07/24/2606908.html .

El juego Snake original basado en MFC, con descarga de código fuente.