import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class C extends GameCanvas implements Runnable {
private Audio audio;
boolean loadMusic=false;
boolean hasSound;
public static Player rotateMusic;
boolean hasPlayer=false;
private InputStream is1;
private MyMIDlet app;
private Thread thread;
private boolean gameRunning = true;
private int mainFlag = 0;
private int gameFlag = 0;//全局的游戏计数器,只在这里被赋值
private int stageClearFlag = 0;
private boolean tans=false;
private final int SCREEN_W = 240; //屏幕宽
private final int SCREEN_H = 291; //屏幕高
//状态量
private final int MAIN_LOGO = 1; //LOGO
private final int MAIN_TITLE = 2; //标题
private final int MAIN_ABOUT = 3; //主菜单
private final int MAIN_GAME = 8; //游戏
private final int MAIN_HELP = 10; //帮助
private final int MAIN_RESULT = 12; //
private final int MAIN_END = 13; //结局
private final int MAIN_MAKING = 14; //读取关卡
private int hiScore = 0;
private boolean flagBossDie;
private int flagBossDieCount;
private static Image title;
private static Image arrow;
private static Image menu;
private int drawPoint = 1;
private static Image imgMyShip; //玩家飞机图片
private static Image background;
private static Image lifeicon;
private static Image bombicon;
private static Image playerFront;//座机前的小飞机
private static Image playerShot;//座机1、2钟普通子弹
private static Image subShot;//座机导弹
private static Image[] jiGuang = new Image[4];
private static Image imgLazerHit;//被激光击中时的图片
private static Image superAttack_1;
private static Image superAttack_2;
private static Image superAttack_3;
private boolean playerAlive = true;
private int backY;//控制背景的Y
//按键是否被按下
private boolean P_UP = false;
private boolean P_DOWN = false;
private boolean P_LEFT = false;
private boolean P_RIGHT = false;
private static Image playerDieBomb;
private static Image enemyDieBomb;
private static Image bossDieBomb;
private int readCount = 0;
private int logoCount = 0;
private int makingCount = 0;
private int titleCount = 0;
private static Image net;
private static Image sp;
private static Image cp;
private int stage = 1;
private int mapScroll;
private boolean bossBattle = false;
private boolean bossCreated = false;
private int gameOverFlag = 0;
private boolean stageClear = false;
// private boolean soundON = false;
private boolean gameAlive = false;
boolean alowRun = true;
private boolean alowSound = true;
private int soundPause = 0;
private final int[] superMode = {0,50,50,56,56,52,54,52,54,53,0};
private int superKey = 0;
private boolean manyLife = false;//是否为无限生命
private int helpCount = 0;
MyMIDlet myMIDlet;
RaidenCanvas raidenCanvas ;
public C(MyMIDlet m) {
super(false);
myMIDlet=m;
System.out.println(C.RIGHT_PRESSED);
setFullScreenMode(true);
app = m; //Midlet Object
thread = null;
// audio = Audio.getInstance();
// audio.playSound(Audio.START);
System.out.println("di yici ");
// myMIDlet=new MyMIDlet(1);
raidenCanvas=new RaidenCanvas(m);
init();
try
{
is1 = getClass().getResourceAsStream("/1.mid");
rotateMusic = Manager.createPlayer(is1, "audio/midi");
}catch (MediaException ex)
{
System.out.println(ex.toString());
}catch (IOException ex)
{
System.out.println("2");
}
//hasSound=true;
loadMusic=true;
// playSound();
thread = new Thread(this); //当前类的线程
thread.start();
}
public synchronized void stop()
{
thread=null;
}
public void init()
{
mainFlag = MAIN_LOGO;
try
{
if (net == null)
net = Image.createImage("/logo1.png");
if (sp == null)
sp = Image.createImage("/logo2.png");
if (cp == null)
cp = Image.createImage("/cp.png");
}catch(Exception e){System.out.println("no photo of net||sp||cp");}
}
protected void changeMain(int state)//改变主状态
{
mainFlag = state;
}
public void run()
{
long rate = 20;//20ms刷屏一次
long sta = 0;
long end = 0;
long diff = 0;
while (alowRun)
{
sta = System.currentTimeMillis();
Thread.yield();
if (gameRunning)
{
autoEvent();//逻辑处理 *****
}
repaint(); //绘画处理
this.serviceRepaints();//强制绘图,先把图像绘出出来
end = System.currentTimeMillis();
diff = end - sta;
if (diff < rate)
try
{
Thread.sleep(rate - diff);
}catch(Exception e){}
}
}
protected void pauseGame()
{
clearButton();
if (gameRunning)//&&(mainFlag == MAIN_GAME||mainFlag == MAIN_TITLE))
{
gameRunning = false;
}
else
{
gameRunning = true;
}
}
protected void clearButton()
{
P_UP = false;
P_DOWN = false;
P_LEFT = false;
P_RIGHT = false;
}
public void hideNotify()
{
if(gameRunning && (mainFlag == MAIN_GAME||mainFlag == MAIN_TITLE)) //游戏主界面
{
pauseGame();
}
if(hasSound)
// releaseSound();
{
try{
rotateMusic.stop();
}catch(MediaException e){}
rotateMusic.deallocate();
rotateMusic.close();
loadMusic=false;
}
}
public void showNotify()
{
if(!gameRunning&&mainFlag==MAIN_TITLE)
gameRunning=true;
}
public void autoEvent()// 只被run调用
{
switch(mainFlag)
{
case MAIN_LOGO:
logoCount++;//标题状态时的计数器
if (logoCount > 200)
{
net = null;
sp = null;
loadDate();
}
if (logoCount > 260)
{
//playSound();
changeMain(MAIN_TITLE);//转到下一状态
}
break;
case MAIN_TITLE:
titleCount++;
//playSound();
//if(hasSound&&!loadMusic)
//loadSound();
//if(gameRunning&&hasSound&&!hasPlayer)//!gameRunning&&
//playSound();
break;
case MAIN_HELP://帮助
if(helpCount > 0)
helpCount--;
break;
case MAIN_MAKING://游戏开始之前的预处理
//这个状态没有接受键盘处理
makingCount++;
changeMain(MAIN_GAME);//转到游戏状态
// }
break;
case MAIN_GAME:
gameFlag++; //游戏计数器
if(!gameRunning&&hasSound&&!loadMusic)
loadSound();
if(!gameRunning&&hasSound&&!hasPlayer)
playSound();
break;
}
}
protected void keyPressed(int keycode)
{
if(mainFlag==MAIN_LOGO)
{
if (logoCount < 100)
logoCount = 100;//任意键加快跳转
else if (logoCount > 100 && logoCount < 200)
logoCount = 200;//任意键加快跳转
return;
}
switch (mainFlag)
{
case MAIN_TITLE:
switch(keycode)
{
case -6://Nokia 40/60的中、左软件
case -5:
switch (drawPoint)
{
case 1:
System.out.println("pppppppppppppppppppppppppppppppppppppppppppp");
//开始游戏
//reset();//boss和背景置null******
//makeNewGame();******
//makingCount = 0;
changeMain(MAIN_MAKING);//跳转关卡
// System.gc();
break;
case 2://显示帮助
changeMain(MAIN_HELP);
break;
case 3://关于
changeMain(MAIN_
没有合适的资源?快使用搜索试试~ 我知道了~
一款简单射击类游戏代码
共200个文件
png:138个
class:22个
mid:20个
5星 · 超过95%的资源 需积分: 45 13 下载量 4 浏览量
2009-10-30
00:54:38
上传
评论 1
收藏 4.27MB RAR 举报
温馨提示
这是一款设计类小游戏代码,适合初学者,主要是用j2me语言开发的手机游戏
资源推荐
资源详情
资源评论
收起资源包目录
一款简单射击类游戏代码 (200个子文件)
C.class 15KB
C.class 14KB
RaidenCanvas.class 13KB
RaidenCanvas.class 12KB
Enemy3456.class 4KB
Enemy1.class 4KB
Enemy3456.class 4KB
Enemy2.class 4KB
Enemy1.class 4KB
Enemy2.class 3KB
Audio.class 3KB
boss.class 3KB
Audio.class 3KB
boss.class 2KB
Player.class 2KB
Player.class 2KB
MyMIDlet.class 2KB
MyMIDlet.class 2KB
Bullet.class 2KB
Bullet.class 2KB
Bonus.class 2KB
Bonus.class 2KB
.classpath 242B
.eclipseme 243B
textPlan.jad 251B
textPlan.jad 251B
textPlan.jad 225B
textPlan.jar 1.07MB
textPlan.jar 1.07MB
C.java 27KB
RaidenCanvas.java 22KB
Enemy3456.java 7KB
Enemy1.java 6KB
Enemy2.java 5KB
Audio.java 4KB
boss.java 3KB
Player.java 3KB
Bonus.java 1KB
Bullet.java 1KB
MyMIDlet.java 1KB
2.mid 17KB
2.mid 17KB
1.mid 9KB
1.mid 9KB
Fail.mid 2KB
Fail.mid 2KB
Win.mid 202B
Win.mid 202B
Start.mid 175B
Start.mid 175B
New.mid 156B
New.mid 156B
TopScore.mid 84B
Dead.mid 84B
Dead.mid 84B
TopScore.mid 84B
Bonus.mid 63B
Bonus.mid 63B
Explosion.mid 48B
Explosion.mid 48B
splash.png 169KB
splash.png 169KB
stage3.png 144KB
stage3.png 144KB
stage4.png 128KB
stage4.png 128KB
stage2.png 126KB
stage2.png 126KB
background.png 110KB
background.png 110KB
stage1.png 97KB
stage1.png 97KB
title.png 95KB
title.png 95KB
back_img3.png 25KB
back_img3.png 25KB
e7.png 23KB
e7.png 23KB
e1.png 21KB
e1.png 21KB
back_img2.png 17KB
back_img2.png 17KB
boss_4.png 12KB
boss_4.png 12KB
boss_3.png 10KB
boss_3.png 10KB
back_img1.png 8KB
back_img1.png 8KB
boss_1.png 8KB
boss_1.png 8KB
win.png 7KB
win.png 7KB
boss_2.png 6KB
boss_2.png 6KB
logo1.png 4KB
logo1.png 4KB
logo2.png 4KB
logo2.png 4KB
audio_on.png 3KB
audio_on.png 3KB
共 200 条
- 1
- 2
资源评论
- 冷寞2013-02-22不错,可以借鉴
- huanhongyi2013-04-19简单~对于新手的我来说受益了~谢谢
- 波波熊2013-04-06手机简单游戏来说已经很不错了
zhangpengcheng888
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功