Red de conocimiento informático - Material del sitio web - Cómo escribir un programa serpiente en visualC++6.0

Cómo escribir un programa serpiente en visualC++6.0

#ifndef __COLORCONSOLE__H__

#define __COLORCONSOLE__H__

#include

#include

#include

#include

#include

usando el espacio de nombres std;

HANDLEiniciar();

BOOL textout(HANDLE hOutput,int x,int y,WORD wColors[],int nColors,LPTSTR lpszString);

#endif

#ifndef __FOOD__H__ // Evitar referencias repetidas a este archivo de encabezado

#define __ FOOD__H__

#include "colorConsole.h"

class Food

{

público:

void initfood(int); //inicializa la función de comida

protegted:

WORD goodcolor[1]; //definir el color de la comida normal

WORD badcolor[1]; //definir el color de la comida en mal estado

int numgood,goodx[50],goody[50]; / definir el número y las coordenadas de la comida normal

int numbad,badx[30],bady[30]; //definir el número y las coordenadas de la comida en mal estado

};

#endif

#ifndef __FOOD__H__ //p>

#define __FOOD__H__

#include "colorConsole.h"

class Food

{

public:

void initfood(int); //fuera de la función initfood

protegida:

WORD goodcolor[1]; //definir el color de los alimentos normales

WORD badcolor[1]; //definir el color de los alimentos en mal estado

int numgood ,goodx[50],goody[50]; //definir el número y las coordenadas de la comida normal

int numbad, badx[30],bady[30],bady[30]; el número y las coordenadas de la comida normal

int numbad, badx[30],bady[30] //define el numbe;

r, coordenadas de comida en mal estado

};

#endif

#ifndef __SNAKE__H__ //p>

#define __SNAKE__H__

# include "colorConsole.h"

clase Serpiente

{

público:

void initsnake(); //inicializa la función de la serpiente

protected:

WORD bColor[1]; //definimos el color del cuerpo de la serpiente

WORD hColor[1]; //definir el color de la cabeza de la serpiente

int headx,heady,bodyx[100],bodyy[100] //definir las coordenadas de la cabeza y el cuerpo de la serpiente

int node; //definir el número de nodos en el cuerpo de la serpiente

}.

#endif

#include "colorConsole.h"

HANDLE iniciar()

{

HANDLE hOutput;

hOutput = GetStdHandle(STD_ OUTPUT_HANDLE);

devuelve hOutput;

}

BOOL textout(HANDLE hOutput,int x,int y,WORD wColors[],int nColors,LPTSTR lpszString)<

