import 。。。。。。
//MianBan类
public class MianBan extends JPanel
{
BufferedImage BeiJing;
public MianBan (FeijiChuangti kuang)
{
//调用‘制作图片函数’,制作背景图片
BeiJing = ChuLi_TuPian.DiaoWo("/TuPian/java飞机大战——背景1.jpg);
//创建 ‘敌机大本营’‘集合对象’(所有敌机都放在这里)
List dijimen = new ArrayList();
//开始游戏的函数
public void action() {
new Thread() {
public void run(){
//写一个死循环,让游戏一直运行
while(true) {
//调用‘敌机入场’函数
dijiEnter();
//调用"让敌机移动“函数
dijiMove();
//每执行一次入场+移动,线程就休息一会(毫秒数
try{
Thread.sleep(100);
}
catch (InterruptedException c) {
c.printStackTrace();
}
//重绘,刷新
repaint();
}
}
}.start();
}
//‘让敌机移动’函数
protected void dijiMove(){
//因为所有敌机都移动,所以遍历所有的敌机
for(int i=0; i<dijimen.size(); i++){
//获取每一个敌机
Diji diji = dijimen.get(i);
//让敌机向下移动
(Diji.y)+=10;
}
}
//记录方法执行的次数,每执行n次,才入场一个敌机
int s=0;
//敌机入场函数
protected void dijiEnter() {
//记录执行的次数
s ++;
if(s>=20){
//1.创建 ‘敌机对象’
Diji diji = new Diji();
//2.把 ‘敌机对象名’ 放入 “集合对象‘敌机大本营’名”中
dijimen.add(diji)
//计数器b归零
s=0;
}
}
public void paint(Graphics g) {
super.paint(g);
//‘画背景图’
g.drawImage(BeiJing,0,0,512,768,null);
//‘画出所有敌机’
for(int i=0;i< dijimen.size();i++){
//获取/遍历每一个敌机
Diji diji = dijimen.get(i);
g.drawImage(Diji.img,Diji.x,Diji.y,Diji.w,Diji.h,null);
}
}面板类结束
//敌机类
public class Diji
{
public static BufferedImage img;
public static int x;
public static int h;
public static int y;
public static int w;
//构造函数Diji
public Diji()
{
//定义随机数的类,让敌机随机位置/随机图片出现
Random suiji=new Random();
//生成一个随机变量,名为a,用来选取图片[2,4]
int a = suiji.nextInt(3)+2;
img=ChuLi_TuPian.DiaoWo("/TuPian/飞机"+a+".png");
//确定敌机的大小
w=img.getWidth();
h=img.getHeight();
//确定敌机初始位
x=suiji.nextInt(512-w);
//让人感觉时屏幕外掉下来的敌机
y=-h;
}//构造函数Diji结束
}//Diji类结束
//飞机窗体类的主函数
public static void main(String[] args)
FeijiChuangti kuang = new FeijiChuangti();
//显示窗体
kuang.setVisible(true);
//创建面板对象
MianBan boli = new MianBan(kuang);//括号中加kuang:方便在面板中,添加键盘监听器
//调用MianBan类中‘开始游戏函数’,启动游戏
boli.action();
//将面板加入到窗体中
kuang.add(boli);
}
截取出问题部分,把代码其他部分删除了
最后运行成功了,但是
1.敌机掉落的“初始位置”,越来越向下
2.敌机掉落的结束位置,一开始很高就结束了,没到窗体底部,后来结束为止也越来越向下