Snake的绘制线程中设置一个变量和一个队列,绘制线程根据变量不断的移动Snake并绘制。当主线程收到键盘事件时将事件放入到队列中。线程每次移动Snake时先检查队列,如果有值,则先按照值设置变量,然后移动即可。
解决方案 »
- 如何转移svn的工程到另一个Svn中
- Exception in thread "main" java.lang.NullPointerException大神们这是什么问题
- 读取文本文件并回写数据怎么实现?
- Java中的异常处理机制的简单原理和应用。
- 急!(在线等)怎样去掉JTable里的Header?
- 请问new ActionError第二个参数的功能是什么:errors.add("username",new ActionError("username_wrong","ghyghost"));
- 如何创建一个文件,但当文件已存在时返回出错信息?
- JBuilder高手请进!!!
- 高手,如何用JAVA建一个报表
- 这个能实现吗
- 执行java应用程序,抛出noclassderfounderror的错误
- 求求大家了,哪位对tree了如指掌的高手帮帮忙吧,说啥也拖不过去了
public void run() {
// get key event and record down new coordinates
}
int pos_x, pos_y;
}class Main extends JFrame {
Thread[] snakes = new Snake[2];
public... main...
for(int i = 0; i <snakes.length; i++) {
Snake s = new Snake(...);
snakes[i]=s;
s.start();
}
}
public void paint() {
for(int i=0; i < snakes.length; i++) {
Snake thisSnake = snakes[i];
pos_x = thisSnake.getPosX();
...
// draw based on pos_x, pos_y;
}
...
}
...
}
class Snake extends Thread {
int x,y;
public Snake() {
start();
}
public void paint(Graphics g) {
//paint self with x,y here
}
public void run() {
//loop to change x,y, realize moving
}
}class Main extends JFrame {
Snake[] snakes = new Snake[2];
public static void main(String[] args) {
for(int i = 0; i <snakes.length; i++) {
snakes[i]=new Snake();
}
}
public void paint(Graphics g) {
for(int i=0; i < snakes.length; i++) {
Snake snake = snakes[i];
snake.paint(g);
}
...
}
...
}