{

DWORD cWritten;

BOOL fSuccess;

COORD coord;

coord.X = x // Comenzar desde la primera celda

coord.Y = y; // primera línea

fSuccess = WriteConsoleOutputCharacter(

hOutput, // identificador del búfer de pantalla

lpszString , //Fuente puntero de cadena

lstrlen(lpszString), //Longitud de la cadena

coord, //La primera celda que se escribirá

&cWritten); escrito

si (! fSuccess)

cout<< "error:WriteConsoleOutputCharacter"<

for (;fSuccess && coord.X < lstrlen( lpszString)+x; coord.X += nColors )

{

fSuccess = WriteConsoleOutputAttribute(

hOutput, // identificador del búfer de pantalla

wColors, // puntero a la cadena de origen < /

p>

nColors, // longitud de la cadena

coord, // primera celda en la que escribir

&cWritten // número real escrito

}

if(!fSuccess)

cout<< "error:WriteConsoleOutputAttribute"<

return 0;

}

#include "Food.h"

HANDLE handle;

void Food::initfood(int lev) //Inicializar comida

{

numgood=lev*5;

numbad=lev*2;

goodcolor[0]= FOREGROUND_RED|FOREGROUND_BLUE //El color normal comida

badcolor[0]= FOREGROUND_RED|FOREGROUND_GREEN; // Color de la comida en mal estado

srand((unsigned) time( NULL)); handle ,64,6,goodcolor,1, "La comida normal es★"); //Leyenda de salida

textout(handle,64,8,badcolor,1, "La comida en mal estado es★");

p>

for(int fgood= 0;fgood<numgood;fgood++) //Salida de comida normal

{

goodx[fgood]=((rand( )%55 +4)/2)*2;

bueno[fgood]=rand()%26+4;

textout( handle,goodx[fgood],goody[ fgood], goodcolor,1,"★");

}

for(int fbad=0; fbad

{

badx[ fbad]=((rand()%56+4)/2)*2;

bady[fbad]=rand()%26+4 ;

textout(handle,badx[fbad],bady[fbad],badcolor,1,"★");

}

}

#include "Game.h"

HANDLE identificador;

Juego::Juego()

{

nodo =3 ; //El nodo predeterminado de la serpiente al desempaquetar

headx=44,heady=4; //Las coordenadas predeterminadas de la cabeza de la serpiente al desempaquetar

controlx=-2 ,controly=0; //La dirección inicial predeterminada de la serpiente es la izquierda

start=0;

scores=0;

self=0, wall=0,died= 0; //La condición de finalización del juego por defecto es no

sColor[ 0]=FOREGROUND_GREEN|FOREGROUND_INTENSITY; //color de la valla

head[0]=FOREGROUND_RED| FOREGROUND_INTENSITY;

//color del texto de la pantalla de inicio

}

int Game::starting()

{

while(1)

{

textout(handle,22,16,head,1, "Teclas de control: W-Arriba S-Abajo A-Izquierda D-Derecha"); //Interfaz de inicio

textout(handle,16, 18,head,1, "Come toda la comida normal para mejorar ¡No comas comida en mal estado!);

textout(handle,30,20,head,1 , "Seleccione nivel 1-9 ");

if(_kbhit())

{

int v=_getch() //seleccione nivel

cambiar(v)

{

caso 49:

nivel=1;

romper;

p>

caso 50:

nivel=2;

ruptura;

caso 51:

nivel=3;

ruptura;

Caso 52:

nivel=4;

ruptura;

caso 53:

p>

nivel=5;

ruptura;

Caso 54:

nivel=6;

ruptura;

p>

Ejemplo 55:

nivel=7;

ruptura;

Caso 56:

nivel=8;

descanso;

Predeterminado:

nivel=9;

descanso

}

textout(handle,16,18,head,1," "); //borrar pantalla

textout(handle,30,20,head,1, " ");

textout(handle,22,16,head,1," "

break

}

}

/Establecer valla periférica

for(int wideup=2;wideup<60;wideup+=2) //top

{

textout(handle,wideup, 2,sColor,1,"■" );

}

for(int widedown=2;widedown<60;widedown+=2) //desventaja

{

textout(handle,widedown,30,sColor,1,"■");

}

}

for (int widedown=2;widedown<60;widedown+=2) //desventaja

{

textout(handle,widedown,30,sColor ,1,"■");

}

if(dirección=='s'&&direc! ='w')

{

textout(manejar,

headx,heady,hColor,1," ");

textout(handle,headx.heady,hColor,1,"◎");

controlx=0;

controlx=0;

controly=1;

direc='s';

}

if(dirección =='a'&&direc! ='d')

{

textout(handle,headx,heady,hColor,1," ");

textout(handle,headx,heady,hColor,1,"◎");

controlx=-2;

controly=0;

direc=' a';

}

if(direction=='d'&&direc!='a')

{

textout( handle,headx,heady,hColor 1," ");

textout(handle,headx,heady,hColor,1,"◎");

controlx=2;

controlx=2;

controlx=0;

direc='d';

}

si (direction=='d'&&direc!

}

}

bool Game:: ifgameover() // Determina si el juego ha terminado

{

if(headx==2||headx==60||heady==2||heady==30) //golpea la pared

{

wall=1;

return 1;

}

for(int sbody=1;sbody

{

if(headx==bodyx[sbody]&&heady==bodyy[sbody])

{

self= 1;

return 1;

}

}

}

for(int countbad=0; countbad

{

if(headx==badx[countbad]&&heady==bady[countbad])

{

murió=1;

devuelve 1;

}

}

devuelve 0;

}

void Game::gameover() //salida del juego en pantalla

{

//sndPlaySound("DOWN.wav" ,SND_ASYNC) ;

if(wall==1)

textout(handle,20,14,sColor,1, "El juego termina al golpear la pared");

if( self==1)

textout(handle,20,14,sColor,1, "Muérdete y se acaba el juego");

>

if(died==1)

textout(handle,20,14,sColor,1, "morderse a sí mismo Game over");

if(died== 1)

textout(handle,19,14,sColor,1, "comí comida en mal estado Se acabó el juego");

}

void Game::scorenlevelup ()

{

char marks[5],Level[5]; // Prepárate para el nivel de salida y puntuación

for(int eatgood=0; eatgood

{

if(headx==goodx[eatgood]&& heady==goody[eatgood] )

{

//sndPlaySound("LASER.wav",SND_ASYNC);

goodx[eatgood]=74 //evita futuras caminatas hacia el el punto de comida consumido se considera comido para obtener puntos adicionales que afectan la mejora

goody[eatgood]=6;

node++; //crecer en uno

puntuaciones+=10; //agregar diez puntos

itoa(scores,marks,10); //convertir el tipo de datos y preparar la salida

itoa(level Level,10);

textout(handle,64,11,hColor,1, "Puntuaciones:"); //Puntuaciones de salida

textout(handle,70,11,hColor,1,marks ) ;

textout(handle,64.13,hColor,1, "Level:"); //nivel de salida

textout(handle,70,13,hColor,1,Level);

subir de nivel--;

if(levelup==4)

{

for(int fgood=0; fgood< numgood ;fgood++) //Vuelve a generar comida normal

{

textout(handle,goodx[fgood],goody[fgood],goodcolor,1,"★");

p>

}

> }

}

}

if(levelup==0) //actualizar< / p>

{

nivel++;

nivelup=5*nivel;

for(int i=4;i<58;i+=2 ) //borrar pantalla

{

for(int j=4;j<30;j++)

{

textout( manejar ,i,j,sColor,1," ");

}

}

initfood(level); //salida de comida

textout(handle,headx,heady,hColor,1,"◎"); /p>

for(int j=0;j

{

textout(handle,bodyx[j] ,bodyy [j],bColor,1,"●");

}

textout(handle,18,0,hColor,1, "Presione cualquier tecla para iniciar un nivel superior nivel");

itoa(level,Level,10);

textout(handle,70.13,hColor,1,Level); //Generar el nuevo nivel

while(1) //El usuario controla si desea iniciar un nivel superior

{

if (_kbhit())

{

textout(handle,18,0,sColor,1, " " );

break;

}

}

}

}

}

#include "Snake.h"

mango externo HANDLE;

void Snake::initsnake() //Inicializar serpiente

{

hColor[0]=FOREGROUND_RED|FOREGROUND_INTENSITY; //Color de la cabeza de la serpiente

bColor[ 0] =FOREGROUND_BLUE|FOREGROUND_INTENSITY; //Color del cuerpo de la serpiente

for(int i=0;i

{

bodyx[i]=(i+1)*2+headx;

bodyy[i]=embriagador;

}

textout( handle,headx,heady,hColor,1,"◎"); //imprime la cabeza de la serpiente

for(int j=0;j

{

textout(handle,bodyx[j],bodyy[j], bColor,1,"●");

}

}

#include "Serpiente.h"

#include "Comida.h"

#include "Juego.h "

Juego;

MANEJAR el identificador; //identificador de la ventana

void main()

{

/ /sndPlaySound("BACKGROUND.wav",SND_LOOP|SND_ASYNC);

handle=initiate(); //inicializar el identificador de ventana

game.in

itfood(game.starting()); //inicializa la comida

game.initfood(game.starting()); //inicializa la comida