概述
使用java swing组件搭建简单的游戏窗体,实现己方对象上下左右移动的基础步骤解析
- 首先要搭建一个窗口,即新建一个类,继承Jframe类,并且在类中搭建好你的窗体:如窗体大小、窗体的布局方式、窗体的位置、窗体的一些控件等。最后设置窗体为可见。
public class Begin extends JFrame {
/**
* 初始化方法
*/
public void init(){
//设置标题
this.setTitle("玩玩而已");
//设置窗体大小
this.setSize(500,400);
//设置布局
this.setLayout(null);
//设置窗体关闭程序自动关闭
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//设置窗体居中显示
this.setLocationRelativeTo(null);
//添加主面板
MainJpanel mainJpanel=new MainJpanel();
mainJpanel.init(this);
//设置面板大小
mainJpanel.setBounds(0, 0, 500, 400);
//设置主面板可见
this.add(mainJpanel);
//设置窗体可见
this.setVisible(true);
}
- 搭建好窗口以后,我们需要新建一个画板,把这个面板在添加到窗口里面。然后我们就在画板类里面进行一系列的操作,如上图添加。面板里,我们要做的事比较多:
2.1首先我们要继承Jpanel类,然后声明一个窗体类的对象,并且定义一个带参的构造方法,用来把窗体类的属性都传过来:
public class MainJpanel extends JPanel{
//声明全局的begin对象
Begin begin;
//声明玩家对象
public Player player=new Player();
//声明一个图片对象
ImageIcon img=player.player4;
//面板加载方法
public void init(Begin begin){
this.begin=begin;
//设置玩家出现的初始位置
player.x=200;
player.y=10;
//给面板添加监听器
KeyClick kc=new KeyClick();
begin.addKeyListener(kc);
//启用刷新面板线程
Rethread rt=new Rethread(this);
rt.start();
}
2.2东西都传过来以后,我们就可以重写paintComponent()方法,在这个方法里面往面板上面画东西了。操作代码如下:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//在面板上面出玩家
g.drawImage(img.getImage(), player.x, player.y, 40, 40, this);
g.drawString(".", player.x, player.y);
}
2.3写了上面这些代码,应该就可以看到面板上面的东西了。前提是你有写玩家的实体类。图片路径没有错误。
/**
* 玩家实体类
* @author VastWu
*
*/
public class Player {
//给点位置属性
public int x;
public int y;
//给一个初始速度
public int speed=10;
//玩家模型
public ImageIcon player1=new ImageIcon("imgs\22.png");
public ImageIcon player2=new ImageIcon("imgs\22right.png");
public ImageIcon player3=new ImageIcon("imgs\22down.png");
public ImageIcon player4=new ImageIcon("imgs\22left.png");
}
2.4以上是玩家实体类,完成以上代码应该可以看到东西了:
2.5想让飞机动起来,我们可以在面板类里面添加一个内部类来实现监听,这里我是用的键盘事件监听,用飞机坐标加减飞机速度来实现移动。详细代码如下。添加监听器步骤请见上第二段码 源码较长,贴图
2.6写完这些,你以为你的飞机就可以动了吗?这样子其实还是不可以动的,想让飞机动起来,我们还需要一个线程类,来对面板类进行不断地刷新,就是让paint方法不停的画,一直刷新面板。然后再启动这一线程。如:
/**
* 面板刷新线程
* @author VastWu
*
*/
public class Rethread extends Thread{
MainJpanel mainJpanel;
public Rethread(MainJpanel mainJpanel){
this.mainJpanel=mainJpanel;
}
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
}
mainJpanel.repaint();
}
}
}
-
写到这里,后面很多的游戏动作基本雷同。完成了己方机的基础移动动作,并且随着移动方向改变图片的方向!
谢谢观看 ——VastWu
最后
以上就是斯文菠萝为你收集整理的使用java swing组件搭建简单的游戏窗体的全部内容,希望文章能够帮你解决使用java swing组件搭建简单的游戏窗体所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复