Escribir un juego de serpientes usando programación en lenguaje C en un entorno DOS
Diseño y descripción del programa
1
, pared lateral (
Muro
)
Esta clase especifica el tamaño del juego.
2
Snake (
Snake
)
Utiliza esta clase para generar una instancia de serpiente
2
Snake (
Snake
)
Utiliza esta clase para generar una instancia de serpiente
p>serpiente
3
, mover (
Mover
)
Esta categoría Se utiliza para realizar el control de operación de la serpiente, es decir, la operación de movimiento de la cabeza de la serpiente hacia arriba, abajo, izquierda y derecha.
4
Categoría de comida (
Comida
)
Esta categoría es comida aleatoria durante el juego. Controles y displays generados.
5
Juicio de muerte (
Muerto
)
Este tipo es para juzgar la muerte durante el juego.
6
Nodo de serpiente (
SnakeNode
)
Este tipo es comido aleatoriamente por las serpientes. La producción de alimento aumenta así la longitud de las especies controladas, lo que incluye aumentos en la longitud de las serpientes y cambios en la cola.
7
Estadísticas de puntuación (
Puntuación
)
Esta categoría se basa en el rendimiento del juego del jugador. Registre y puntúe el resultado al final del juego.
...
Algunas funciones y descripciones
1.Char menu()
/*
Utilizado para la velocidad del juego seleccionada por el jugador, devuelve un
char
valor
*/
2.DELAY(char ch1) ;
/*
Se utiliza para controlar la velocidad del juego
*/
3.void drawmap(); >
/*
Función de mapa del juego de dibujo
*
4
,
menú vacío ()
/*
Salida de la información de ayuda del juego
*
...
Explicación de algunos detalles de clasificación
1
, Construcción de la serpiente
—
Serpiente
clase Serpiente{ p>
público:
int x[n]
int y[n];
int nodo
/ / p>
Longitud del cuerpo de la serpiente
int dirección; //
Dirección del movimiento de la serpiente
int
vida; //
Vida de serpiente, juez muerte
}
2
, comida aleatoria
Comida p>
Utilice
la función rand(
) para generar números aleatorios y luego coordinar el posicionamiento
void Food(void){
...
int pos_x = 0;
int pos_y = 0;
pos_x = rand() longitud; >
Determinación de coordenadas
pos_y = rand() (ancho-1); //y
Determinación de coordenadas
... p>
| /p>
...
interruptor(){
caso VK_UP: {
OutChar2.Y--;
y--;
romper;
}
caso VK_LEFT: {
OutChar2.Y;
y;
romper;
}
caso VK_DOWN: {
OutChar2.X--- ;
x--;
romper;
}
caso 'VK_RIGHT: {
OutChar2. X;
x;
romper
}
}
código
#include lt;iostreamgt ;
#include lt;ctimegt;
#include lt;conio.hgt
#include lt;windows.hgt;
#include lt; tiempo.hgt;
usando n
amespace std;
int score=0, t=300, f=1 //
Puntuación e intervalo de tiempo
/ms
(Controla la velocidad de la serpiente codiciosa)
double ss=0, tt=0; //
Parámetros utilizados para el tiempo estadístico
clase Nodo
p>{
Nodo(): x(0), y(0), anterior(0), siguiente(0) { }
int x; p>
int y;
Nodo *anterior;
Nodo *siguiente
clase de amigo
};
clase Serpiente
{
público:
Serpiente(); ();
salida nula();
movimiento nulo();
punto de cambio nulo(char); /p>
Nodo *cabeza;
Nodo *cola;
enum p{ ARRIBA
, DERECHA, ABAJO, IZQUIERDA }punto;
Dirección
int food_x, food_y; //
Coordenadas de los alimentos
static const int N = 23;
int game[N][N];
void add_head(int, int); //
Agregar coordenadas como
a, b
nodo
void delete_tail(); //
Eliminar el último nodo
void great_food(); // p>
Generar comida
void gotoxy(int, int)
};
void menu(); //
Menú de operación del juego
int main()
{
system("color a"
);//
Inicial
cmd
El color de la ventana es negro (fondo) verde claro (texto)
coutlt; lt;"\ n\n\n\n\n\n
"
for(int i=0; ilt; 23; i)
{char star []={"¡Bienvenido al juego de la serpiente!"};
coutlt;lt; star[i];
coutlt ;lt;"\n\n
¡Te deseo buena suerte!
"lt;lt;endl;
Dormir(3000);
if(kbhit()){char kk=getch(); if(kk ==9)f=5;} //
Si se ejecuta, obtiene una estrella y suma
5
puntos
sistema ( "cls");
Serpiente s;
menú();
color 1a");
s.output();
mientras (verdadero)
{
char keydown = getch()
if(keydown==32)getch();
if(keydown==27)return 0
s.change_point(keydown);
mientras (!kbhit())
{clock_t inicio, fin; inicio=reloj()
s.move();
s.output();
Dormir(t);
end=clock(); tt=(doble)(fin-inicio)/CLOCKS_PER_SEC;
coutlt;lt;"
Hora:
"lt;lt;(int)ss;