Cómo escribir un programa serpiente en visualC++6.0
#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 }; p > #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__ p> # 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 p> 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★"); 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> p> caso 50: nivel=2; ruptura; caso 51: nivel=3; ruptura; Caso 52: nivel=4; ruptura; caso 53: nivel=5; ruptura; Caso 54: nivel=6; ruptura; 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; p> return 1; } } } for(int countbad=0; countbad { if(headx==badx[countbad]&&heady==bady[countbad]) { p> murió=1; devuelve 1; } } devuelve 0; p> } 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"); p> 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,"★"); } > } } } 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