JAVA后端飞机大战绘制初始界面显示背景界面界面向下移动到临界位置重置日志编写
- 绘制初始界面显示背景界面
首先,我们需要创建一个窗口来显示游戏界面。使用Java的Swing库可以方便地创建窗口和绘制界面。
在窗口上绘制背景可以通过在窗口上绘制一张图片来实现。可以使用Java的Graphics2D类来绘制图片。具体实现可以参考以下代码:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Background extends JPanel {
private Image background;
public Background() {
background = Toolkit.getDefaultToolkit().getImage("background.png");
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(background, 0, 0, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Background");
frame.add(new Background());
frame.setSize(400, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
在上面的代码中,我们创建了一个Background类,该类继承了JPanel类,并重写了paint()方法来绘制背景图片。在构造函数中,我们加载了一张名为background.png的图片。在main()方法中,我们创建了一个JFrame对象,并将Background对象添加到JFrame中。最后,我们设置了JFrame的大小和关闭操作,并使其可见。
- 界面向下移动,到临界位置重置
在游戏中,背景通常需要不断向下滚动,以模拟飞机在空中飞行的效果。我们可以通过重绘背景来实现这个效果。
首先,我们需要定义一个速度变量来控制背景的滚动速度。然后,在paint()方法中,我们每次绘制完背景后,将背景图片的Y坐标减去速度。当背景图片的Y坐标小于等于窗口高度时,我们就将其重置到窗口顶部。
具体实现可以参考以下代码:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Background extends JPanel implements Runnable {
private Image background;
private int y;
private int speed;
public Background() {
background = Toolkit.getDefaultToolkit().getImage("background.png");
y = 0;
speed = 5;
new Thread(this).start();
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(background, 0, y, null);
}
public void run() {
while (true) {
y -= speed;
if (y <= -getHeight()) {
y = 0;
}
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Background");
frame.add(new Background());
frame.setSize(400, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
在上面的代码中,我们定义了一个y变量来记录背景图片的Y坐标,并且在构造函数中初始化为0。我们还定义了一个speed变量来控制背景的滚动速度,并且在构造函数中初始化为5。
在run()方法中,我们不断地将y减去speed,并且在y小于等于窗口高度时,将y重置为0。这样就实现了背景的循环滚动效果。我们还使用repaint()方法来重绘背景,并且在每次重绘后,线程休眠10毫秒,以控制背景滚动的速度。
- 日志编写
在游戏开发中,日志记录是非常重要的。它可以帮助我们定位问题,并且管理游戏中产生的大量信息。
Java提供了一个用于日志记录的标准API,即java.util.logging包。我们可以使用Logger类来记录日志。
具体实现可以参考以下代码:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Background extends JPanel implements Runnable {
private Image background;
private int y;
private int speed;
private Logger logger;
public Background() {
background = Toolkit.getDefaultToolkit().getImage("background.png");
y = 0;
speed = 5;
logger = Logger.getLogger(this.getClass().getName());
new Thread(this).start();
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(background, 0, y, null);
}
public void run() {
while (true) {
y -= speed;
if (y <= -getHeight()) {
y = 0;
}
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Background");
frame.add(new Background());
frame.setSize(400, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
在上面的代码中,我们创建了一个Logger对象来记录日志。在构造函数中,我们将Logger对象的名称设置为当前类的名称。在run()方法中,如果线程被中断,我们会记录一个SEVERE级别的日志,日志信息为InterruptedException的消息和堆栈跟踪。这样,当线程出现问题时,我们就可以通过日志来追踪和定位问题
原文地址: https://www.cveoy.top/t/topic/fRsL 著作权归作者所有。请勿转载和采集!