Temas > Programacion > C/C++ > Como programar un juego en C
Daniel

PASO 1: Descarga C++ 
PASO 2: Coloca esto 
#include <stdio.h>
#include <Windows.h>
#include <conio.h>
#include <stdlib.h>
#include <list>
#include <mmsystem.h>
using namespace std;

#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80

/* Ojo falta documentar :O*/
/* Ojo en propiedades - vinculador - entrada 
   agregar winmm.lib para la musica
*/
void gotoxy(int x, int y)
{
    HANDLE hCon;
    //Recupera el control de la consola
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    //Son coodenadas
    COORD dwPos;
    dwPos.X = x;
    dwPos.Y = y;
    SetConsoleCursorPosition(hCon, dwPos);
}

void ocultarCursor()
{
    HANDLE hCon;
    //Recupera el control de la consola
    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    cci.dwSize = 50;
    cci.bVisible = FALSE;
    SetConsoleCursorInfo(hCon, &cci);
}
void pintarLimite()
{
    for (int i = 2; i < 78;i++)
    {
        gotoxy(i, 3); printf(?%c?, 205);
        gotoxy(i, 33); printf(?%c?, 205);
    }
    for (int i = 4; i < 33; i++)
    {
        gotoxy(2, i); printf(?%c?, 186);
        gotoxy(77, i); printf(?%c?, 186);
    }
    gotoxy(2, 3); printf(?%c?, 201);
    gotoxy(2, 33); printf(?%c?, 200);
    gotoxy(77, 3); printf(?%c?, 187);
    gotoxy(77, 33); printf(?%c?, 188);
}

void disparo()
{
    sndPlaySound(?snd_disparo.wav?, SND_ASYNC);
}
void lose()
{
    sndPlaySound(?snd_lose.wav?, SND_ASYNC);
}
void explosion()
{
    sndPlaySound(?explosion.wav?, SND_ASYNC);
    
}

class NAVE
{
    int x, y;
    int corazones;
    int vidas;
public:
    NAVE();
    NAVE(int _x, int _y, int _corazones, int _vidas);
    void pintar();
    void borrar();
    void mover();
    void pintarCorazones();
    void perderVida();
    void dismunirCorazon(){ corazones--; }
    int X(){ return x; }
    int Y(){ return y; }
    int vidasJugador(){ return vidas; }

};
NAVE::NAVE(int _x, int _y, int _corazones,int _vidas)
{
    x = _x;
    y = _y;
    corazones = _corazones;
    vidas = _vidas;
}
void NAVE::pintar()
{
    gotoxy(x, y); printf(?  %c?, 30);
    gotoxy(x, y + 1); printf(? %c%c%c?, 40, 207, 41);
    gotoxy(x, y + 2); printf(?%c%c %c%c?, 30, 190, 190, 30);

}
void NAVE::borrar()
{
    gotoxy(x, y);     printf(?         ?);
    gotoxy(x, y + 1); printf(?         ?);
    gotoxy(x, y + 2); printf(?         ?);
}
void NAVE::mover()
{
    if (_kbhit())
    {
        char tecla = _getch();
        borrar();
        if (tecla == IZQUIERDA && x > 3)
        {
            x--;
        }
        else if (tecla == DERECHA && x + 6 < 77)
        {
            x++;
        }
        else if (tecla == ARRIBA && y > 4 )
        {
            y--;
        }
        else if (tecla == ABAJO && y + 3 < 33  )
        {
            y++;
        }
        else if (tecla == `e`)
        {
            corazones--;
        }
        pintar();
        pintarCorazones();
    }
}
void NAVE::pintarCorazones()
{
    gotoxy(50, 2);
    printf(?Vida: %d?,vidas);
    gotoxy(64, 2);
    printf(?Salud:?);
    gotoxy(70, 2);
    printf(?      ?);
    for (int i = 0; i < corazones; i++)
    {
        gotoxy(70 + i, 2);
        printf(?%c?, 3);
    }
}
void NAVE::perderVida()
{
    if (corazones == 0)
    {
        borrar();
        gotoxy(x, y);     printf(?   **   ?);
        gotoxy(x, y + 1); printf(?  ****  ?);
        gotoxy(x, y + 2); printf(?   **   ?);
        Sleep(200);
        borrar();
        gotoxy(x, y);     printf(? * ** *?);
        gotoxy(x, y + 1); printf(?  **** ?);
        gotoxy(x, y + 2); printf(? * ** *?);
        Sleep(200);
        borrar();
        vidas--;
        corazones = 3;
        pintarCorazones();
        pintar();
        explosion();
    }
}
class Asteroide
{
    int x, y;
public:
    Asteroide(int _x, int _y);
    void pintar();
    void mover();
    void colisionNave(NAVE &nave);
    int X(){ return x; }
    int Y(){ return y; }
};
Asteroide::Asteroide(int _x, int _y)
{
    x = _x;
    y = _y;
}
void Asteroide::pintar()
{
    gotoxy(x, y); printf(?%c?, 184);
}
void Asteroide::mover()
{
    gotoxy(x, y); printf(? ?);
    y++;
    if (y > 32)
    {
        x = (rand() % 71) + 4;
        y = 4;
    }
    pintar();
}
void Asteroide::colisionNave(NAVE &nave)
{
    if (x >= nave.X() && x < nave.X() + 6 && y >= nave.Y() && y <= nave.Y() +
2)
    {
        nave.dismunirCorazon();
        nave.borrar();
        nave.pintar();
        nave.pintarCorazones();
        x = (rand() % 71) + 4;
        y = 4;
    }
}
class Bala
{
    int x, y;
public:
    Bala(int _x, int _y);
    void mover();
    bool fuera();
    int X(){ return x; }
    int Y(){ return y; }
};
Bala::Bala(int _x, int _y)
{
    x = _x;
    y = _y;
}
void Bala::mover()
{
    gotoxy(x, y); printf(? ?);
    y--;
    gotoxy(x, y); printf(?*?);
    
}
bool Bala::fuera()
{
    if (y == 4) return true;
    return false;
    
}

int main()
{
    ocultarCursor();
    pintarLimite();
    NAVE n(37,30,3,3);
    n.pintar();
    n.pintarCorazones();
    list<Asteroide*> A;
    list<Asteroide*>::iterator itA;
    int puntos = 0;
    for (int  i = 0; i < 5; i++)
    {
        A.push_back(new Asteroide(rand() % 75 + 3, rand() % 5 + 4));
    }
    list<Bala*> B;
    list<Bala*>::iterator it;
    bool gameOver = false;
    
    while (!gameOver)
    {    
        
        gotoxy(4, 2); printf(?Puntos: %d?, puntos);
        if(_kbhit())
        {
            char tecla = _getch();
            if (tecla == `a` || tecla == `A`)
            {
                B.push_back(new Bala(n.X() + 2, n.Y() - 1));
                disparo();
            }
        }
        //Disparo
        for (it = B.begin() ; it != B.end() ;)
        {
            (*it)->mover();
            if ((*it)->fuera())
            {
                
                gotoxy((*it)->X(), (*it)->Y()); printf(? ?);
                delete(*it);
                it = B.erase(it);
            }
            else
            {













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal