基于swing开发的推箱子游戏的设计与实现(编辑修改稿)内容摘要:
GameFrame extends JFrame { private GamePanel gp = new GamePanel()。 private ImageUtil iu = new ImageUtil()。 // 加载图片的工具 public GameFrame() { init()。 } public void init() { (gp)。 // 加 入画纸 (540 + 4, 440 + 62)。 ()。 (().createCustomCursor( (), new Point(26, 29), aaa))。 (false)。 // 不能改变窗体大小 邵阳学院毕业设计(论文) 7 (false)。 (英雄传说 II吕季干 )。 // 加一个监听器,保镖 ,匿名类 :匿名类的格式 new 接口名(){ 接口中的方法的实现 } (new KeyListener() { @Override public void keyPressed(KeyEvent arg0) { // TODO Autogenerated method stub switch (()) { // 0=向下 1=向左 2=向右 3=向上 case 39:// (英雄向右 )。 (2)。 break。 case 40:// (英雄向下 )。 (0)。 break。 case 38:// (英雄向上 )。 (3)。 break。 case 37:// (英雄向左 )。 (1)。 break。 } } @Override public void keyReleased(KeyEvent arg0) { // TODO Autogenerated method stub } @Override public void keyTyped(KeyEvent arg0) { // TODO Autogenerated method stub 邵阳学院毕业设计(论文) 8 } })。 (true)。 } public static void main(String[] args) { // TODO Autogenerated method stub new GameFrame()。 } } 游戏区 这个区域主要完成游戏界面的大小等元素。 :(600, 500)。 : : package frame。 import。 import。 import。 import。 public class GamePanel extends JPanel { private static final long serialVersionUID = 6792476564904637059L。 邵阳学院毕业设计(论文) 9 private Image backImage。 // 背景图片 private Image me。 private ImageUtil iu = new ImageUtil()。 // 加载图片的工具 private Hero hero = new Hero(this)。 private Maps map = new Maps(this)。 public Maps getMap() { return map。 } public void setMap(Maps map) { = map。 } public GamePanel() { (600, 500)。 ()。 backImage = ()。 // 初始化背景图片 // heroImage = ()。 //英雄的图片 // me=(慧灵 .jpg)。 new D().start()。 // 启动线程 } @Override public void paint(Graphics g) { (backImage, 0, 0, , this)。 // 画出背景图片 (me, 0, 0, null)。 boolean yes6 = (g)。 // 画地图 if (yes6) { // 到下一关 ()。 (g)。 // 画地图 } // 画英雄 邵阳学院毕业设计(论文) 10 (g)。 // 调用英雄的的画的方法,将并将画笔 g 传递过去,画出英雄 } // 该 方法用于改变英雄运行的方向 public void setHeroF(int f) { (f)。 // 将方向的改传给英雄 (true)。 // 因为按了键所以可以移动 } // 使用线程来完成 ,内部类 :写在类里面的类 class D extends Thread { public void run() {// 方法必须这么写 while (true) { try { (40)。 } catch (InterruptedException e) { // TODO Autogenerated catch block ()。 } ()。 // 调用这个 D 对象外面的repaint() } } } public Hero getHero() { return hero。 } public void setHero(Hero hero) { = hero。 } } 邵阳学院毕业设计(论文) 11 图片加载区 这个区域主要负责加载各类型的图片,使界面变得美观等条件。 图片加载区总代码: package frame。 import。 import。 import。 import。 public class ImageUtil { public Image getImage(String imageUrl) { Image image = null。 try { // 会将图片加载在内存中 image = (().getClassLoader() .getResourceAsStream(image/ + imageUrl))。 } catch (IOException e) { // TODO Autogenerated catch block ()。 } return image。 } } 英雄变化区 这个区域主要负责英雄的变化,如下: : // 存放英雄起始位置的坐标 private int heroX = 200。 private int heroY = 200。 : 邵阳学院毕业设计(论文) 12 private int f = 0。 // 0=向下 1=向左 2=向右 3=向上 : public void draw(Graphics g) { if (isMoving) { moving()。 // 移动英雄 } // (heroImage, 0, 0, 32, 32, 200, 200, 232, 232, this)。 // 在屏幕上的左上角的 X, Y 和 屏幕上的右下角 X,Y,之间, // 图片的左上角 X,Y,图片上右下角 // (heroImage, heroX, heroY, heroX+32, heroY+32,0,0,32,32, // null)。 //向下 (heroImage, heroX, heroY, heroX + 32, heroY + 32, 0, 32 * f, 32, 32 * (f + 1), null)。 // 控制上下左右的图片 } : public void moving() { switch (f) { case 0: if (peng()) { heroY += 32。 } break。 case 1: if (peng()) { heroX = 32。 } break。 case 2: if (peng()) { 邵阳学院毕业设计(论文) 13 heroX += 32。 } break。 case 3: if (peng()) { heroY = 32。 } break。 } isMoving = false。 // 每移动一次就停止 // (现在英雄的坐标是 :+heroX++heroY)。 } ,返回能走还是不 能走 public boolean peng() { // 1. 得到英雄在地图中的位置 int row = (heroY 100) / 32。 int column = (heroX 100) / 32。 // 2. 根椐英雄的位置及行进的方向 ,判断地图上是否可以行走 switch (f) { // 0=向下 1=向左 2=向右 3=向上 case 0: // 得到地图对象中的地图数组 if (().getMap()[row + 1][column] == 2 || ().getMap()[row + 1][column] == 6) { return true。 } if (().getMap()[row + 1][column] == 10) { // 前面是魔王 if (().getMap()[row + 2][column] == 2) { // 前面前面是地板 ().getMap()[row + 1][column] = 2。 邵阳学院毕业设计(论文) 14 ().getMap()[row + 2][column] = 10。 return true。 } if (().getMap()[row + 2][column] == 6) { // 前面前面是笼子 ().getMap()[row + 1][column] = 2。 ().getMap()[row + 2][column] = 14。 return true。 } } if (().getMap()[row + 1][column] == 14) { // 前面是带笼子魔王 if (().getMap()[row + 2][column] == 2) { // 前面前面是地板 ().getMap()[row + 1][column] = 6。 // 前面就变成笼子 ().getMap()[row + 2][column] = 10。 // 前面的前面变成了魔王 return true。 } if (().getMap()[row + 2][column] == 6) { // 前面前面是笼子 ().getMap()[row + 1][colu。基于swing开发的推箱子游戏的设计与实现(编辑修改稿)
相关推荐
个部分, 能完成从电路的仿真设计到电路版图生成的全过程。 Multisim、 Ultiboard、 Ultiroute 及 Commsim 4 个部分相互独立,可以分别使用。 Multisim、 Ultiboard、 Ultiroute 及 Commsim 4 部分有增强专业版( Power Professional)、专业版( Professional)、个人版( Personal)、教育版(
,而用于累加器的相位增量量化值决定了信号的输出频率,并呈现简单的线性关系。 DDS 就 是根据上述原理而设计的数控频率合成器。 由上面的推导过程可得出: ffclkout .2NB 2. FSK 调制器原理 FSK(频移键控)是用数字信号来控制正弦波的频率,使正弦波的频率随数字信号的变化而变化。 FSK 信号以不同频率值的正弦波来表示数字码元,如果有 M 个码元,则选择 M 个频率 值:
MPNUM: INTEGER RANGE 0 TO 15。 SIGNAL COUNTER: INTEGER RANGE 0 TO 31。 九江学院大专毕业论文 11 SIGNAL START: STD_LOGIC。 BEGIN PROCESS (CLOCK) BEGIN IF RISING_EDGE (CLOCK) THEN IF START=‘0’THEN 上电后立即对输出的键值赋予无效值
datetime shen 审核是否成功 int 1 tb_Tongxun 表用于存储 通讯组 的 信息,结构如表 所示: 表 通讯组 表( tb_Tongxun) 字段 描述 类型 id 主键(自动编号) int name1 员工姓名 varchar 1 tb_Tongxunadd 表用于 存储员工的通讯信息,结构如表 所示: 表 通讯详细信息表( tb_Tongxunadd) 字段 描述
特别引人注目,得到了迅速发展和广泛 应用。 [, ] 1 . 2 扩频通信技术发展与现状 扩频通信技术最早应用于军事领域。 50 年代美国麻省理工学院研究成功 NoMAe(NoiseMo 血 lationnadeoerrlationsystem)系统,成为扩频通信研究发展的 开端,从此,军事通信机关对军事通信、空间探测、卫星侦察等方面广泛应用扩 频通信方式的研究十分活跃。 1985 年 5
节器的类型选择 模拟式调节器 模拟控制器是用模拟电路实现控制功能的仪表,又成电动调节器。 调节器将来自变送器的测量值与给定值相比较后产生的偏差进行比例、积分、微分( PID) 运算,并输出统一 标准信号,去控制执行机构的动作,以实现对温度、压力、流量、液位及其他工艺变量的自动控制。 其发展经历了Ⅰ型(电子管)、Ⅱ(晶体管)和Ⅲ(集成电路)。 目前Ⅰ型、Ⅱ型都已经淘汰。 这里介绍 DDZⅢ型调节器