La Red de Conocimientos Pedagógicos - Currículum vitae - papel de serpiente en lenguaje c

papel de serpiente en lenguaje c

//* * * * * *Recordatorio: si desea acelerar, cambie los parámetros en la función _sleep(500) * * * *.

#incluye

#incluye

#incluye

#incluye

#incluye

const int H = 8; //La altura del mapa

const int L = 16; //La longitud del mapa

char game map[H][L ]; // Mapa del juego

int key; //Presiona el botón para guardar.

int sum = 1, over = 0; // La longitud de la serpiente, el juego ha terminado (cómete o golpea la pared)

int dx[4] = { 0, 0, - 1, 1 }; // Direcciones izquierda, derecha, arriba y abajo

int dy[4] = {-1, 1, 0, 0};

struct Snake// Serpentea el tipo de datos de cada nodo.

{

int x, y; //Posición izquierda

int ahora//Guarda la dirección del nodo actual. 0, 1, 2 y 3 son izquierda, derecha, arriba y abajo respectivamente.

} Serpiente[H * L];

const char Shead = ' @//Cabeza de serpiente

const char Sbody = ' #//Cuerpo de serpiente

p>

const char Sfood = ' *//Comida

const char Snode = ' . // '.' está marcado como vacío en el mapa.

void Initial(); //Inicialización del mapeo

void Create _ Food(); // Produce comida aleatoriamente en el mapa

void Show(); ; //Actualiza el mapa

void Button(); //Saca la llave y determina la dirección.

void Move(); //El movimiento de la serpiente

void Check _ Border() //Comprueba si la cabeza de la serpiente cruza la línea.

void Check_Head(int x, int y); //Comprueba la posición de la cabeza de la serpiente después de moverse.

int main()

{

inicial();

mostrar()

Devuelve 0 ;

}

Void Initial() //Inicialización del mapeo

{

int i, j;

int hx, hy;

System("Tisnake"); //El título de la consola

memset(mapa del juego, '.', sizeof(mapa del juego)); //La asignación de inicialización está vacía "."

System ("cls");

srand(time(0)); //Semilla aleatoria

hx = rand() H; //Generar pez negro

hy = rand() L;

GameMap[hx][hy]= Shead;

serpiente[0]. x = hx serpiente[0]. y = hy

serpiente[0].

Now = -1;

create_Food(); //Producir alimentos a voluntad

for(I = 0;I lth;I) //Visualización del mapa

{

for(j = 0; j ltl; j )

printf("c ", GameMap[I][j]);

printf ("\n");

}

printf("\nPequeña serpiente en lenguaje C\n");

Printf("Presione cualquier tecla de dirección para inicia el juego\n ");

getch(); //Primero acepta una clave para permitir que la serpiente comience a caminar en esta dirección.

button(); //Saca la llave y determina la dirección.

}

Void Create_Food() // Genera comida aleatoriamente en el mapa.

{

int fx, fy

mientras(1)

{

FX = rand( ) H;

fy = rand() L;

If(game map [FX] [FY] = ' . ') // No puede aparecer en la posición ocupada por la serpiente .

{

GameMap[FX][fy]= s comida;

Descanso

}

}

}

Void Show() //Actualiza el mapa de visualización.

{

int i, j;

mientras(1)

{

_sleep(500 ) ; // Retraso de medio segundo (1000 es 1 s), es decir, el mapa se actualiza cada medio segundo.

button(); //Primero determina si la tecla se está moviendo.

move();

If(over) //Si comes o golpeas la pared, el juego termina.

{

Printf("\n**Juego terminado* *\n");

printf("gt;_lt\n"); /p>

getchar();

Break;

}

System("cls"); //Borra el mapa y luego actualiza el mostrar Después del mapa.

for(I = 0; i lth; i )

{

for(j = 0; j ltl; j )

printf("c ", GameMap[I][j]);

printf(" \ n ");

}

printf(" \ nPequeña serpiente en lenguaje C\ n ");

Printf("Presiona cualquier tecla de dirección para iniciar el juego\ n ");

}

}

