这里介绍的是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。
分享到:
相关推荐
Java雷电小游戏,要是你们能做出这个游戏的话Java基础还是会更扎实一些的。安装好了会自动弹出那个窗口。安装目录中有那个源码,桌面上会有一个plane的图标点击就可以进去了。
基于MFC实现的雷电游戏。 画面精美,性能优良。 设置多种敌机,及物品。 可直接编译运行,并附上说明文档
触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源代码 )触屏Java游戏 雷电ⅱ.jar(含截图+源...
基于java的雷电游戏基本功能包括:敌方飞机随机飞行、我方飞机手动控制飞行,射击比拼,游戏闯关等。本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证。 若初始化成功后...
vc6开发类似雷电游戏源码 主要包含:GameEngine,Bitmap 等类
基于java的雷电游戏基本功能包括:敌方飞机随机飞行、我方飞机手动控制飞行,射击比拼,游戏闯关等。主要有: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证。 若初始化成功后,界面会...
Java JOGL Demo 雷电游戏.zipJava JOGL Demo 雷电游戏.zip Java JOGL Demo 雷电游戏.zipJava JOGL Demo 雷电游戏.zip Java JOGL Demo 雷电游戏.zipJava JOGL Demo 雷电游戏.zip Java JOGL Demo 雷电游戏.zipJava ...
java仿雷电游戏程序及代码,可直接运行,实现了原版雷电的基本功能
基于java的雷电游戏基本功能包括:敌方飞机随机飞行、我方飞机手动控制飞行,射击比拼,游戏闯关等。本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证。 若初始化成功后...
飞行射击游戏,C++编写,使用VC++ 6.0或者相关编译软件即可运行。相关的说明文档在内部有,每个类的用法以及功能描述都在里面,更多内容见文档。欢迎下载。
Android 雷电游戏源码--来自网络 仅供学习 如有侵权 请联系删除
使用说明: 仿雷电飞行射击类小游戏 光标键移动主角; 武器级别:空格键发子弹、Z键追踪导弹(score>2000); 关卡设置:根据得分,不通关卡不同背景和敌人; 道具设置:加血小道具; = = 虽然是仿雷电,不过背景...
【经典Android游戏源码18】雷电2013射击小游戏源码
以前java课的小游戏,雷电带boss
简单雷电游戏源码 课程设计 设有关卡 BOSS
自己编的android 雷电小游戏 重力感应 控制 设置有奖励 有跟踪导弹 触屏发射子弹 不过仍有部分bug 希望大家指正 互相学习
实现简单的雷电游戏模仿 对学习很有帮助。
Python飞机大战,有点像雷电游戏的界面风格,飞机躲闪另外发炮弹炸掉敌机和障碍,玩的时候还是挺刺激的,不过本游戏玩的时候,没发现有声音。源代码中的注释还是相当多的,Python初学者可学习研究下游戏的相关编写...
【Java毕业设计】基于java的雷电游戏(论文+答辩PPT+源代码+讲解视频).zip 【Java毕业设计】基于java的雷电游戏(论文+答辩PPT+源代码+讲解视频).zip 【Java毕业设计】基于java的雷电游戏(论文+答辩PPT+源代码+...