La Red de Conocimientos Pedagógicos - Currículum vitae - Código de juego en lenguaje C

Código de juego en lenguaje C

El código Snake más básico

#include

#include//Definición de tipo básico. Admite funciones de definición de tipo. Funciones de la interfaz de usuario Funciones de la interfaz del dispositivo gráfico.

#include //La operación correspondiente generada por el usuario al presionar el teclado (consola)

#include

# include //Archivo de encabezado de fecha y hora

#define LEN 30

#define WID 25

int Snake[LEN][ WID] = {0}; //Los elementos de la matriz representan varias partes de la serpiente

char Sna_Hea_Dir = 'a'; //Registra la dirección de movimiento de la cabeza de la serpiente

int Sna_Hea_X, Sna_Hea_Y;// Registra la posición de la cabeza de la serpiente

int Snake_Len = 3;//Registra la longitud de la serpiente

clock_t Now_Time;//Registra la corriente tiempo de movimiento automático

int Wait_Time ;//Registra el intervalo de tiempo de movimiento automático

int Eat_Apple = 1;//Comer una manzana se expresa como 1

int Level;

int All_Score = - 1;

int Apple_Num = -1;

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //Obtener el identificador; de salida estándar

/ /Handle: Marca diferentes objetos en la aplicación y diferentes instancias de objetos similares para una fácil manipulación,

void gotoxy(int x, int y )//Establecer la posición del cursor

{

COORD pos = {x,y} //Definir la coordenada POS de un personaje en la pantalla de la consola

SetConsoleCursorPosition(hConsole, pos); //Función para posicionar la posición del cursor

}

void Hide_Cursor()//Ocultar función fija del cursor

{

CONSOLE_CURSOR_INFO cursor_info = {1 , 0}

SetConsoleCursorInfo(hConsole, &cursor_info

}

void); SetColor(int color)//Establecer color

{

SetConsoleTextAttribute(hConsole, color);

//Es el formato de función de API para establecer la fuente color y color de fondo: SetConsoleTextAttribute(handle, color);

}

void Print_Snake()//Imprime la cabeza, el cuello y la cola de la serpiente

{

int iy, ix, color;

for(iy = 0; iy < WID; ++iy)

for(ix = 0; ix < LEN ++ix)

{

if(Snake[ix][iy] == 1)//Cabeza de serpiente

{

SetColor(0xf); //oxf representa la dirección de memoria asignada setcolor:34

Ejecuta la función para personalizar el color

gotoxy(ix*2, iy);

printf("※");

}

if(Snake[ix][iy] == 2)//Cuello de serpiente

{

color = rand()%15 + 1 //rand() Función; es una función aleatoria que genera números aleatorios. También existen funciones srand() en lenguaje C.

//Archivo de encabezado: stdlib.h

if(color == 14)

color -= rand() % 13 + 1 //Cambiar; color

SetColor(color);

gotoxy(ix*2, iy);

printf("■");

}

if(Snake[ix][iy] == Snake_Len)

{

gotoxy(ix*2, iy);

SetColor(0xe);

printf("≈");

}

}

}

void Clear_Snake()//Borra la serpiente

{

int iy, ix;

for(iy = 0; iy < WID; + + iy)

for(ix = 0; ix < LEN; ++ix)

{

gotoxy(ix*2, iy);

p>

if(Serpiente[ix][iy] == Serpiente_Len)

printf(" ");

}

}

void Rand_Apple()//Generar manzanas aleatoriamente

{

int ix, iy;

do

{

ix = rand() % LEN;

iy = rand() % WID;

} while(Snake[ix][iy]);

p>

Serpiente[ix][iy] = -1;

gotoxy(ix*2, iy);

printf("⊙");

Eat_Apple = 0;

}

void Game_Over()//La serpiente está muerta

{

gotoxy(30, 10);

printf("Juego terminado");

Dormir(3000);

system("pausa > nul");

exit(0);

}

void Move_Snake()//Deja que la serpiente se mueva

