cvmachine.com - 申博开户网

查找: 您的方位主页 > 电脑频道 > 电脑教程 > 阅览资讯:java游戏开发杂谈 - 事情处理

java游戏开发杂谈 - 事情处理

2019-04-14 06:28:49 来历:www.cvmachine.com 【

咱们都知道,游戏需求跟玩家交互,需求接纳玩家的鼠标、键盘宣布的指令,比方在地图上点击一下,人物就主动寻路走过去;键盘上按下某个键,就弹出一个背包界面。

这些逻辑是怎样处理的呢? 咱们先不必深究太具体的,只需求知道,当咱们按下键盘时,操作体系会接纳到指令,然后把指令传递给java虚拟机,java虚拟机再把指令转发给当时的游戏程序。

java界说了一些类来封装事情,比方KeyEvent对应按键事情,按下键盘,就会发生一个KeyEvent目标; 还有别的的一些接口,用来监听处理事情,比方KeyListener用来监听按键事情,并进行处理。

接下来咱们完成一个比如,是在界面上画一个方块,当按下不同方向键时,方块往不同的方向移动。一起,约束方块不能超出活动区域。

先看下完成后的界面图:

java游戏开发杂谈 - 事情处理

下面贴出这个比如的一切代码:

package game3;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JPanel;
/**
 * java游戏开发杂谈
 * ---demo3:事情处理
 * 
 * @author 台哥
 * @date 2019-04-09
 */

public class GamePanel extends JPanel implements KeyListener{
/** 屏幕的宽和高 */
private int width,height;

/**小方块的初始方位*/
private int x = 240, y = 160;

public GamePanel(int width, int height) {
this.width = width;
this.height = height;
this.setSize(width, height);

//设置当时画布能够获得焦点。
this.setFocusable(true);
//设置自己为自己的按键事情监听器
this.addKeyListener(this);
}


/**
 * 掩盖paintComponent()办法
 * 参数中的Graphics是画笔,运用它能够制造出字符串、直线、矩形、圆、图片等等。
 */
public void paintComponent(Graphics g) {
super.paintComponent(g);

//画绿色布景
g.setColor(new Color(0x839156));
g.fillRect(0, 0, width, height);

//画绿色布景
g.setColor(new Color(0x839156));
g.fillRect(0, 0, width, height);

g.setColor(Color.black);
//画一个矩形活动区域
g.drawRect(160, 80, 200, 200);
//画一个小方块
g.fillRect(x, y, 40, 40);
}


/**
 * 当键盘上的键被按下,程序会调用这个办法,来处理这个按下事情
 * 
 * 经过键盘上的四个方向键来操控小方块的移动
 */
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode(); //依据keyCode能知道按下的是哪个键
switch(keyCode)
{
case KeyEvent.VK_LEFT:
if(x > 160){ //操控使得方块不能超出活动区域外
x = x - 1;
}
this.repaint(); //改写一下画布,就能看到小方块方位发生了改变。
break;
case KeyEvent.VK_RIGHT:
if(x < 320){  //矩形活动区域最左面的横坐标为160,宽为200,所以矩形的最右边的坐标为360. 小方块宽度为40. 360 - 40 = 320.
x = x + 1;
}
this.repaint();
break;
case KeyEvent.VK_UP:
if(y > 80){
y = y - 1;
}
this.repaint(); 
break;
case KeyEvent.VK_DOWN:
if(y < 240){
y = y + 1;
}
this.repaint();
break;
}
}

@Override
public void keyReleased(KeyEvent e) {
}

@Override
public void keyTyped(KeyEvent e) {
}



}

 

package game3;

import javax.swing.JFrame;
/**
 * java游戏开发杂谈
 * ---demo3:事情处理
 * 
 * @author 台哥
 * @date 2019-04-09
 */
public class GameFrame extends JFrame{

private int width = 600, height = 400;

public GameFrame() {
//设置窗体标题
this.setTitle("java游戏开发杂谈-台哥出品");

//创立一个画布
GamePanel panel = new GamePanel(width, height);
//把画布加入到窗体中
getContentPane().add(panel, "Center");

//设置窗体巨细
this.setSize(width, height); 
//设置能否调整窗体巨细
this.setResizable(false); 
//这句会使得在屏幕上居中显现
this.setLocationRelativeTo(null);
//当封闭窗体的时分退出程序
this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
//把窗体显现出来
this.setVisible(true); 
}

/**
 * 主办法
 */
public static void main(String[] args) {
GameFrame frame = new GameFrame();
}
}

 

眼过千遍,不如手过一遍。学习编程的窍门,便是亲自实践,多加操练。书本上的理论知识,学个大约,就开端动手写代码操练,遇到困难了,再翻书处理,如此重复,不断的用理论来辅导实践,用实践来验证理论。

 

未完待续,java游戏开发杂谈,台哥在作业之余抽暇写的专栏,期望能给咱们一点协助。

java游戏开发杂谈 - 事情处理

 

 
 

本文地址:http://www.cvmachine.com/dnjc/100368.html
Tags: Java 开发 游戏
修改:申博开户网
关于咱们 | 联络咱们 | 明升m88.com | 网站地图 | Sitemap | App | 回来顶部