• Авторизация


Вот то чем я занимаюсь! Моё хоби!Програмирование! 06-11-2004 22:29 к комментариям - к полной версии - понравилось!


Пример тетриса на Java .


import java.applet.Applet;
import java.awt.*;
import java.util.Random;

class egg extends Thread {

Label labegg;
int s;

public egg(Label lbl) {
labegg = new Label("Trex Tetris(Makariev)");
labegg = lbl;
s = 10;
}

public void Timer_Timer() {
if(s == 250)
s = 0;
labegg.reshape(25, s, 125, 25);
labegg.setForeground(new Color(185, s, s - 5));
}

public void run() {
while(true) {
try {
Thread.sleep(1000L);
}
catch(InterruptedException e) { }
s = s + 10;
Timer_Timer();
}
}
}




class Timer extends Thread {

int upper;
int fig[][];
int fig2[][];
int one;
int two;
int four;
int three;
int figura;
boolean figurastop;
boolean figuramove;
int steps;
int pr;
int isfigura[];
int LEFTWALL[];
int RIGHTWALL[];
int FULLINE;
int lin;
int balls;
int dellines;
boolean STOPTIMER;
static int INTERVAL;
boolean firstvisible;
Button Command1[];
int Interval;
int number;
boolean Timer_Enable;
Label lbl;

public Timer() {
fig = new int[6][6];
fig2 = new int[6][6];
isfigura = new int[299];
LEFTWALL = new int[299];
RIGHTWALL = new int[299];
Command1 = new Button[200];
lbl = new Label();
}

public Timer(Button but[], int t) {
fig = new int[6][6];
fig2 = new int[6][6];
isfigura = new int[299];
LEFTWALL = new int[299];
RIGHTWALL = new int[299];
Command1 = new Button[200];
lbl = new Label();
for(int i = 0; i <= 5; i++) {
for(int j = 0; j <= 5; j++) {
fig[i][j] = 0;
fig2[i][j] = 0;
}

}

firstvisible = true;
STOPTIMER = false;
upper = 3;
figurastop = true;
FULLINE = 0;
for(int I = 9; I <= 199; I += 10)
RIGHTWALL[I] = 1;

for(int I = 0; I <= 190; I += 10)
LEFTWALL[I] = 1;

number = -1;
Interval = t;
System.arraycopy(but, 0, Command1, 0, but.length);
}

public void initin(Button but[], int t) {
for(int i = 0; i <= 5; i++) {
for(int j = 0; j <= 5; j++) {
fig[i][j] = 0;
fig2[i][j] = 0;
}

}

firstvisible = true;
STOPTIMER = false;
upper = 3;
figurastop = true;
FULLINE = 0;
for(int I = 9; I <= 199; I += 10)
RIGHTWALL[I] = 1;

for(int I = 0; I <= 190; I += 10)
LEFTWALL[I] = 1;

number = -1;
Interval = t;
System.arraycopy(but, 0, Command1, 0, but.length);
}

public boolean SHIFTRIGHT() {
if(!Timer_Enable)
return true;
int c = 0;
int d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if((fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four) && RIGHTWALL[j] == 1)
return true;
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if((fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four) && isfigura[j + 1] == 1)
return true;
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].hide();
if(fig[c][d] == two)
Command1[j].hide();
if(fig[c][d] == three)
Command1[j].hide();
if(fig[c][d] == four)
Command1[j].hide();
}

}

upper = upper + 1;
c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].show();
if(fig[c][d] == two)
Command1[j].show();
if(fig[c][d] == three)
Command1[j].show();
if(fig[c][d] == four)
Command1[j].show();
}

}

return true;
}

public void TimerEnable() {
Timer_Enable = true;
}

public boolean CHANGEFIGURA() {
for(int I = upper; I <= (upper + steps * 10) - 10; I += 10) {
for(int j = I; j <= (I + steps) - 1; j++)
if(isfigura[j] == 1)
return true;

}

for(int I = upper; I <= upper + steps * 10; I += 10) {
for(int j = I; j <= (I + steps) - 2; j++)
if(RIGHTWALL[j] == 1)
return true;

}

for(int I = 1; I <= steps; I++) {
int k = steps;
for(int j = 1; j <= steps; j++) {
fig2[I][j] = fig[k][I];
k--;
}

}

int c = 0;
int d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].hide();
if(fig[c][d] == two)
Command1[j].hide();
if(fig[c][d] == three)
Command1[j].hide();
if(fig[c][d] == four)
Command1[j].hide();
}

}

