A continuacion presento el codigo de la clase princiapal del juego gytetrix, es el alma del juego, donde se comunican todas las clases del tetrix y es la mas compleja y una de las mas extensas se utilizan varios tiempos y muchos vectores, disculpen el nombre de las variables son un poco desorganizadas.
package principaltetrix;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JLabel;
import javax.swing.Timer;
public class Principaltetrix {
public static void main(String[] args) {
int a, k,max=6,min=1,fe,u,t,time=10000;
String e;
int [] fiche=new int [63];
int vec[]=new int[63];
int vec2[]=new int[63];
int []mat =new int[63];
int []res =new int[63];
int []vec1 =new int[63];
for(int fr=0;fr<63;fr++){
mat[fr]=0;
vec[fr]=0;
vec1[fr]=0;
}
Fichas mificha=new Fichas();
Aleatorio mialeatorio =new Aleatorio();
Desplazar midesplazar=new Desplazar();
Pantalla mipan =new Pantalla();
Bajar mibajar=new Bajar();
Parar miparar=new Parar ();
Espacio miespacio=new Espacio ();
Rotar mirotar =new Rotar();
Action miaction =new Action();
//mipan.main();
mipan.setVisible(true);
try {
{
Thread.currentThread().sleep(5000);
}
Thread.currentThread().sleep(0);
}
catch (InterruptedException ex) {
Logger.getLogger(Principaltetrix.class.getName()).log(Level.SEVERE, null, ex);
}
int ge=0;
for( u=0;u<30;u++){
if(u<50){
a=mialeatorio.ale();
if(a==1){
int []b =mificha.cuadro();
for(int i=0;i<63;i++){
fiche[i]=b[i];
}
ge=ge+1;
}
if(a==2){
int []b =mificha.line();
for(int i=0;i<63;i++){
fiche[i]=b[i];
}
ge=ge+1;
}
if(a==3){
int []b =mificha.piramide();
for(int i=0;i<63;i++){
fiche[i]=b[i];
}
ge=ge+1;
}
if(a==4){
int []b =mificha.ele();
for(int i=0;i<63;i++){
fiche[i]=b[i];
}
ge=ge+1;
}
mipan.PUNTUACION(ge);
try {
{
mat=miespacio.espace(vec);
for(int i=0;i<63;i++){
if(vec1[i]==1 && mat[i]==1){
vec1[i]=1;
}
if(vec1[i]==0 && mat[i]==1){
vec1[i]=vec1[i]+mat[i];
}
}
u=miparar.seguirficha(vec1);
if(u>0){
u=55;
mipan.aviso();
}
if(u<35){
int seg=0,op=0,yt=0,lo=0,r=0,kf=0,d;
for(int s=0;s<20;s++){
seg=seg+1;
if(seg==1){
d=0;
}
else{
d = mipan.ivan();
}
mipan.color(fiche,a);
if(d==3){
if(op==1){
yt=op+2;
}
if(op==2){
yt=op;
}
if(op==3){
yt=1;
}
if(op==0){
yt=0;
}
op=5;
if(yt==4){
yt=0;
}
if(a==4){
res=mirotar.ele(res,yt);
}
yt=yt+1;
if(a==2){
if(lo==2){
lo=0;
}
res=mirotar.rotarline(res,lo);
lo=lo+1;
}
if(kf==1){
r=kf+2;
}
if(kf==2){
r=kf;
}
if(kf==3){
r=1;
}
if(kf==0){
r=0;
}
kf=5;
if(r==4){
r=0;
}
if(a==3){
res=mirotar.pira(res,r);
r=r+1;
}
if(a==1){
res=mibajar.baja(fiche);
}
}
if(d==4){
if(yt==1){
op=yt+2;
}
if(yt==2){
op=yt;
}
if(yt==3){
op=1;
}
if(yt==0){
op=0;
}
yt=5;
if(op==4){
op=0;
}
if(a==4){
res=mirotar.ele1(res,op);
}
op=op+1;
if(a==2){
if(lo==2){
lo=0;
}
res=mirotar.rotarline(res,lo);
lo=lo+1;
}
if(r==4){
r=0;
}
if(r==1){
kf=r+2;
}
if(r==2){
kf=r;
}
if(r==3){
kf=1;
}
if(r==0){
kf=0;
}
r=5;
if(kf==4){
kf=0;
}
if(a==3){
res=mirotar.pira1(res,kf);
kf=kf+1;
}
if(a==1){
res=mibajar.baja(fiche);
}
}
if(d==2){
res=midesplazar.izquierda(fiche);
}
if(d==1){
res=midesplazar.derecha(fiche);
}
if(d==0){
res=mibajar.baja(fiche);
}
vec2=vec1;
int sa;
int se=miespacio.seguir(fiche,vec1);
if(se==1){
s=50;
}
if(se==0){
fe=miparar.stop(fiche);
if(fe==0){
for(int i=0;i<63;i++){
fiche[i]=res[i];
vec[i]=fiche[i];
mipan.color(fiche,a);
Thread.currentThread().sleep(15);
mipan.vaciar(fiche,0);
}
}
if(fe==1){
for(int i=0;i<63;i++){
vec[i]=fiche[i];
mipan.color(fiche,a);
Thread.currentThread().sleep(1);
mipan.vaciar(fiche,1);
}
}
}
}
}
}
Thread.currentThread().sleep(10);
}
catch (InterruptedException ex) {
Logger.getLogger(Principaltetrix.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}