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;
}