解决方案 »
- 用java怎么判断网上mp3资源是否有效?
- Collections.sort()与comparator 排序问题
- JAVA 中的代理模式是什么意思,与继承之间的区别是什么呢?
- 关于ObjectInputStream的问题
- 如何把jsp中的pageContext传到javaBean中
- 高分求助!关于jdbtable的一系列问题,回答每个问题都有分相送!如果此贴分数不够,可以到其它贴子上领取。
- 替换字符串
- 我是新手,请多指教!
- 诡异的数组越界,大家帮我看一下吧,一定给分!!!
- 用javaApplet的URL,BufferRead等打开服务器上的文件说无权访问主机名称,但在DOS下可以读出该文件?
- 做JAVA图形界面遇到了问题,求救!!
- 关于RandomAccessFile
像坦克大战其中的一个类
建议你 debug
package com.why;import java.awt.*;
import java.awt.event.*;
import java.util.Random;
/**
*
* shit类,包括制造内部类
*
*/public class Shit{
EatSFrame esfe;
public static final int SPEED = 5;//shit移动速度private static Random r = new Random();//随机数,shit掉下坐标随机
private static int i = 0;
int x, y;
private boolean live = true;//shit存活控制变量
private static Toolkit tk = Toolkit.getDefaultToolkit();
//private static Image shitsImages =
//tk.getImage(Explode.class.getClassLoader().getResource("images/shit.gif"));
private static Image[] shitsImages = {
tk.getImage(Shit.class.getClassLoader().getResource("images/fruit_1.gif")),
tk.getImage(Shit.class.getClassLoader().getResource("images/fruit_2.gif")),
tk.getImage(Shit.class.getClassLoader().getResource("images/fruit_3.gif")),
tk.getImage(Shit.class.getClassLoader().getResource("images/fruit_4.gif")),
tk.getImage(Shit.class.getClassLoader().getResource("images/fruit_5.gif")),
tk.getImage(Shit.class.getClassLoader().getResource("images/fruit_6.gif"))
};//构造方法
public Shit(EatSFrame esfe){ this.x = r.nextInt(EatSFrame.GAMEWIDTH-shitsImages[getI()].getWidth(null));//随机横坐标
this.y = 30;
this.esfe= esfe;Shit.setI(r.nextInt(shitsImages.length) );}
public void draw(Graphics g) {
//判断不存活则从LIST中删除,并不画
if(!live) {
esfe.shits.remove(this);
return;
}g.drawImage(shitsImages[i], x, y, null);
move();
}
//向下不断移动
private void move() {
y += SPEED;
//出界就不存活,不画
if( y > EatSFrame.GAMEHEIGHT - shitsImages[i].getHeight(null)) {
live = false;
}
}
//得到边界,做碰撞判定
public Rectangle getRect() {
return new Rectangle(x, y,shitsImages[i].getWidth(null), shitsImages[i].getHeight(null));
}
//碰撞判定方法
public boolean hitP(EatPerson eatp) {
if(this.getRect().intersects(eatp.getRect())&&this.live) {
this.live = false;//碰撞shit就不存活了
Explode e = new Explode(x, y, esfe);//爆炸圈圈
esfe.explodes.add(e);//添加进LIST多个圈圈
EatSFrame.setGAMESCORE(esfe.getGAMESCORE() + 1);//得分
return true;
}
return false;
}
//shit制造
public Shit make() {
Shit shit = new Shit(esfe);
esfe.shits.add(shit);
return shit;
}
//制造工厂,一个线程
private class ShitFactory implements Runnable{public void run() {
while(true){
make();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}}}
//按键监听,F2开始线程
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();switch(key) {
case KeyEvent.VK_F2 :
new Thread(new ShitFactory()).start();
break;
}
}
public static int getI() {
return i;
}
public static void setI(int i) {
Shit.i = i;
}}
主类里面这样写的
for(int i=0; i<shits.size(); i++) {
Shit st = shits.get(i);
st.hitP(ep);
st.draw(g);
}