飞机大战之-添加背景

news/2025/1/15 7:54:03/

之前我们已经生成了一个空白的窗口,接下来我们要在这个窗口上添加背景。
我们新建一个MyPanel的类用来单独设置面板。
MyPanel是继承于JPanel的一个子类。导入所需的包。

package view;import javax.swing.JPanel;public class MyPanel extends JPanel{}

然后新建一个图片类型的变量用来存放我们的背景。导入相关所需的包。

package view;import java.awt.Image;import javax.swing.JPanel;public class MyPanel extends JPanel{public Image bgImage;}

接着我们使用
this.bgImage = Toolkit.getDefaultToolkit().getImage(“images/bg01.jpg”);
把背景图片放入,导入相关的包。

package view;import java.awt.Image;
import java.awt.Toolkit;import javax.swing.JPanel;public class MyPanel extends JPanel{public Image bgImage;public MyPanel(){//设置背景this.bgImage = Toolkit.getDefaultToolkit().getImage("images/bg01.jpg");}}

现在图片创建好了,接下来我们设置背景图片的一些参数,设置在窗口的位置。

我们使用重构父类的paintComponent()方法来设置自记得背景图。

package view;import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;import javax.swing.JPanel;public class MyPanel extends JPanel{public Image bgImage;public MyPanel(){//设置背景this.bgImage = Toolkit.getDefaultToolkit().getImage("images/bg01.jpg");}public void paintComment(Graphics g){super.paintComponent(g);g.drawImage(this.bgImage, 0,0-this.bgImage.getHeight(this), this.bgImage.getWidth(this),this.bgImage.getHeight(this),null);g.drawImage(this.bgImage, 0,0, this.bgImage.getWidth(this),this.bgImage.getHeight(this),null);}}

这里的paintComment()是自动调用的。 这里还有一些疑惑的地方,就是不知道具体是怎么实现的自动调用,这个就先放下吧。。。

然后我们去BaseFrame类中新建一个MyPanel类型的对象。新建 - > 设置位置-> 添加到窗口中
新建:this.myPanel = new MyPanel();
设置位置 : this.myPanel.setBounds(0,0,frameWidth, frameHeight);
添加组件: this.add(myPanel);

package view;import java.awt.Dimension;
import java.awt.Toolkit;import javax.swing.JFrame;public class BaseFrame extends JFrame{public static int frameWidth = 512, frameHeight = 768;public MyPanel myPanel;public BaseFrame(){super("飞机大战");setBounds(100, 0, frameWidth, frameHeight);setLayout(null);this.myPanel = new MyPanel();this.myPanel.setBounds(0,0,frameWidth, frameHeight);this.add(myPanel);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}

http://www.ppmy.cn/news/377725.html

相关文章

JS小游戏-宇宙战机

游戏介绍: 业余时间写的一个飞行射击游戏,纵向,共六关。 游戏需求: 1.战机可发射子弹,子弹可通过获取道具升级。 2.战机可放bomb,可获取道具增加数量。 3.战机可蓄力攻击。 4.道具有三种,分别是升级子弹,增…

Python实现飞机大战小游戏(含源码+图片资源)

Python实现飞机大战小游戏(含源码图片资源) 1. 项目描述2. 依赖包导入3. 代码实现3.1 类构建3.2 初始化设置3.3 排行榜功能3.4 主循环 4. 效果展示4.1游戏开始界面:4.2破纪录界面显示:4.3排行榜功能: 5. 不足和改进 1.…

史上最清晰的雷霆战机游戏开发全过程(基于java,素材和源码均齐全)

前情提要 此次咕咕为大家准备了雷霆战机游戏开发的全过程,我将整个开发都写在了文档中,有图有真相,步步到位,供大家进行细节功能实现上的参考,除此之外,游戏所需的图片与音乐素材、逻辑脑图都一 一放在了文…

【Canvas】童年玩过的雷霆战机你还记得吗?

按键机的年代,想必大家都玩过类似雷电,雷霆战机之类的飞行射击类游戏吧,今天我就试着用canvas来还原一下游戏场景。 素材准备 还原场景的第一步是准备素材,首先我们需要一架雷霆战机,经过九牛二虎之力,我…

前端案例:飞机大战( js+dom 操作,代码完整,附图片素材)

目录 一、案例效果 二、实现思路 三、完整代码详细注释 四、涉及要点 五、案例素材 一、案例效果 二、实现思路 创建游戏背景板;创建我方战机,鼠标进入游戏面板后其随鼠标轨迹运动; onmousemove创建子弹,让子弹周期性的在战…

飞机大战——图文详解

文章目录 1.前言2.效果展示3.图片素材的准备4.需要构建的函数5.变量的定义6.数据的初始化7.画面的呈现8.飞机移动的实现9.子弹的构建和移动9.1子弹的构建9.2子弹的移动 10.敌机的创建和移动11.敌机消灭函数12.结束语13.完整代码14.内容更新 1.前言 本次需要用到easyx图形库&am…

自动化运维工具—Ansible

一、Ansible概述 1.1 Ansible是什么 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 Ansible能批量配…

MySQL索引:让你的数据库查询快到起飞!

💕世界上最美好的东西之一,就是你每天都有机会开始全新的一天。💕 🐼作者:不能再留遗憾了🐼 🎆专栏:MySQL学习🎆 🚗本文章主要内容:详细介绍如何查…