Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - JuanCPLUS

#1
Programación C/C++ / MiniJuego en C++ - En desarrollo
28 Septiembre 2012, 03:36 AM
Hola! este es mi primer tema aquí en el elhacker.net

Aquí les traigo un código de un juego que estoy empezando a desarrollar.

Citar// Pequeño juego en C++ - 2012
// Versión: 0.1
// http://www.cplus-facilito.blogspot.mx/
// Compilado con DevC++
// Teclas de movimiento: W,S,A,D

// Si no desean crear gotoxy, pueden usar un bucle
// Un contador, que cuente el valor de Y y otro de X
// Cada vez que de vuelta pasa línea

// Para cambiar velocidad de movimiento
// cambia el valor del eje X y Y
// en sus respectivas funciones

// Funciona igual con un bucle pero se necesita más código
// Lo desarrolle así para facilitar el entendimiento

//Librerías que ocuparemos
#include <iostream> // Librería básica C++
#include <conio.h>  // Librería extra para usar getch
#include <windows.h> // Librería para poder desarrollar gotoxy

using namespace std; // Evitar la escritura de std en iostream

// Declarar todos los objetos
void personaje_arriba();
void personaje_abajo();
void personaje_izquierda();
void personaje_derecha();
void gotoxy();
void juego();

// Personaje Arriba
char personaje_arriba1[]={' ','X',' ',0};
char personaje_arriba2[]={'X','X','X',0};
char personaje_arriba3[]={'X',' ','X',0};
// Personaje Abajo
char personaje_abajo1[]={'X',' ','X',0};
char personaje_abajo2[]={'X','X','X',0};
char personaje_abajo3[]={' ','X',' ',0};
// Personaje Izquierda
char personaje_izquierda1[]={' ','X','X',0};
char personaje_izquierda2[]={'X','X',' ',0};
char personaje_izquierda3[]={' ','X','X',0};
// Personaje Derecha
char personaje_derecha1[]={'X','X',' ',0};
char personaje_derecha2[]={' ','X','X',0};
char personaje_derecha3[]={'X','X',' ',0};

// Variable tecla
char tecla;
// Eje X y Y
int x=0, y=0;

// Creando función gotoxy
void gotoxy(int x,int y)
{
   HANDLE hCon;
   COORD dwPos;
   
   dwPos.X = x;
   dwPos.Y = y;
   hCon = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleCursorPosition(hCon,dwPos);
}

// Función principal - MENU
int main() {
   printf("\n\n\n");
   printf("          -------------------------------------------------------\n");
   printf("          -                   JUEGO EN C++                      -\n");
   printf("          -------------------------------------------------------\n");
   printf("          -                                                     -\n");
   printf("          -                                                     -\n");
   printf("          -       Presione cualquier tecla para iniciar         -\n");
   printf("          -                                                     -\n");
   printf("          -                                                     -\n");
   printf("          -                                                     -\n");
   printf("          -                                                     -\n");
   printf("          -------------------------------------------------------\n");
   gotoxy(0,0); // Cursor al inicio
   int menu = getch();
   juego();
   return 0;
}

// Función Juego
void juego() {
   x=37; //Iniciamos en el centro
   y=12;
   personaje_arriba(); // Mostramos el personaje
   do {
      tecla = getch();
      if (tecla == 'w' || tecla == 's' || tecla == 'a' || tecla == 'd' || tecla == 'W' || tecla == 'S' || tecla == 'A' || tecla == 'D') {
         if (tecla == 'w' ||tecla == 'W')
            personaje_arriba();
         if (tecla == 's' || tecla == 'S')
            personaje_abajo();
         if (tecla == 'a' || tecla == 'A')
            personaje_izquierda();
         if (tecla == 'd' || tecla == 'D')
            personaje_derecha();
       }
         
   }while(1); // Mientras sea verdadero se repite (siempre)
   cin.get();
}

// Posibles movimientos de nuestro personaje
void personaje_arriba() {
    if (y>=3) {
       system("cls");
       y-=3;
    }
    gotoxy(x,y); puts(personaje_arriba1); //Situar en el eje
    gotoxy(x,y+1); puts(personaje_arriba2); // Situar un espacio después del eje(que no queden en el mismo renglon)
    gotoxy(x,y+2); puts(personaje_arriba3); // Situar dos espacios después del eje
    gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_abajo() {
    if (y<=18) {          
       system("cls");
       y+=3;
    }
    gotoxy(x,y); puts(personaje_abajo1);//Situar en el eje
    gotoxy(x,y+1); puts(personaje_abajo2);// Situar un espacio después del eje(que no queden en el mismo renglon)
    gotoxy(x,y+2); puts(personaje_abajo3);// Situar dos espacios después del eje
    gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_izquierda() {
    if (x>=3) {
       x-=3;
       system("cls");
    }
    gotoxy(x,y); puts(personaje_izquierda1);//Situar en el eje
    gotoxy(x,y+1); puts(personaje_izquierda2);// Situar un espacio después del eje(que no queden en el mismo renglon)
    gotoxy(x,y+2); puts(personaje_izquierda3);// Situar dos espacios después del eje
    gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_derecha() {
    if (x<75) {
       x+=3;
       system("cls");
    }
    gotoxy(x,y); puts(personaje_derecha1);//Situar en el eje
    gotoxy(x,y+1); puts(personaje_derecha2);// Situar un espacio después del eje(que no queden en el mismo renglon)
    gotoxy(x,y+2); puts(personaje_derecha3);// Situar dos espacios después del eje
    gotoxy(0,0); // Cursor siempre en el inicio
}