#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
clock_t T;
textmode(C40);
_setcursortype(_NOCURSOR);
char far*p=(char far*) 0xB8000000L; //Puntero a memoria de pantalla
char E;
char A[][16]={"0000000011110000", //Piezas
"0000001011100000",
"0000010001110000",
"0000010011100000",
"0000001101100000",
"0000110001100000",
"0000011001100000"};
int B[]={12,8,4,0,13,9,5,1,14,10,6,2,15,11,7,3}; //Rotacion
int F[]={0x10,0x20,0x30,0x40,0x50,0x60,0x10}; //Color del fondo
int C[16],D[16],N[16],Y[25]; //Casillas y lineas
int a,b,c,d,n,x,y;
for(y=25;y--;) //Dibujo del marco
for(Y[y]=0,x=13;x--;)
*(p+80*y+2*x+29)=0x70*(y>22||x<2||x>10);
for(n=16;n--;) N[n]=n/4*80+n%4*2; //Pieza en la parrilla
Inicio:
a=rand()%7; //Pieza siguiente
for(n=16;n--;) C[n]=A[a][n]-48; //Copiado de la pieza
c=39; //Casilla de comienzo
T=clock();
for(n=16;n--;) //Plasmar la pieza
if(C[n]) if(*(p+N[n]+c)) return 0; //Si no esta libre finaliza
else *(p+N[n]+c)=F[a];
do{while(kbhit()) getch(); //Vacia teclado
b=E=0;
while(!E)
if(kbhit()) E=getch(); //Lectura de teclado
else if(clock()-T>9) E=80; //Fin de temporizado=Abajo
if(E==27) return 0; //Escape=Fin
d=c+80*(E==80)+2*(E==77)-2*(E==75); //Teclas de direccion
if(d!=c){for(n=16;n--;) //Derecha, izquierda o abajo
if(C[n]) *(p+N[n]+c)=0; //Borrado
for(n=16;n--;)
if(C[n]&&*(p+N[n]+d)) b=1;
if(!b) //Si hay hueco dibujar
for(c=d,n=16;n--;)
if(C[n]) *(p+N[n]+c)=F[a];
}
if(E==72){for(n=16;n--;) //Arriba=Giro a derechas
if(C[n]) *(p+N[n]+c)=0;
for(n=16;n--;)
if((D[n]=C[B[n]])&&*(p+N[n]+c)) b=1;
if(!b)
for(n=16;n--;)
if(C[n]=D[n]) *(p+N[n]+c)=F[a];
}
if(E==80) T=clock();
if(b) //Redibujar
for(n=16;n--;)
if(C[n]) *(p+N[n]+c)=F[a];
}while(E!=80*b); //La pieza esta posada
y=c/80;
n=y+4;
if(n>23) n=23; //Comprobar lineas completas
for(;y<n;y++){d=80*y+33;
for(a=x=0;x++<9;d+=2)
a+=!*(p+d);
if(!a) //Vaciar completas
for(d-=2,Y[y]=x=0;x++<9;d-=2)
*(p+d)=0;
else Y[y]=a<9;
}
for(a=n;--a;) //Las lineas con bloques bajan
if(!Y[y=a])
while(--y)
if(Y[y]){d=80*y+33;
Y[y]=x=0;
Y[a]=y=1;
for(;x++<9;d+=2){*(p+80*a+2*x+31)=*(p+d);
*(p+d)=0;
}
}
goto Inicio;
}
Comentarios sobre la versión: 1.0 (2)
pero serias tan amable de informarme si has trabajado con netbeans, ya que ando haciendo un juego de memoria y pues logre hacerlo tipo pareja, pero que se vena la misma imagen.. ahora bien, quiero modificarlo pero me lo estan pidiendo que sea complementario, osea una imagen y buscar la descripcion de esa misma imagen.. es para la universidad y no se como hacerlo.. me podrias ayduar
u orientar xfavr...
este es el codigo de la logica del juego:
package auxiliar;
import java.util.Random;
/**
*
* @author Web Bacalao
*/
public class LogicaJuego {
public int[] getCardNumbers(){
int[] numbers = new int[16];
int count = 0;
while(count <16){
Random r = new Random();
int na = r.nextInt(8) + 1;
int nvr = 0;
for (int i = 0; i < 16; i++){
if(numbers[i] == na){
nvr++;
}
}
if(nvr <2){
numbers[count] = na;
count++;
}
}
return numbers;
}
}
Gracias.