Hola,
Este es mi primer juego que programo en c++, y no anda en xp ( pero en windows vista y seven anda de 10 ). Lo que pasa es que no anda las "flechas" ( A, S, D y W ).
Este es el codigo ( codigo de novato

):
Código c++:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <iostream>
#define UP_BOTON 119
#define DONW_BOTON 115
#define LEFT_BOTON 97
#define RIGHT_BOTON 100
#define SELECT_BOTON 101
#define PAUSE_BOTON 112
#define SALIR_BOTON 104
using namespace std;
bool animacionInicioOn=true;
void animacionInicio();
void HeadeJuego(int lineas);
void MenuInicio(int linea);
void CambiarOpcionMenu(int opcion, int linea);
void SalirJuego(int linea);
void jugarYa();
void MenuConfiguraciones(int linea);
void CambiarOpcionMenuConfig(int opcion, int linea);
int numeroRand(int m, int n),velocidadGame=1,timeGame=-1;
int main (int argc, char *argv[]) {
_setcursortype( _NOCURSOR );
animacionInicio();
for(int i=1;i<=10;i++){
HeadeJuego(i);
Sleep(1);
}
MenuInicio(5);
return 0;
}
void CambiarOpcionMenu(int opcion, int linea){
switch(opcion){
case 1:
gotoxy(3,linea+1);
textbackground(6);
cprintf("Jugar Ya!");
gotoxy(3,linea+3);
textbackground(7);
cprintf("Configurar");
gotoxy(3,linea+5);
textbackground(7);
cprintf("Salir");
break;
case 2:
gotoxy(3,linea+1);
textbackground(7);
cprintf("Jugar Ya!");
gotoxy(3,linea+3);
textbackground(6);
cprintf("Configurar");
gotoxy(3,linea+5);
textbackground(7);
cprintf("Salir");
break;
case 3:
gotoxy(3,linea+1);
textbackground(7);
cprintf("Jugar Ya!");
gotoxy(3,linea+3);
textbackground(7);
cprintf("Configurar");
gotoxy(3,linea+5);
textbackground(6);
cprintf("Salir");
textbackground(7);
break;
}
}
void MenuInicio(int linea){
int OpcionSelecionada=1,n=0;
CambiarOpcionMenu(OpcionSelecionada,linea);
gotoxy(22,linea+1);
cprintf("Usa la \"A\" para Subir.");
gotoxy(22,linea+2);
cprintf("Usa la \"S\" para Bajar.");
gotoxy(22,linea+3);
cprintf("Usa la \"E\" para Selecionar.");
while(n!=SELECT_BOTON){
cout<<" ";
if(n==UP_BOTON){
if(OpcionSelecionada-1<=3&&OpcionSelecionada-1>0){
OpcionSelecionada=OpcionSelecionada-1;
CambiarOpcionMenu(OpcionSelecionada,linea);
}
}else if(n==DONW_BOTON){
if(OpcionSelecionada+1<=3&&OpcionSelecionada+1>0){
OpcionSelecionada=OpcionSelecionada+1;
CambiarOpcionMenu(OpcionSelecionada,linea);
}
}
}
switch(OpcionSelecionada){
case 1:
jugarYa();
break;
case 2:
MenuConfiguraciones(linea);
break;
case 3:
SalirJuego(linea);
break;
default:
MenuInicio(linea);
break;
}
}
int numeroRand(int m, int n){
}
void jugarYa(){
int n,s_i=10,s_j=24,o_i=0,o_j=0,puntos=0;
bool pause_on=false;
for(int i=10;i<=20;i++){
HeadeJuego(i);
Sleep(1);
}
o_i=numeroRand(0,17);
o_j=numeroRand(0,74);
while(n!=SALIR_BOTON){
if(n==PAUSE_BOTON)
pause_on=!pause_on;
if(!pause_on){
textbackground(7);
for(int i=0;i<=20;i++){
gotoxy(2,4+i);
cprintf(" ");
}
if(n==LEFT_BOTON){
if(s_j-1>=0)
s_j-=1;
}
if(n==RIGHT_BOTON){
if(s_j+1<=74)
s_j+=1;
}
if(n==UP_BOTON){
if(s_i-1>=0)
s_i-=1;
}
if(n==DONW_BOTON){
if(s_i+1<=17)
s_i+=1;
}
if(s_i==o_i&&s_j==o_j){
puntos+=30;
o_i=numeroRand(0,17);
o_j=numeroRand(0,74);
}
textbackground(12);
gotoxy(3+s_j,5+s_i);
cprintf(" ");
textbackground(7);
textbackground(11);
gotoxy(3+o_j,5+o_i);
cprintf(" ");
textbackground(7);
}
textcolor(14);
gotoxy(2,24);
if(pause_on)
cprintf("Presione <H> para salir al menu | Presiona <P> para sacar la pausa.");
else
cprintf("Presione <H> para salir al menu | Presiona <P> para poner la pausa.");
textcolor(15);
gotoxy(40,3);
cout<<"PUNTOS: "<<puntos;
Sleep(velocidadGame);
}
for(int i=20;i>=10;i--){
HeadeJuego(i);
Sleep(1);
}
MenuInicio(5);
}
void MenuConfiguraciones(int linea){
int n=0,OpcionSelecionada=1;
HeadeJuego(10);
textcolor(14);
gotoxy(3,9+linea);
cprintf("Presione <H> para volver al menu.");
textcolor(15);
gotoxy(3,linea);
cprintf("CONFIGURAR");
CambiarOpcionMenuConfig(OpcionSelecionada,linea);
while(n!=SALIR_BOTON){
cout<<" ";
if(n==SELECT_BOTON){
if(OpcionSelecionada==1){
HeadeJuego(10);
gotoxy(3,linea);
cprintf("CONFIGURAR: Velocidad");
gotoxy(3,linea+3);
cprintf("Selecione una velocidad en milisegundos: (ej.: 1000 es igual a 1 segundo)");
gotoxy(3,linea+4);
cin>>velocidadGame;
textcolor(14);
gotoxy(3,linea+6);
cprintf("Velocidad configurada correctamente.");
gotoxy(3,linea+7);
cprintf("Presione una tecla para ir al menu de configuraciones.");
textcolor(15);
MenuConfiguraciones(linea);
}else if(OpcionSelecionada==2){
HeadeJuego(10);
gotoxy(3,linea);
cprintf("CONFIGURAR: Restaurar configuraciones");
velocidadGame=1;
textcolor(14);
gotoxy(3,linea+3);
cprintf("Se a restaurado correctamente las configuraciones.");
gotoxy(3,linea+7);
cprintf("Presione una tecla para ir al menu de configuraciones.");
textcolor(15);
MenuConfiguraciones(linea);
}
}else{
if(n==UP_BOTON){
if(OpcionSelecionada-1<=2&&OpcionSelecionada-1>0){
OpcionSelecionada=OpcionSelecionada-1;
CambiarOpcionMenuConfig(OpcionSelecionada,linea);
}
}else if(n==DONW_BOTON){
if(OpcionSelecionada+1<=2&&OpcionSelecionada+1>0){
OpcionSelecionada=OpcionSelecionada+1;
CambiarOpcionMenuConfig(OpcionSelecionada,linea);
}
}
}
}
HeadeJuego(10);
MenuInicio(5);
}
void CambiarOpcionMenuConfig(int opcion, int linea){
switch(opcion){
case 1:
gotoxy(3,linea+2);
textbackground(6);
cprintf("Velocidad");
gotoxy(3,linea+4);
textbackground(7);
cprintf("Restaurar configuraciones.");
gotoxy(3,linea+6);
textbackground(7);
cprintf("Tiempo (prox.)");
break;
case 2:
gotoxy(3,linea+2);
textbackground(7);
cprintf("Velocidad");
gotoxy(3,linea+4);
textbackground(6);
cprintf("Restaurar configuraciones.");
gotoxy(3,linea+6);
textbackground(7);
cprintf("Tiempo (prox.)");
break;
}
}
void SalirJuego(int linea){
HeadeJuego(10);
gotoxy(3,linea);
textbackground(7);
cprintf("Adios.. chau!... ( presione un boton para salir )");
}
void HeadeJuego(int lineas){
textbackground(1);
clrscr();
textbackground(3);
textcolor(15);
gotoxy(2,1);
cprintf(" ");
gotoxy(2,2);
cprintf(" SNAKE - por pato12 ");
gotoxy(2,3);
cprintf(" ");
textbackground(7);
for(int i=0;i<=lineas;i++){
gotoxy(2,4+i);
cprintf(" ");
}
textbackground(8);
gotoxy(2,lineas+4+1);
cprintf(" BY PATO12 | HALFMUSIC.COM ");
textbackground(7);
}
void animacionInicio(){
if(!animacionInicioOn)
return;
else
animacionInicioOn=false;
int color_animate=6;
while(color_animate!=4){
if(color_animate==6)
color_animate++;
else if(color_animate==7)
color_animate++;
else if(color_animate==8)
color_animate=0;
else if(color_animate==0){
color_animate=4;
break;
}
textcolor(15);
textbackground(color_animate);
clrscr();
gotoxy(22,10);
cprintf("Juego echo por Pato12 | HalfMusic.com");
Sleep(800);
}
for(int i=10;i>0;i--){
gotoxy(22,i+1);
cprintf(" ");
gotoxy(22,i);
cprintf("Juego echo por Pato12 | HalfMusic.com");
Sleep(20);
}
gotoxy(22,1);
cprintf(" ");
}
No se si sera mi complilador, uso el
ZinjaI ( y no lo cambio :p ).
Gracias
Salu2