{

int ix, iy;

for(ix = 0; ix < LEN; ++ix)//Marca primero la cabeza de la serpiente

for(iy = 0; iy < WID; ++iy )

si(Serpiente[ix][iy]

== 1)

{

switch(Sna_Hea_Dir)//Cabeza de serpiente según la nueva bandera de dirección de la cabeza de serpiente

{

caso 'w ':

if(iy == 0)

Game_Over();

else

Sna_Hea_Y = iy - 1 ;

Sna_Hea_X = ix;

romper;

caso 's':

if(iy == (WID -1) )

Game_Over();

else

Sna_Hea_Y = iy + 1;

Sna_Hea_X = ix;

romper;

caso 'a':

if(ix == 0)

Game_Over();

else

Sna_Hea_X = ix - 1;

Sna_Hea_Y = iy;

romper;

caso 'd':

if(ix == (LEN - 1))

Game_Over();

else

Sna_Hea_X = ix + 1;

Sna_Hea_Y = iy ;

romper;

predeterminado:

romper;

}

}

if(Serpiente[Sna_Hea_X]

[Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)

Game_Over();

if(Serpiente[Sna_Hea_X] [Sna_Hea_Y] < 0)//Come manzana

{

++Snake_Len;

Come_Apple = 1;

}< / p>

for(ix = 0; ix < LEN; ++ix)//Manejar cola de serpiente

for(iy = 0; iy < WID; ++iy)

{

si(Serpiente[ix][iy] > 0)

{

si(Serpiente[ix][iy] != Serpiente_Len)

Serpiente[ix][iy] += 1;

else

Serpiente[ix][iy] = 0;

}

}

Serpiente[Sna_Hea_X][Sna_Hea_Y] = 1;//Procesando cabezas de serpiente

}

void Get_Input() //Controla la dirección del movimiento de la serpiente

{

if(kbhit())

{

switch(getch() )

{

caso 87:

Sna_Hea_Dir = 'w';

descanso;

caso 83 :

Sna_Hea_Dir = 's';

descanso;

caso 65:

Sna_Hea_Dir = 'a';

descanso;

caso 68:

Sna_Hea_Dir = 'd';

descanso;

predeterminado:

break;

}

}

if(clock() - Now_Time >= Wait_Time)//La serpiente caminará automáticamente cuando llegue el momento

{

Clear_Snake();

Move_Snake();

Print_Snake();

Now_Time = reloj();

}

}

vacío

Init()//Inicialización

{

system("title Greedy Hairy Snake");

system("modo con: cols=80 líneas= 25 ");

Hide_Cursor();

gotoxy(61, 4);

printf("Tu puntuación:");

gotoxy(61, 6);

printf("Tu nivel:");

gotoxy(61, 8);

printf("La longitud :");

gotoxy(61, 10);

printf("La Velocidad:");

gotoxy(61, 12);

printf("Apple Num:");

int i;

for(i = 0; i < Snake_Len; ++i)//Generar serpiente

Serpiente[1i][15] = i+1;

int iy, ix;//Imprimir serpiente

for(iy = 0; iy < WID; ++iy)

for(ix = 0; ix < LEN; ++ix)

{

if(Serpiente[ix] [ iy])

{

SetColor(Serpiente[ix][iy]);

gotoxy(ix*2, iy);

printf("■");

}

}

}

void Pri_News()//Imprimir información

p>

{

SetColor(0xe);

gotoxy(73,4);

All_Score += Nivel;

printf("%3d", All_Score);

gotoxy(73, 6);

printf("%3d", Nivel);

gotoxy (73, 8);

printf("%3d",Snake_Len);

gotoxy(73, 10);

printf("0. % 3ds", Wait_Time/10);

gotoxy(73, 12);

printf("%d", Apple_Num);

}

p>

void Lev_Sys()//Sistema de niveles

{

if(((Apple_Num-1) / 10) == Nivel)

{

++Nivel;

si(Wait_Time > 50)

Wait_Time -= 50;

else

if(Wait_Time > 10)

Wait_Time -= 10;

else

Wait_Time -= 1;

}

}

int main(void)

{

Init();

srand((unsigned)time(NULL));//Establecer la semilla del número aleatorio

Now_Time = clock();

int speed1=1000,speed2,a;

printf("\n");

printf("Ingrese la velocidad que desea\n");

scanf("%d",&speed2);

Nivel=1;

Wait_Time=speed1-speed2;

printf("Por favor, introduzca su número de manzanas deseadas\n");

scanf("%d",&a);

while(a--)

Rand_Apple() ;

while(1)

{

if(Eat_Apple)

{

++Apple_Num;

Rand_Apple();

Lev_Sys();

Pri_News();

}

Get_Input( );

Dormir(10);

}

devuelve 0;

}