import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
public class Canvas_Main extends GameCanvas
{
private MIDlet_Main mainMIDlet;
private Graphics g;
private Random rd;
private Class_Map map;
private Image imgBulletBurst,imgAimSign;
private static Image[] imgTank;
private LayerManager lm;
//是否处于观察模式
boolean isDetect;
//是否处于弹药选择模式
private boolean isSelBullet;
//当前炮弹类型
static byte curBulType;
//线程是否终止
static boolean isThreadCancel;
//当前是否敌方回合
private boolean isEnemyTurn;
//我方剩余坦克数量
private byte aliveOwnTankCount;
//敌方剩余坦克数量
private byte aliveEnemyTankCount;
//我方坦克
static Class_Tank[] ownTank;
//敌方坦克
static Class_Tank[] enemyTank;
//炮弹爆炸火花
private Class_Burst bulletBurst;
//瞄准器
private Class_AimSign aimSign;
//AI坦克行为变化计数器
private byte AICount;
byte AI;
//回合持续时间记数
private short turnTimeCount;
//我方活动坦克索引 敌方活动坦克索引
private byte iOwnTankActive,iEnemyTankActive;
//爆炸火花是否消失
static boolean isTurnChange;
Thread t1;
protected Canvas_Main(MIDlet_Main mid)
{
super(false);
setFullScreenMode(true);
mainMIDlet=mid;
rd=new Random();
g=getGraphics();
imgTank=new Image[6];
try {
imgBulletBurst=Image.createImage("/imgBulletBurst.png");
imgAimSign=Image.createImage("/imgAimSign.png");
imgTank[0]=Image.createImage("/imgCarrot.png");
imgTank[1]=Image.createImage("/imgCannon.png");
imgTank[2]=Image.createImage("/imgCatapult.png");
imgTank[3]=Image.createImage("/imgMulti.png");
imgTank[4]=Image.createImage("/imgDuke.png");
imgTank[5]=Image.createImage("/imgIon.png");
} catch (IOException e1) {
e1.printStackTrace();
}
lm=new LayerManager();
map=new Class_Map(lm,Class_Map.ID);
bulletBurst=new Class_Burst(imgBulletBurst,(byte)16,(byte)16);
aimSign=new Class_AimSign(imgAimSign,(byte)8,(byte)8);
ownTank=new Class_Tank[Class_Map.ownTankNum];
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
ownTank[i]=new Class_Tank(imgTank[i%3],(byte)22,(byte)16,(byte)(i%3));
//根据出生点ID来设置坦克初始位置
ownTank[i].CPID=ownTank[i].setCP((byte) (i*2));
}
enemyTank=new Class_Tank[Class_Map.enemyTankNum];
for(byte i=0;i<Class_Map.enemyTankNum;i++)
{
enemyTank[i]=new Class_Tank(imgTank[i%3+3],(byte)22,(byte)16,(byte)(i%3+3));
enemyTank[i].CPID=enemyTank[i].setCP((byte) (i*2+1));
}
//从地图信息中读取数值来初始化存活坦克数量
aliveOwnTankCount=Class_Map.ownTankNum;
aliveEnemyTankCount=Class_Map.enemyTankNum;
t1=new Thread()
{
public void run()
{
if(!isThreadCancel)
{
long start=System.currentTimeMillis();
//处理回合轮换
setTurnChange();
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
//处理我方坦克在屏幕中
ownTank[i].setView(lm);
ownTank[i].setLimit();
//如果我方坦克处于活动状态
if(ownTank[i].isActive)
{
//如果该坦克没死
if(ownTank[i].HP>0)
{
turnTimeCount++;
if(turnTimeCount>200)isTurnChange=true;
aimSign.add(lm);
aimSign.setMove(ownTank[i]);
ownTank[i].setMove();
Class_Camera.setFollow(ownTank[i]);
ownTank[i].setBulSel();
ownTank[i].setAim(lm);
ownTank[i].setCharge();
}
//否则结束当前回合
else
isTurnChange=true;
}
if(ownTank[i].bullet.isVisible())
{
//处理子弹移动
ownTank[i].bullet.setMove(ownTank[i],lm);
Class_Camera.setFollow(ownTank[i].bullet);
}
}
for(byte i=0;i<Class_Map.enemyTankNum;i++)
{
enemyTank[i].setView(lm);
enemyTank[i].setLimit();
if(enemyTank[i].isActive)
{
if(enemyTank[i].HP>0)
{
turnTimeCount++;
if(turnTimeCount>200)isTurnChange=true;
aimSign.add(lm);
aimSign.setMove(enemyTank[i]);
setEnemyTankAI();
Class_Camera.setFollow(enemyTank[i]);
ownTank[i].setBulSel();
enemyTank[i].setAim(lm);
}else
isTurnChange=true;
}
if(enemyTank[i].bullet.isVisible())
{
enemyTank[i].isActive=false;
enemyTank[i].bullet.setMove(enemyTank[i],lm);
Class_Camera.setFollow(enemyTank[i].bullet);
}
}
//处理炮弹爆炸火花
bulletBurst.setBurst(lm);
//处理碰撞探测
collides();
//处理摄象机移动
setCameraMove();
lm.setViewWindow(Class_Camera.x,Class_Camera.y,Class_Camera.width,Class_Camera.height);
lm.paint(g,0,0);
long end=System.currentTimeMillis();
showMessage();
flushGraphics();
int time=(int)(end-start);
// System.out.println(time);
try {
if(time<80)
Thread.sleep(80-time);
} catch (InterruptedException e) {
e.printStackTrace();
}
mainMIDlet.dis.callSerially(this);
}
}
};
t1.start();
}
protected void keyPressed(int keyCode)
{
switch(keyCode)
{
case -3:
case 52:
{
if(isSelBullet)
{
if(curBulType==0)
curBulType=3;
else curBulType--;
}else if(!isDetect&&Class_Camera.x==Class_Camera.x0&&Class_Camera.y==Class_Camera.y0)
{
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
if(ownTank[i].isActive)
{
ownTank[i].isAim=false;
ownTank[i].direction=1;
break;
}
}
}
break;
}
case -4:
case 54:
{
if(isSelBullet)
{
if(curBulType==3)
curBulType=0;
else curBulType++;
}else if(!isDetect&&Class_Camera.x==Class_Camera.x0&&Class_Camera.y==Class_Camera.y0)
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
if(ownTank[i].isActive)
{
ownTank[i].isAim=false;
ownTank[i].direction=2;
break;
}
}
break;
}
case 56:
case -1:
{
if(isSelBullet)
{
if(curBulType==0)
curBulType=3;
else curBulType--;
}else if(!isDetect&&Class_Camera.x==Class_Camera.x0&&Class_Camera.y==Class_Camera.y0)
{
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
if(ownTank[i].isActive)
{
ownTank[i].isAim=true;
ownTank[i].aimRotaDir=1;
break;
}
}
}
break;
}
case 50:
case -2:
{
if(isSelBullet)
{
if(curBulType==3)
curBulType=0;
else curBulType++;
}else if(!isDetect&&Class_Camera.x==Class_Camera.x0&&Class_Camera.y==Class_Camera.y0)
{
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
if(ownTank[i].isActive)
{
ownTank[i].isAim=true;
ownTank[i].aimRotaDir=2;
break;
}
}
}
break;
}
case 53:
case -5:
{
if(!isDetect&&!isSelBullet&&Class_Camera.x==Class_Camera.x0&&Class_Camera.y==Class_Camera.y0)
{
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
if(ownTank[i].isActive)
{
ownTank[i].isAim=false;
ownTank[i].isCharge=true;
break;
}
}
}
break;
}
case -7:
{
isThreadCancel=true;
Canvas_StageSelect.isThreadCancel=false;
mainMIDlet.dis.setCurrent(new Canvas_StageSelect(mainMIDlet));
break;
}
case 49:
{
if(!isSelBullet)
{
isDetect=!isDetect;
for(byte i=0;i<Class_Map.ownTankNum;i++)
{
if(ownTank[i].isActive)
{
ownTank[i].isAim=false;
ownTank[i].isCharge=false;
break;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
J2me疯狂坦克游戏源码!!!!!!!1
共75个文件
png:28个
class:28个
java:11个
2星 需积分: 10 20 下载量 57 浏览量
2009-08-04
17:56:14
上传
评论
收藏 203KB RAR 举报
温馨提示
J2me疯狂坦克游戏源码!!!!!!!1J2me疯狂坦克游戏源码!!!!!!!1
资源推荐
资源详情
资源评论
收起资源包目录
J2me疯狂坦克游戏源码.rar (75个子文件)
codefans.net
CrazyTank
Class_Tank.class 6KB
Class_Burst.java 667B
Class_Bullet.java 2KB
.project 531B
Class_Tank.java 5KB
imgMulti.png 358B
Canvas_Main.java 19KB
Class_GameObject.java 1KB
Class_AimSign.class 977B
imgBullet2.png 193B
Class_Bullet.class 2KB
imgBulletBurst.png 2KB
Canvas_Menu.class 5KB
CrazyTank.jad 222B
Class_AimSign.java 770B
Class_Camera.java 2KB
MIDlet_Main.class 1KB
imgDuke.png 360B
Canvas_StageSelect.java 4KB
deployed
CrazyTank.jar 65KB
CrazyTank.jad 246B
Canvas_StageSelect.class 5KB
imgIon.png 334B
imgBullet0.png 193B
imgBackGround.png 486B
Canvas_Menu$1.class 1KB
imgAimSign.png 176B
imgCannon.png 360B
imgCarrot.png 370B
Canvas_Menu.java 6KB
verified
libs
classes
Class_Tank.class 6KB
imgMulti.png 358B
Class_AimSign.class 1022B
imgBullet2.png 193B
Class_Bullet.class 2KB
imgBulletBurst.png 2KB
Canvas_Menu.class 5KB
MIDlet_Main.class 1KB
imgDuke.png 360B
Canvas_StageSelect.class 5KB
imgIon.png 334B
imgBullet0.png 193B
imgBackGround.png 486B
Canvas_Menu$1.class 1KB
imgAimSign.png 176B
imgCannon.png 360B
imgCarrot.png 370B
imgBullet3.png 193B
Thumbs.db 24KB
Class_Burst.class 1KB
imgBullet1.png 193B
Canvas_StageSelect$1.class 1KB
imgCatapult.png 358B
Class_Map.class 10KB
Class_GameObject.class 2KB
Canvas_Main$1.class 3KB
Class_Camera.class 2KB
Canvas_Main.class 13KB
imgMenu.png 18KB
MIDlet_Main.java 795B
imgBullet3.png 193B
Thumbs.db 24KB
Class_Burst.class 1KB
imgBullet1.png 193B
Canvas_StageSelect$1.class 1KB
imgCatapult.png 358B
Class_Map.class 10KB
.eclipseme 143B
Class_GameObject.class 2KB
Canvas_Main$1.class 3KB
.classpath 226B
Class_Map.java 10KB
Class_Camera.class 2KB
Canvas_Main.class 12KB
imgMenu.png 18KB
共 75 条
- 1
资源评论
- lichen_net2014-05-30折腾半天没能跑起来,有点晕...
jsd117
- 粉丝: 1
- 资源: 101
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功