for(int I = 1; I <= steps; I++) {
for(int j = 1; j <= steps; j++)
fig[I][j] = fig2[I][j];

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].show();
if(fig[c][d] == two)
Command1[j].show();
if(fig[c][d] == three)
Command1[j].show();
if(fig[c][d] == four)
Command1[j].show();
}

}

return true;
}

public boolean DELETELINE(int NUMLINE) {
lin = lin + 1;
balls = balls + 5;
int line = NUMLINE * 10 - 10;
for(int I = line; I <= line + 9; I++)
Command1[I].hide();

for(int I = line; I >= 0; I--)
if(Command1[I].isVisible()) {
Command1[I].hide();
Command1[I + 10].show();
}

return true;
}

public boolean movefigura() {
int d;
int c = d = 0;
if(firstvisible) {
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].show();
if(fig[c][d] == two)
Command1[j].show();
if(fig[c][d] == three)
Command1[j].show();
if(fig[c][d] == four)
Command1[j].show();
}

}

firstvisible = false;
return true;
}
for(int I = 0; I <= 199; I++) {
isfigura[I] = 1;
if(!Command1[I].isVisible())
isfigura[I] = 0;
}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four)
isfigura[j] = 0;
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if((fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four) && isfigura[j + 10] == 1) {
figurastop = true;
createfigura();
return true;
}
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four) {
for(int h = 190; h <= 199; h++)
if(j == h) {
figurastop = true;
createfigura();
return true;
}

}
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].hide();
if(fig[c][d] == two)
Command1[j].hide();
if(fig[c][d] == three)
Command1[j].hide();
if(fig[c][d] == four)
Command1[j].hide();
}

}

if(pr == 0)
upper = upper + 10;
c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].show();
if(fig[c][d] == two)
Command1[j].show();
if(fig[c][d] == three)
Command1[j].show();
if(fig[c][d] == four)
Command1[j].show();
}

}

return true;
}

public void createfigura() {
Random rand = new Random();
firstvisible = true;
number = -1;
FULL();
ALLFULLPOOL();
for(int I = 0; I <= 5; I++) {
for(int j = 0; j <= 5; j++)
fig[I][j] = 0;

}

pr = 0;
figura = Math.abs(rand.nextInt() % 7) + 1;
upper = 3;
switch(figura) {
case 1: // '\001'
one = 1;
two = 2;
three = 5;
four = 6;
steps = 3;
break;

case 2: // '\002'
one = 5;
two = 2;
three = 3;
four = 4;
steps = 3;
break;

case 3: // '\003'
one = 1;
two = 2;
three = 4;
four = 7;
steps = 3;
break;

case 4: // '\004'
one = 6;
two = 2;
three = 3;
four = 9;
steps = 3;
break;

case 5: // '\005'
one = 4;
two = 2;
three = 5;
four = 6;
steps = 3;
break;

case 6: // '\006'
one = 1;
two = 2;
three = 3;
four = 4;
steps = 2;
break;

case 7: // '\007'
one = 5;
two = 6;
three = 7;
four = 8;
steps = 4;
break;
}
int a = 0;
for(int I = 1; I <= steps; I++) {
for(int j = 1; j <= steps; j++) {
a++;
fig[I][j] = a;
}

}

}

public void setInterval(int i) {
}

public boolean FULL() {
int M = -1;
FULLINE = 0;
for(int I = 1; I <= 20; I++) {
FULLINE = 0;
for(int j = 0; j <= 9; j++) {
M++;
if(Command1[M].isVisible())
FULLINE = FULLINE + 1;
if(FULLINE == 10) {
DELETELINE(I);
FULLINE = 0;
}
}

}

return true;
}

public void ALLFULLPOOL() {
int M = -1;
int ACTBUT = 0;
for(int I = 1; I <= 20; I++) {
for(int j = 0; j <= 9; j++) {
M++;
if(!Command1[M].isVisible())
continue;
ACTBUT++;
break;
}

}

if(ACTBUT == 20) {
TimerDisable();
for(int I = 0; I <= 199; I++)
Command1[I].hide();

firstvisible = true;
Timer_Enable = false;
Interval = 500;
lin = 0;
balls = 0;
}
}

public void TimerDisable() {
Timer_Enable = false;
}

public void Timer_Timer() {
if(figurastop) {
createfigura();
figurastop = false;
figuramove = true;
}
if(figuramove) {
movefigura();
figurastop = false;
}
}

