Código fuente del juego en línea Java
Importar Java.awt.*;
Importar Java.awt.event.*;
Class Game extiende JFrame para implementar KeyListener, Runnable
{
Thread Down10 = nuevo hilo (este);
prueba del lienzo del juego = nuevo lienzo del juego(); > JLabel LabelTetris = new JLabel("Juego de Tetris");
JLabel Score print 1 = new JLabel(" Score ");
JLabel Score print 2 = new JLabel(" 0 " test. puntuación);
Juego()
{
setSize(400, 800);
establecer visible(true) ;
establecer diseño (nuevo diseño de flujo());
prueba agregar clave oyente (este);
etiqueta establecer fondo (color . blanco) ;
label teris.setFont((nueva fuente("Tahoma",1,50)));
ScorePrint1.setFont((nueva fuente("Tahoma",1, 40 )));
imprimir partitura 2. establecer fondo(color . blanco);
JLabel LM = new JLabel(" L . M ");
ScorePrint2.setFont((nueva fuente(" Tahoma ", 1, 40)));
add(label teris
Agregar (prueba
< p); >add(partitura imprimir 1);add(partitura imprimir 2);
lm set foreground(color . blanco);
add(LM ).
validar();
abajo 10. start();
}
Ejecución pública no válida()
{
mientras(verdadero)
{
Intentar
{
Probar. abajo 1();
abajo 10. dormir(700);
}
catch(excepción interrumpida I){ I. printstacktrace();}
}
}
Clave de anulación pública (evento clave K)
{
if(K.getKeyCode ()==KeyEvent.VK_left)
Prueba. left 1();
else if(k . obtener código clave() = = evento clave. VK_UP)
Prueba.
turn();
else if(k . obtener código clave() = = evento clave. VK_right)
Prueba. derecha 1();
else if(k . obtener código clave() = = evento clave. VK_DOWN)
{
Prueba. abajo 1();
if (test.ScoreBool==1)
{ puntuación imprimir 2. settext(" test.
puntuación);}
}
}
clave pública nula liberada (evento clave e){ }
clave pública nula escrita( evento clave e){ }
}
Clase GameCanvas extiende el lienzo
{
int x=5, y = 0;
int GameMap[][]= nuevo int[50][100];
int BlockShape
int BlockWay
int Score= 0;
int puntuación bool = 0;
int over pool = 0;
público final estático int[][][]Bloques = { { { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 1, 0, 0, 0 ,1,0,0,0,1,0,0},
{0,0,0,0,1,1,1,1,0,0,0,0,0, 0, 0, 0},
{0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}},
{{0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1 ,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0},
{0,1,1,0,1, 1,0,0,0,0,0,0,0,0,0,0},
{1,0,0,0,1,1,0,0,0,1 ,0,0,0,0,0,0}},
{{1,1,0,0,0,1,1,0,0,0,0,0,0, 0, 0, 0},
{0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, p>
{1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0},
{0,1 ,0,0,1,1,0,0,1,0,0,0,0,0,0,0}},
{{0,1,0,0,0, 1,0,0,1,1,0,0,0,0,0,0},
{1,0,0,0,1,1,1,0,0,0 ,0,0,0,0,0,0},
{1,1,0,0,1,0,0,0,1,0,0,0,0,0, 0, 0},
{1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
{{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},
{1,1 ,0,0,1,1,0,0,0,0,0,0,0,0,0,0},
{1,1,0,0,1,1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 ,0,0,0,0,0}},
{{1,0,0,0,1,0,0,0,1,1,0,0,0,0, 0, 0},
{1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0},
{0,0,1 ,0,1,1,1,0,0,0,0,0,0,0,0,0}},
{{0,1,0,0,1,1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0
,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0},
{1,1,1,0,0, 1,0,0,0,0,0,0,0,0,0,0},
{0,1,0,0,0,1,1,0,0,1 , 0, 0, 0, 0, 0, 0}}};
GameCanvas()
{
setSize(340, 500); p>
p>
setBackground(color.
negro);
for(int I = 0;ilt25;i)
{
Mapa del juego[0][I]= 2;
p>
GameMap[16][I]= 2;
}
for(int I = 0; i lt16; i )
{
GameMap[I][24]= 2;
}
}
Nuevo bloque vacío público()
{
x = 5; y = 0;
forma del bloque =(int)(matemática. aleatorio()*
);bloque camino =(int)(math . random()* 3);
if(IsOver(x, y)==true)
{ over bool = 1 ;} p>
}
public void Keep(int x, int y, int BlockShape, int BlockWay)
{
int n = 0;
for(int I = 0;i lt4;i)
for(int j = 0;j lt4;j)
{
if(GameMap[x j 1][y I]= = 0)
{
GameMap[x j 1][y I]= Bloques[forma de bloque ][manzana ][n];
}
n;
}
}
Público pintura en blanco (gráfico G)
{
g . set color(color . white
for(int I = 0; i lt16; i )
{
if(Bloques[forma de bloque][camino de bloque][I]= = 1)
G.drawRect((i4 x 1)* 20, (i /4 y)*20, 20, 20);
}
for(int I = 0; i lt30; i)
for(int j = 0; j lt50; j )
if(GameMap[I][j]= = 1 | | GameMap[I][j]= = 2)
G.fillRect (i*20, j*20, 20, 20);
}
Giro de vacío público()
{
if (es factible(x,y,BlockShape,BlockWay)==1)
{
bloque camino =(bloque camino 1) 4;
repintar( );
}
}
Vacío público Izquierda1()
{
si (es factible( x-1, y, BlockShape, BlockWay)==1)
{
x-= 1;
repintar();
}
}
Derecho de nulidad pública 1()
{
si(es factible(x 1 , y, BlockShape ,BlockWay)==1)
{
x =
1;
repintar();
}
}
Vacío público Abajo1()
{
si(es factible(x,y 1,BlockShape,BlockWay)==1)
{
y = 1;
repintar();
}
si no (es factible(x, y 1, BlockShape, BlockWay)==0)
{
Keep(x, y, BlockShape, block way);
deline();
if(OverBool==0)
nuevos bloques( );
}
}
público int es factible (int x, int y, int BlockShape, int BlockWay)
{
for(int I = 0;i lt4;i)
{
for(int j = 0;j lt4;j)
{
if(Bloques[forma de bloque][camino de bloque][I * 4 j]== 1 amp; amp mapa de juego[x j 1][y i]==1) p >
Devuelve 0;
else if(Bloques[forma del bloque][camino del bloque][I * 4 j]= = 1 amp; amp mapa del juego[x j 1][y i]== 2 )
Devuelve 0;
}
}
Devuelve 1;
}
Public void Deline()
{
int bloques suma = 0
for(int I = 0; i lt25; i ) p >
{
for(int j = 0; j lt16; j )
{
if (GameMap[j][i]= = 1)
{
suma de bloques;
if (BlocksSum==15)
{
para (int p = I; p gt0; p -)
{
for(int q = 0; q lt16; q )
{ p >
Mapa del juego[q][p]=Mapa del juego[q][p-1];
}
}
Puntuación= 10 ;
puntuación bool = 1
}
}
}
suma de bloques = 0; /p>
}
}
IsOver booleano público (int x, int y)
{
if( es factible (x, y, BlockShape, BlockWay)==0)
Devuelve verdadero
Otros
Devuelve falso
}< / p>
}
Clase abierta Tetris
{
Public static void main(String[] args)
{
Juego test2 = nuevo Juego();<
/p>
}
}
Lo usé para jugar con un nuevo archivo JAVA llamado Tetris. Antes era demasiado vago para modificar la interfaz.