Void Button() //Saca la llave y determina la dirección.

{

if(kbhit()!= 0) //Comprueba si actualmente hay entrada de teclado; de ser así, devuelve un valor distinto de cero; de lo contrario, devuelve 0.

{

while(kbhit()!= 0) //Puede haber varias claves, debes tomarlas todas, tomando la última primero.

key = getch(); //Obtiene la clave de la consola y guárdala en key.

Interruptor (tecla)

{//Lado izquierdo

Caso 75: Serpiente[0]. ahora = 0;

Romper;

//right

Caso 77: serpiente[0].

ahora = 1;

Romper;

//arriba

Caso 72: serpiente[0]. ahora = 2;

Romper;

//Abajo

Caso 80: serpiente[0]. Ahora = 3;

Descanso;

}

}

}

Movimiento vacío() // Movimiento de la serpiente

{

int i, x, y;

int t = sum//Guarda la longitud de la serpiente actual.

//Registra la posición actual de la cabeza de serpiente, configurada en nula, la cabeza de serpiente se mueve primero.

x = Serpiente[0]. x;y = Serpiente[0]. y; mapa del juego[x][y] = ' . x = Serpiente[0]. x dx[Serpiente[0]. ahora];

Serpiente[0]. y = Serpiente[0]. y dy[Serpiente[0]. ahora];

Check_Border(). // ¿La cabeza de serpiente ha cruzado la línea?

Check_Head(x, y); //La posición del pez negro después del movimiento. Los parámetros son: la posición inicial de la cabeza de serpiente.

If(sum == t) //La serpiente se mueve sin comida.

for(I = 1;i lt sum;I) //Para avanzar desde un nodo que terminó en un anticlímax, use el nodo anterior como referencia.

{

If(i == 1) //Mover después de establecer el nodo de cola en nulo.

Mapa del juego [serpiente[i]. x ][ Serpiente[i]. y ] = ' . ';

If(i == sum-1) // Es el nodo de serpiente detrás de la cabeza de serpiente, que ha sido procesado especialmente.

{

Serpiente [yo]. x = x

Serpiente[i]. y = y

serpiente[i]. ahora = Serpiente[0]. Ahora;

}

Else //Otras serpientes van a la posición anterior de la serpiente.

{

Serpiente [yo]. x = Serpiente[i 1]. x;

Serpiente [I]. y = Serpiente[i 1]. y;

Serpiente [I]. ahora = serpiente[i 1]. Ahora;

}

Mapa del juego [serpiente[i]. x ][ Serpiente[i]. y]= ' # '; //Se debe establecer en ' # 'cuerpo de serpiente después del movimiento.

}

}

Void Check_Border() //Comprueba si la cabeza de serpiente ha cruzado la línea.

{

if(Serpiente[0].x 0 ||Serpiente[0].x gt= H

|| Serpiente[0].y 0 || serpiente[0].y gt= L)

over = 1;

}

Void Check_Head(int x, int y) // Verifique la posición de la cabeza de serpiente después del movimiento.

{

If(mapa del juego [snake [0].x] [snake [0].y] = = ' . ')//está vacío.

Mapa del juego [Serpiente[0]. x ][ Serpiente[0]. y]= ' @ ';

Otro

Si (mapa del juego [snake [0].x] [snake [0].y]= ' * ')//Sí alimento.

{

Mapa del juego [Serpiente[0]. x ][ Serpiente[0].

y]= ' @ ';

Serpiente [suma]. x = x//La serpiente recién agregada es la que está detrás de la cabeza de la serpiente.

Serpiente [suma]. y = y

Serpiente[suma]. ahora = Serpiente[0]. Ahora;

El mapa del juego [Serpiente[y]. x ][serpiente[y]. y]= ' # ';

sum ;

create _ Food(); // Una vez terminada la comida, pronto se producirá otra comida.

}

Otro

más de = 1;

}