lunes, 17 de diciembre de 2012

[ProjectMX] Juego en C++ version 0.3 (100 %libre)

Aquí el código del juego. Para más información clic aqui.

#include <stdlib.h>
#include "miniwin.h"
using namespace miniwin;

const int PX = 20, CAMPOX=15, CAMPOY=20;
bool roca_existe[6];
int rx[6],ry[6];
int vida=10, puntos=0, nivel=100;

void cuadrado(int x, int y) {
    rectangulo_lleno(1+x * PX, 1+y * PX, x * PX + PX, y * PX + PX);
}

void nave_pintar(int x, int y) {
    color(VERDE);
    cuadrado(x,y-1); cuadrado(x-1,y);
    cuadrado(x,y);   cuadrado(x+1,y);
}

int nave_control(int x, int y, int key) {
    if (key==IZQUIERDA && x > 1)
        x--;
    if (key==DERECHA && x < CAMPOX-2)
        x++;
    nave_pintar(x,y);
    return (x);
}

int key_det(int key) {
    if (key==NINGUNA)
        key=ARRIBA;
    return (key);
}

void roca_pintar(int x, int y) {
    color(CYAN);
    cuadrado(x,y);
}

void  roca_control() {
    for (int i=0; i < 6; i++) {
        if (roca_existe[i]==0) {
            rx[i]=rand()%CAMPOX-1;
            ry[i]=(rand()%20)*-1;
            roca_existe[i]=1;
        }
        else if (roca_existe[i]==1 && ry[i] < CAMPOY) {
            ry[i]++;
            roca_pintar(rx[i],ry[i]);
        }
        else {
            roca_existe[i]=0;
            ry[i]=0;
        }
    }
}

void game_over() {
    borra();
    vcierra();
}

void vida_control(){
    color(ROJO);
    for (int i = 0; i <= vida; i++)
        cuadrado(i,0);
    if (vida<=0)
        game_over();
}

void puntos_control() {
    color(AMARILLO);
    for (int i = 0; i <= puntos/100; i++)
        cuadrado(i,1);
}

void colision_detectar(int nx, int ny) {
    for (int i=0; i < 6; i++) {
        if (rx[i]>nx-2 && rx[i]<nx+2 && ry[i]>ny-2 && ry[i]<ny+2)
            vida--;
    }
}

int main() {
    int key=tecla();
    int nx=CAMPOX/2, ny= CAMPOY-1;
    vredimensiona(CAMPOX * PX, CAMPOY * PX);
    while(key!=ESCAPE) {
        puntos++;
        espera(nivel-(puntos/35));
        key=tecla();
        key=key_det(key);
        if (key!=NINGUNA) {
            borra();
            puntos_control();
            colision_detectar(nx,ny);
            vida_control();
            nx=nave_control(nx,ny,key);
            roca_control();
            refresca();
        }
    }
    vcierra();
    return 0;
}

No hay comentarios:

Publicar un comentario