public void run() {
while(true) {
do
try {
Thread.sleep(Interval);
}
catch(InterruptedException e) { }
while(!Timer_Enable);
number = number + 1;
Timer_Timer();
}
}

public boolean SHIFLEFT() {
if(!Timer_Enable)
return true;
int c = 0;
int d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if((fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four) && LEFTWALL[j] == 1)
return true;
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if((fig[c][d] == one || fig[c][d] == two || fig[c][d] == three || fig[c][d] == four) && isfigura[j - 1] == 1)
return true;
}

}

c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].hide();
if(fig[c][d] == two)
Command1[j].hide();
if(fig[c][d] == three)
Command1[j].hide();
if(fig[c][d] == four)
Command1[j].hide();
}

}

upper = upper - 1;
c = 0;
d = 0;
for(int I = upper; I <= upper + steps * 10; I += 10) {
c++;
d = 0;
for(int j = I; j <= I + steps; j++) {
d++;
if(fig[c][d] == one)
Command1[j].show();
if(fig[c][d] == two)
Command1[j].show();
if(fig[c][d] == three)
Command1[j].show();
if(fig[c][d] == four)
Command1[j].show();
}

}

return true;
}
}


public class Applet1 extends Applet {

egg eg;
Timer timer1;
Button Command1[];
Button CmdNew;
Button CmdHIDE;
Button CmdClear;
Label lbl;
int oldInterval;
int INTERVAL;

public Applet1() {
Command1 = new Button[200];
CmdNew = new Button("Play");
CmdHIDE = new Button("Stop");
CmdClear = new Button("New");
lbl = new Label();
}

public boolean keyUp(Event evt, int key) {
if(key == 1005) {
timer1.Interval = oldInterval;
return true;
} else {
return true;
}
}

public void start() {
setLayout(null);
add(CmdNew);
add(CmdHIDE);
add(CmdClear);
add(lbl);
lbl.reshape(25, 0, 150, 25);
CmdClear.setBackground(new Color(255, 0, 0));
CmdHIDE.setBackground(new Color(0, 185, 0));
CmdNew.setBackground(new Color(0, 105, 210));
CmdClear.reshape(0, 300, 50, 25);
CmdNew.reshape(50, 300, 50, 25);
CmdHIDE.reshape(100, 300, 50, 25);
timer1 = new Timer(Command1, 400);
eg = new egg(lbl);
timer1.start();
}

public boolean action(Event evt, Object arg) {
if(arg.equals(CmdNew.getLabel())) {
timer1.SHIFLEFT();
timer1.STOPTIMER = false;
timer1.TimerEnable();
return true;
}
if(arg.equals(CmdHIDE.getLabel())) {
timer1.STOPTIMER = true;
timer1.TimerDisable();
return true;
}
if(arg.equals(CmdClear.getLabel())) {
for(int i = 0; i <= 199; i++)
Command1[i].hide();

timer1.TimerDisable();
timer1.initin(Command1, 400);
return true;
}
if(arg.equals(Command1[199].getLabel())) {
lbl.show();
lbl.setText("Trex tetris(Makariev)");
eg.start();
return true;
} else {
return false;
}
}

public void init() {
INTERVAL = 500;
oldInterval = 500;
int m = -1;
int hb = 15;
int wb = 15;
setBackground(new Color(3, 151, 188));
setLayout(null);
for(int i = 0; i <= 19; i++) {
for(int j = 0; j <= 9; j++) {
m++;
Command1[m] = new Button("");
Command1[m].reshape(j * 15, i * 15, hb, wb);
Command1[m].setBackground(new Color(255, 255, 0));
add(Command1[m]);
Command1[m].hide();
}

}

}

public boolean keyDown(Event evt, int key) {
if(key == Event.DOWN)
{
if(timer1.STOPTIMER)
{
return true;
}
else
{
timer1.Interval = 50;
return true;
}
}
if(key == Event.LEFT) {
timer1.SHIFLEFT();
return true;
}
if(key == Event.RIGHT) {
timer1.SHIFTRIGHT();
return true;
}
if(key == Event.UP) {
timer1.CHANGEFIGURA();
return true;
}
else {
return false;
}

}
}
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Вот то чем я занимаюсь! Моё хоби!Програмирование! | dtrex - Покемоны снова дома :) | Лента друзей dtrex / Полная версия Добавить в друзья Страницы: раньше»