// Tetsris3D.java, V1.0 // Sunday, Oct. 29, 2000, by Yamin Li, yamin@k.hosei.ac.jp // Free to use, modify, and distribute. import java.awt.*; import java.awt.event.*; import java.applet.Applet; import javax.swing.*; public class Tetris3D extends Applet implements KeyListener, Runnable { private Play3D play; private List message; private String overMsg="Game over. Press 'S' to start again"; private String startMsg="Click here to receive keyboard action"; private Thread mytetris=null; private boolean selectMsg=true; public void init(){ play=new Play3D(); message=new List(1); message.setBackground(Color.lightGray); message.setForeground(Color.blue); message.setFont(new Font("Sansserif", Font.BOLD,14)); message.add(startMsg); message.addKeyListener(this); setLayout(new BorderLayout()); add(play, BorderLayout.NORTH); add(message, BorderLayout.SOUTH); play.init(); message.select(0); message.requestFocus(); } public void paint(Graphics g){ message.requestFocus(); } public void start(){ mytetris=new Thread(this); mytetris.start(); } public void stop(){ mytetris=null; } public void run(){ Thread me=Thread.currentThread(); while(mytetris==me){ try { Thread.currentThread().sleep(play.getSleepTime()); } catch(InterruptedException e){ //System.err.println(e.toString()); } if (play.getOver()){ message.replaceItem(overMsg, 0); if (selectMsg) message.deselect(0); else message.select(0); selectMsg=!selectMsg; } else { play.game(0); } } } public void keyPressed(KeyEvent e){ int keycode=e.getKeyCode(); if (keycode==0x53){ // 'S' message.replaceItem(startMsg, 0); } play.game(keycode); } public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} }