该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class Yark extends Frame {
final static int ROWS = 50;
final static int COLS = 50;
final static int BLOCK_SIZE = 10;
Snake s ;
private Image offScreamImage = null;
public Yark () {
super("Snake");
this.setBounds(200, 200, COLS*BLOCK_SIZE, ROWS*BLOCK_SIZE);
this.setVisible(true);
this.addKeyListener(new keyMonitor());
this.setBackground(Color.gray);
s = new Snake();
new Thread(new ThreadPaint()).start();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.DARK_GRAY);
for(int i=1; i<=ROWS; i++) {
g.drawLine(0, i*BLOCK_SIZE, COLS*BLOCK_SIZE, i*BLOCK_SIZE);
}
for(int i=1; i<=COLS; i++) {
g.drawLine(i*BLOCK_SIZE, 0, i*BLOCK_SIZE, ROWS*BLOCK_SIZE);
}
s.draw(g);
g.setColor(c);
}
@Override
public void update(Graphics g) {
if(offScreamImage == null) {
offScreamImage = this.createImage(COLS*BLOCK_SIZE, ROWS*BLOCK_SIZE);
}
Graphics offScream = offScreamImage.getGraphics();
paint(offScream);
g.drawImage(offScreamImage,0,0, null);
}
public class ThreadPaint implements Runnable {
@Override
public void run() {
while (true) {
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class keyMonitor extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
s.key(e);
}
}
public static void main(String arg[]) {
new Yark();
}
}