Académique Documents
Professionnel Documents
Culture Documents
#include <ctime>
#include <sstream>
#include <string>
#include "miniwin.h"
struct Pieza{
Coord orig;
Coord perif[3];
int color;
};
if (n != 0){
ret.y += perif[n-1].y;
return ret;
rectangulo_lleno(20 + 1 + x * TAM,
20 + 1 + y * TAM,
20 + x * TAM + TAM,
20 + y * TAM + TAM);
color(P.color);
Coord c = P.posicion(i);
cuadrado(c.x, c.y);
return ret;
}
return ret;
P.perif[i] = rota_derecha(P.perif[i]);
P.perif[i] = rota_izquierda(P.perif[i]);
}
void tablero_pinta(const Tablero& T){
cuadrado(i,j);
Coord c = P.posicion(i);
T[c.x][c.y] = P.color;
Coord c = P.posicion(i);
return true;
return true;
}
if(T[c.x][c.y]!=NEGRO){
return true;
return false;
};
P.orig.x = 39;
P.orig.y = 2;
P.color = 1 + rand() % 3;
//pieza al azar
int r = rand() % 7;
return true;
T[i][j] = T[i][j-1];
//vaciar
T[i][0] = NEGRO;
if (tablero_fila_llena(T, fila)) {
tablero_colapsa(T, fila);
cont++;
}else {
fila--;
return cont;
stringstream sout;
sout <<puntos;
return sout.str();
borra();
tablero_pinta(T);
color_rgb(128,128,128);
linea(20,20,20, 20 + alto);
color_rgb(168,168,168);
rectangulo_lleno(15,30,50,520);//primer pantalla
color_rgb(168,168,168);
rectangulo_lleno(320,10,350,520);//segunda pantalla
color_rgb(168,168,168);
rectangulo_lleno(620,10,650,520);//tercer pantalla
color_rgb(168,168,168);
rectangulo_lleno(920,10,900,520);
//----
//linea(90,20,90,20 + alto);
linea(20, 20 + alto,
20 +ancho,
20 + alto);
linea(20 +ancho,
20 + alto,
20 +ancho, 20);
color(CYAN);
pinta_pieza(p);
pinta_pieza(sig);
refresca();
}
50, 100, 150, 200, 250, 300, 350, 400, 450, 500
};
};
void game_over() {
color(CYAN);
refresca();
espera(1000);
vcierra();
int main(){
srand(time(0));//color al azar
Tablero T;
tablero_vacia(T);
Pieza c, sig;
pieza_nueva(c);
pieza_nueva(sig);
c.orig.x = 16;
int t = tecla();
while (t != ESCAPE){
Pieza copia = c;
tic = 0;
t= ABAJO;
if (t == int ('Z')){
if(nivel <=8)
nivel++;
int x = c.orig.x;
int y = c.orig.y;
if(t == ABAJO){
c.orig.y++;
} else if (t == ARRIBA){
rota_derecha(c);
//}else if (t == ESPACIO ){
//rota_izquierda(c);
} else if (t == DERECHA){
c.orig.x++;
} else if (t == IZQUIERDA){
c.orig.x--;
//colision
if (tablero_colision(T,c)){
c = copia;
if (t == ABAJO){
tablero_incrusta_pieza(T, c);
nivel++;
c = sig;
pieza_nueva(sig);
c.orig.x = 16;
if (tablero_colision(T, c)){
game_over();
return 0;
}
// volver a pintar
if (t != NINGUNA){
espera(30);
tic++;
t = tecla();
vcierra();
return 0;