这里介绍的是Game的逻辑类,主要控制游戏的动作,以及绘制。
详细里面代码有注释
java 代码
-
-
-
-
-
- package org.wuhua.battleplan;
-
- import java.util.Stack;
-
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
-
- import org.wuhua.game.GameCanvas;
- import org.wuhua.game.model.Fairy;
- import org.wuhua.game.util.Log;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public class Game extends GameCanvas {
- static Log log = Log.getLog("Game");
- private Hero hero;
-
- private Stack balls;
- private Stack foes;
-
- private Stack balst;
-
-
-
- private int balstIndex;
-
-
-
-
- private int genaratBallTime;
-
- private int genaratFoeTime;
-
-
- Game(){
- super();
- this.setFullScreenMode(true);
- }
-
- void init(){
-
- WIDTH = getWidth();
- HEIGHT = getHeight();
- log.debug("WIDTH=" + WIDTH);
- log.debug("hegiht=" + HEIGHT);
- this.bufferImage = Image.createImage(WIDTH, HEIGHT);
-
- Platform.WIDTH = this.getWidth();
- Platform.HEIGHT = this.getHeight();
-
-
- hero = Hero.createHero(Platform.WIDTH/2, Platform.HEIGHT -30);
-
- balst = new Stack();
-
- }
-
-
-
-
-
-
- void genaratorBalst(int x, int y){
- balst.addElement(new Fairy(Resources.BLAST[0], x, y));
- balst.addElement(new Fairy(Resources.BLAST[1], x, y));
- balst.addElement(new Fairy(Resources.BLAST[2], x, y));
- balst.addElement(new Fairy(Resources.BLAST[3], x, y));
- balst.addElement(new Fairy(Resources.BLAST[4], x, y));
- }
-
-
-
-
-
-
-
- void collides(){
- if(balls == null
- || foes == null)
- return ;
- for(int i = 0; i < balls.size(); i ++){
- Ball b = (Ball) balls.elementAt(i);
- for(int j =0; j < foes.size(); j ++){
- Foe f = (Foe) foes.elementAt(j);
- if(b.collidesWith(f)){
- this.genaratorBalst(f.getX(), f.getY());
- balls.removeElement(b);
- foes.removeElement(f);
- return;
- }
-
- }
- }
- }
-
-
-
-
-
- void drawGame(){
- if(Platform.HEIGHT < this.getHEIGHT()){
- Platform.HEIGHT = this.getHEIGHT();
- }
-
- Graphics g = this.getGraphics();
- if(g == null)
- return;
- fillFullScreen(g,0x349293);
- paintHeroAndBall(g);
-
- paintFoe(g);
-
- paintBalst(g);
- this.flushGraphics();
- }
-
-
-
-
-
- private void paintBalst(Graphics g) {
-
- if(balst == null
- || balst.size() == 0)
- return;
-
- Fairy bf = (Fairy) balst.elementAt(balstIndex);
- bf.paint(g);
- if(balstIndex >= 4){
- balstIndex = 0;
- balst.removeAllElements();
- }
-
- balstIndex++;
- }
-
-
-
-
-
- private void paintFoe(Graphics g) {
- if(foes == null)
- return ;
- for(int i=0; i < foes.size(); i++){
- Foe foe = (Foe) foes.elementAt(i);
- foe.paint(g);
- }
-
- }
-
-
-
-
-
- public void genaratorFoe(){
- if(this.genaratFoeTime == 5){
- FoeManager.addFoe(FoeManager.genarator());
- FoeManager.clearFoesIsOut();
- foes = FoeManager.getFoes();
- genaratFoeTime = 0;
- }
-
- genaratFoeTime++;
- }
-
-
-
-
-
- public void foeFly(){
- if(foes == null)
- return ;
- for(int i = 0; i < foes.size(); i++){
- Foe foe = (Foe) foes.elementAt(i);
- foe.fly();
- }
- }
-
- private void paintHeroAndBall(Graphics g) {
- hero.paint(g);
- paintBalls(g);
- }
-
-
-
-
-
- private void paintBalls(Graphics g) {
- if(balls == null)
- return ;
- for(int i = 0; i < balls.size(); i++){
- Ball ball = (Ball) balls.elementAt(i);
- ball.paint(g);
- }
-
- }
-
-
-
-
-
- public void ballFly(){
- if(balls == null)
- return ;
- for(int i = 0; i < balls.size(); i++){
- Ball ball = (Ball) balls.elementAt(i);
- ball.fly();
- }
- }
-
-
-
-
-
- public void heroAction(){
- checkHeroIsExists();
- int keyCode = this.getKeyStates();
-
- switch(keyCode){
- case Platform.KEY_LEFT: hero.moveLeft(); break;
- case Platform.KEY_RIGHT: hero.moveRight(); break;
- case Platform.KEY_UP: hero.moveUp(); break;
- case Platform.KEY_DOWN: hero.moveDown(); break;
- case Platform.KEY_FIRE: genaratorBall(); break;
- }
- }
-
-
-
-
-
- private void genaratorBall() {
-
- if(this.genaratBallTime == 3){
- checkHeroIsExists();
-
- BallManager.addBall(BallManager.genarator(hero.getX(), hero.getY()));
- BallManager.clearBallsIsOut();
- balls = BallManager.getBalls();
- genaratBallTime = 0;
- }
-
- genaratBallTime++;
-
-
- }
-
- private void checkHeroIsExists() {
- if(hero == null){
- throw new java.lang.NullPointerException("Hero is Null");
- }
- }
-
-
-
-
-
- public void run(){
- this.collides();
- this.heroAction();
- this.ballFly();
- this.genaratorFoe();
- this.foeFly();
-
- this.drawGame();
- this.setKeyStates(1000);
- }
- }
代码就是上面的,如果有什么好的建议,请评论。下面的一课,我将介绍GameThread。
分享到:
相关推荐
《雷电游戏 飞机大战 MFC版》是一款基于微软基础类库(MFC,Microsoft Foundation Classes)开发的经典飞行射击游戏,具有丰富的视觉效果和流畅的游戏体验。在这个项目中,开发者利用MFC的强大功能,构建了一个具备...
3. `game.js`: 主要的JavaScript游戏逻辑文件,处理游戏的各个功能。 4. `images/`: 图像资源文件夹,存储游戏中的图片和图标。 5. `sounds/`: 声音资源文件夹,包含游戏音效和背景音乐。 在开发过程中,开发者还...
在雷电游戏中,通常有两到三个线程:一个用于游戏逻辑(如飞机移动、子弹飞行、敌机生成),一个用于渲染屏幕更新,还有一个可能用于处理用户输入。使用Thread类或Runnable接口可以创建并管理这些线程,保证游戏的...
《雷电》是一款基于Java语言开发的简单游戏,它的存在为初学者提供了一个学习编程的绝佳实例。在Java编程世界中,游戏开发是一项常见的实践项目,因为它能够将理论知识与实际应用相结合,帮助开发者更好地理解和掌握...
3. **游戏循环**:游戏的核心是游戏循环(Game Loop),它不断更新游戏状态并绘制新帧。Java中通常用`while`或`do-while`循环来实现。 4. **对象动画**:游戏中的飞机、子弹和敌人需要动起来。这涉及到坐标系统和...
触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源...
在"vc6开发类似雷电游戏源码"中,"GameEngine"类很可能是实现这些功能的关键模块。GameEngine类可能包含了游戏循环、对象管理、碰撞检测、游戏状态切换等核心算法。开发者需要对数据结构、算法和面向对象编程有深入...
基于java的雷电游戏基本功能包括:敌方飞机随机飞行、我方飞机手动控制飞行,射击比拼,游戏闯关等。本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证。 若初始化成功后...
【JAVA雷电小游戏】是一款基于Java编程语言开发的休闲小游戏,设计灵感来源于经典的"雷电"系列。在这款游戏中,玩家将控制一架飞机在屏幕上移动,躲避敌机和障碍物,同时打击目标以获得分数。游戏的核心编程理念是...
【Java雷电游戏程序】是一款基于Java编程语言开发的仿制经典街机游戏"雷电"的项目。这个程序展示了如何使用Java进行游戏开发,涵盖了图形用户界面(GUI)、对象动画、碰撞检测以及游戏逻辑等多个方面的知识。 首先...
【标题】"Android 雷电游戏源码" 涉及到的Android开发关键知识点主要包括以下几个方面: 1. **游戏引擎与框架**:虽然没有明确指出使用了哪种游戏引擎,但开发一个游戏通常需要一个基础框架。Android游戏开发中常见...
【简单雷电游戏源码】是一款适用于初学者和游戏开发者的学习资源,主要用于课程设计和实践项目。这个源码实现了一个简化版的雷电游戏,它包含关卡设计和BOSS战斗元素,为学习游戏开发提供了丰富的实践素材。下面将...
在Android平台上开发游戏,尤其是像“雷电”这样的经典射击游戏,涉及到许多关键的技术点和设计思路。让我们深入探讨一下这个基于Android的雷电小游戏所涵盖的IT知识点。 首先,我们要理解Android应用开发的基础...
《Android雷电游戏框架详解》 在Android平台上开发游戏,开发者常常会利用各种游戏框架来提升效率和优化性能。本文将深入探讨一款名为"雷电游戏框架"的项目,它是一个基于MVC(Model-View-Controller)架构设计的...
《简易雷电小游戏》是一款基于C# WinForm平台开发的小型游戏,主要涉及了游戏编程的基本元素和交互设计。这个游戏的核心玩法是控制飞机躲避陨石并发射子弹进行攻击,通过键盘上的上下左右键来移动飞机,使用W键发射...
java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大作业——雷电飞机射击游戏(Java)java程序设计大...
这不仅对于想要入门Android游戏开发的新手来说是一份宝贵的资料,也是有一定基础的开发者提升技术能力的良好实践。 首先,源码中的`Chapter16_Game_Pro`可能代表游戏项目是按照章节逐步展开的,第16章可能是关于...
标题中的"C语言仿雷电"指的是使用C语言编程实现的一款基于雷电游戏风格的小游戏。雷电游戏,通常称为飞行射击游戏,玩家控制一架飞机在屏幕中躲避敌机和子弹,同时攻击敌人。这种类型的游戏以其快节奏和刺激性而受到...
【Java雷电小游戏】是一款基于Java编程语言开发的娱乐项目,它再现了经典的街机游戏——雷电的玩法,融入了独特的boss战斗环节,为玩家提供了丰富的游戏体验。这款小游戏展示了Java在游戏开发领域的应用,同时也体现...
《Java游戏:雷电源码详解》 在编程领域,Java是一种广泛应用的编程语言,尤其在游戏开发中也有其独特的优势。本项目名为“Java游戏_雷电源码”,它是一个由个人独立开发的小型游戏,旨在展示Java在游戏设计中的...