交警遭拖行碾压殉职:JAVA小问题!请哪位高手加点代码改成可以撞墙就死!而且随机小方块不会在窗体外显示!

来源:百度文库 编辑:中科新闻网 时间:2024/04/25 00:02:13
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;

class Snake extends JFrame{
public static void main(String args[]){
new Snake();
}
Snake(){
bb p = new bb();
this.getContentPane().add(p);
p.setBackground(Color.white);
this.setBackground(Color.white);
this.setSize(400,400);
this.setVisible(true);
this.addKeyListener(p);
}

}
class bb extends JPanel implements Runnable, KeyListener{
Point q = new Point();
Point body[] = new Point[10];
int nums = 4;
int director;

bb(){
for (int i = 0; i<10; i++){
body[i] = new Point(0,0);
}
//this.addKeyListener(this);

q.x = (int)(Math.random()*40);
q.y = (int)(Math.random()*40);

Thread t = new Thread(this);
t.start();
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(q.x*10, q.y*10, 9, 9);
for (int i = 0; i<nums; i++){
g.fillRect(body[i].x*10, body[i].y*10, 9, 9);
}
}

public void keyPressed(KeyEvent e){

}

public void keyReleased(KeyEvent e){
int i = e.getKeyCode();
if(i == KeyEvent.VK_RIGHT)
director = 0;
else if(i == KeyEvent.VK_LEFT)
director = 1;
else if(i == KeyEvent.VK_DOWN)
director = 2;
else if(i == KeyEvent.VK_UP)
director = 3;
}
public void keyTyped(KeyEvent e){

}

public void run(){
while(true){
for (int i = nums - 1; i>0; i--){
body[i].x = body[i - 1].x;
body[i].y = body[i - 1].y;
}
switch(director){
case 0:
body[0].x++;
break;
case 1:
body[0].x--;
break;
case 2:
body[0].y++;
break;
case 3:
body[0].y--;
break;
}
if(body[0].x == q.x && body[0].y == q.y){
nums++;

q.x = (int)(Math.random()*40);
q.y = (int)(Math.random()*40);
}
repaint();
try{
Thread.sleep(100);
}catch(Exception e){
}
}
}
}

import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;

class Snake extends JFrame{
public static void main(String args[]){
new Snake();
}
Snake(){
bb p = new bb();
this.getContentPane().add(p);
p.setBackground(Color.white);
this.setBackground(Color.white);
//修改的
this.setSize(410,430);
//
this.setVisible(true);
this.addKeyListener(p);
}

}
class bb extends JPanel implements Runnable, KeyListener{
Point q = new Point();
Point body[] = new Point[10];
int nums = 4;
int director;

bb(){
for (int i = 0; i<10; i++){
body[i] = new Point(0,0); //
}
//this.addKeyListener(this);

q.x = (int)(Math.random()*40);
q.y = (int)(Math.random()*40);

Thread t = new Thread(this);
t.start();
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(q.x*10, q.y*10, 9, 9);
for (int i = 0; i<nums; i++){
g.fillRect(body[i].x*10, body[i].y*10, 9, 9);
}
}

public void keyPressed(KeyEvent e){

}

public void keyReleased(KeyEvent e){
int i = e.getKeyCode();
if(i == KeyEvent.VK_RIGHT)
director = 0;
else if(i == KeyEvent.VK_LEFT)
director = 1;
else if(i == KeyEvent.VK_DOWN)
director = 2;
else if(i == KeyEvent.VK_UP)
director = 3;
}
public void keyTyped(KeyEvent e){

}

public void run(){
while(true){
for (int i = nums - 1; i>0; i--){
body[i].x = body[i - 1].x;
body[i].y = body[i - 1].y;
}
switch(director){
case 0:
body[0].x++;
break;
case 1:
body[0].x--;
break;
case 2:
body[0].y++;
break;
case 3:
body[0].y--;
break;
}
if(body[0].x == q.x && body[0].y == q.y){
nums++;

q.x = (int)(Math.random()*40);
q.y = (int)(Math.random()*40);
}

repaint();
//添加的
if(body[0].x<0||body[0].x>=40||body[0].y<0||body[0].y>=40)
{
System.out.println("GameOver!");
return;
}
//<---

try{
Thread.sleep(100);
}catch(Exception e){
}
}
}
}