会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132359个问题

game.zip

老师,请您帮我看一下这个代码,我的飞机它不给面子,不动,谢谢

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3451楼

  1. 代码部分没有报错,运行结果显示错误。

  2. cuo.gif

  3. 所对应GameUtil代码

  4. package cn.lss.Game;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.URL;
    import javax.imageio.ImageIO;
    
    public class GameUtil {
    	//工具类最好将构造器私有化
    	private GameUtil() {
    		
    	}
    	public static Image getImage(String path) {
    		BufferedImage bi = null;
    		try {
    			URL u = GameUtil.class.getClassLoader().getResource(path);
    			bi = ImageIO.read(u);
    		}catch (IOException e) {
    			e.printStackTrace();
    		}
    		return bi;
    	}
    
    }
  5. 现在执行代码

  6. package cn.lss.Game;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    /**
     * 飞机游戏的主窗口
     * @author 李帅帅
     *
     */
    public class MyGameFrame extends JFrame{
    	Image plane = GameUtil.getImage("images/plane.png");
    	Image bg = GameUtil.getImage("images/bg.pg");
    	@Override
    	public void paint(Graphics g) {
    		g.drawImage(bg, 0,0, null);
    		g.drawImage(plane, 200,200, null);
    	}
    	/**
    	 * 初始化窗口
    	 */
    	public void launchFrame() {
    		this.setTitle("尚学堂学员_李帅帅作品");
    		this.setVisible(true);
    		this.setSize(400,400);
    		this.setLocation(300, 300);
    	this.addWindowListener(new WindowAdapter() {
    		@Override
    		public void windowClosing(WindowEvent e) {
    			System.exit(0);
    		}
    	});
    			}
    	public static void main(String[]args) {
    		MyGameFrame f = new MyGameFrame();
    		f.launchFrame();
    	}
    
    }

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3452楼

  1. 代码

  2. package cn.lss.Game;
    
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    /**
     * 飞机游戏的主窗口
     * @author 李帅帅
     *
     */
    public class MyGameFrame extends JFrame{
    	@Override
    	public void paint(Graphics g) {
    		// TODO Auto-generated method stub
    		super.paint(g);
    	}
    	/**
    	 * 初始化窗口
    	 */
    	public void launchFrame() {
    		this.setTitle("尚学堂学员_李帅帅作品");
    		this.setVisible(true);
    		this.setSize(400,400);
    		this.setLocation(300, 300);
    	this.addWindowListener(new WindowAdapter() {
    		@Override
    		public void windowClosing(WindowEvent e) {
    			System.exit(0);
    		}
    	});
    			}
    	public static void main(String[]args) {
    		MyGameFrame f = new MyGameFrame();
    		f.launchFrame();
    	}
    
    }
  3. 运行无问题1.gif

  4. 代码

  5. package cn.lss.Game;
    
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    /**
     * 飞机游戏的主窗口
     * @author 李帅帅
     *
     */
    public class MyGameFrame extends JFrame{
    	@Override
    	public void paint(Graphics g) {
    		g.drawRect(100, 100, 200, 200);
    	}
    	/**
    	 * 初始化窗口
    	 */
    	public void launchFrame() {
    		this.setTitle("尚学堂学员_李帅帅作品");
    		this.setVisible(true);
    		this.setSize(400,400);
    		this.setLocation(300, 300);
    	this.addWindowListener(new WindowAdapter() {
    		@Override
    		public void windowClosing(WindowEvent e) {
    			System.exit(0);
    		}
    	});
    			}
    	public static void main(String[]args) {
    		MyGameFrame f = new MyGameFrame();
    		f.launchFrame();
    	}
    
    }
  6. 在窗口中画东西,显示黑屏,是电脑配置原因吗?2.gif


JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3454楼

  1. PlaneGame0.1中可以调出正常窗口。

  2. package cn.lss.Game;
    
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    /**
     * 飞机游戏的主窗口
     * @author 李帅帅
     *
     */
    public class MyGameFrame extends JFrame{
    	/**
    	 * 初始化窗口
    	 */
    	public void launchFrame() {
    		this.setTitle("尚学堂学员_李帅帅作品");
    		this.setVisible(true);
    		this.setSize(400,400);
    		this.setLocation(300, 300);
    	this.addWindowListener(new WindowAdapter() {
    		@Override
    		public void windowClosing(WindowEvent e) {
    			System.exit(0);
    		}
    	});
    			}
    	public static void main(String[]args) {
    		MyGameFrame f = new MyGameFrame();
    		f.launchFrame();
    	}
    
    }
  3. PlaneGame0.2中调出的窗口黑色的

  4. package cn.lss.Game;
    
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    /**
     * 飞机游戏的主窗口
     * @author 李帅帅
     *
     */
    public class MyGameFrame extends JFrame{
    	@Override
    	public void paint(Graphics g) {//自动被调用。g相当于一支画笔
    		
    	}
    	/**
    	 * 初始化窗口
    	 */
    	public void launchFrame() {
    		this.setTitle("尚学堂学员_李帅帅作品");
    		this.setVisible(true);
    		this.setSize(400,400);
    		this.setLocation(300, 300);
    	this.addWindowListener(new WindowAdapter() {
    		@Override
    		public void windowClosing(WindowEvent e) {
    			System.exit(0);
    		}
    	});
    			}
    	public static void main(String[]args) {
    		MyGameFrame f = new MyGameFrame();
    		f.launchFrame();
    	}
    
    }
  5. 问题.gif

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3455楼

PlaneGame0.9.zip

老师,

MyGameFrame.java里面

1)怎么理解一组爆炸图片img[i]的依次显示过程?画一次窗口,显示所有的爆炸图片?还是 画一次窗口显示一张图片,画完16次窗口,显示完所有图片?

2 图片加载完毕,bao = null。可以理解成:在Explode类中,执行一次drawImage()方法,对应的img[i] = null,显示完一组图片,img数组的值为null,则bao = null

 

Explode.java里面

为什么使用for循环输出图片,显示的爆炸效果会不一样呢?而且,飞机消失后,爆炸会继续存在?



JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3456楼

PlaneGame0.8.zip

老师,在MyGameFrame.java中为什么定义shells数组以后,直接初始化 编译器会报错?初始化代码要在launch方法中 的原因是什么呢?


JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3457楼

PlaneGame0.6.zip

老师,在Plane.java中,需要给飞机的属性speed赋值。为什么要写成int speed = 3。如果写成speed = 3,编译器会报错:VariableDeclaratorId expected after this token。因为,Plane类继承自GameObject类,GameObject类中的成员变量speed 不是private类型,Plane类自动拥有了speed属性啊,就可以直接赋值(speed = 3)。为什么不能直接赋值,而是在Plane类中重新定义成员变量speed呢?

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3458楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 3461楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 3463楼

week04.zip

我一步步按照老师的来,但是飞机一直不会动,但是addDirection()函数和minusDirection()函数是进去了的。。。

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 3465楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637