import java.io.IOException;
import java.util.Random;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.midlet.MIDlet;
public class planCanvas extends Canvas implements Runnable {
int width;
int height;
int backY;
int shipX, shipY;
int ballX, ballY;
Image backImg;
Image shipImg;
Image shortBexImg;
Image longBexImg;
Image giftImg;
Image bombPlan;
Image menuItem;
Image bgCenter;
Image bgleft;
Image fleetImg;
Image enemyFire2;
Image trackImg;
Image[] enemyPlanImgs = new Image[8];
Image[] fireImgs = new Image[3];
Image[] shieldImgs=new Image[2];
Image[] trackImgs=new Image[36];
boolean up, down, left, right, fire;
// ball theBalls[]=new ball[30];
int[][] Balls = new int[60][7];// active , x , y , type,angle,锁定目标,锁定角度
int[][] enemyPlan = new int[10][5];// active, x , y , type,blood
int[][] bexImgs = new int[20][6];// active , x , y,time, orFinished, orBombPlan
int[][] giftImgs = new int[2][6];// active,x,y,moveX,moveY,type
int [][] shields=new int [12][6];//active,x,y,angle,circle,R
int [][] menuItems=new int [4][3];//active,x,y
int[][] fleets = new int[14][4];//0/1,x,y,startX
int [][] fleetsSin=new int [14][4];//active,x,y,angle
int [][] enemyFire=new int [14][6];//active,x,y,PX,PY,count
Vector vector=new Vector();
Vector ghost=new Vector();
Vector testVector=new Vector();
int theCount = 0;
int fireType = 1;
boolean orLight,orBomb,orShields;
int lightCount,bombY,shieldStep,shieldCount;
Font font=Font.getDefaultFont();
int view;
int menuItemSpaceX;
int menuItemSpaceY;
int cruser=0,cruserCount=100;
int extend;
int bgCenterY;
int bgCenterV;
String[] menuStr = {"开始游戏", "游戏帮助", "游戏说明", "退出游戏"};
int cos[]={1000,
984,
939,
866,
766,
642,
499,
342,
173,
0,
-173,
-342,
-500,
-642,
-766,
-866,
-939,
-984,
-1000,
-984,
-939,
-866,
-766,
-642,
-499,
-342,
-173,
0,
173,
342,
499,
642,
766,
866,
939,
984};
int sin[]={0,
173,
342,
500,
642,
766,
866,
939,
984,
1000,
984,
939,
866,
766,
642,
500,
342,
173,
0,
-173,
-342,
-500,
-642,
-766,
-866,
-939,
-984,
-1000,
-984,
-939,
-866,
-766,
-642,
-499,
-342,
-173};
int tan[]={0,
176,
363,
577,
839,
1191,
1732,
2747,
5671};
public planCanvas() {
this.setFullScreenMode(true);
width = this.getWidth();
height = this.getHeight();
view=0;
extend=0;
try {
menuItem=Image.createImage("/imgMenu.png");
bgCenter=Image.createImage("/bgcenter.png");
bgleft=Image.createImage("/bgleft.png");
backImg = Image.createImage("/3.png");
shipImg = Image.createImage("/myPlane2.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
menuItemSpaceX=(width-menuItem.getWidth())/2;
menuItemSpaceY=(height-4*menuItem.getHeight())/5;
for(int i=0;i<menuItems.length;i++){
if(menuItems[i][0]==0){
menuItems[i][0]=1;
menuItems[i][1]=-menuItem.getWidth();
menuItems[i][2]=menuItemSpaceY*(i+1)+menuItem.getHeight()*i;
}
}
shipX = (width - shipImg.getWidth()) / 2;
shipY = height - shipImg.getHeight();
bgCenterY=height-bgCenter.getHeight();
Thread thread = new Thread(this);
thread.start();
}
void gameInit(){
try {
shortBexImg = Image.createImage("/bullet12.png");
giftImg = Image.createImage("/ball1.png");
bombPlan=Image.createImage("/bell3.png");
fleetImg=Image.createImage("/ememyFleet.png");
enemyFire2=Image.createImage("/fir2.png");
trackImg=Image.createImage("/m1.png");
for (int i = 0; i < enemyPlanImgs.length; i++) {
enemyPlanImgs[i] = Image.createImage("/fleet" + (i+1) + ".png");
}
for (int i = 0; i < fireImgs.length; i++) {
fireImgs[i] = Image.createImage("/fire" + (i + 1) + ".png");
}
for(int i=0;i<shieldImgs.length;i++){
shieldImgs[i]=Image.createImage("/shield"+(i+1)+".png");
}
//创建36张跟踪导弹图片
for(int i=0;i<trackImgs.length;i++){
if(i==0){
trackImgs[i]=rotate(trackImg, trackImg.getWidth()/2, trackImg.getHeight()/2, 1);
}else{
trackImgs[i]=rotate(trackImg, trackImg.getWidth()/2, trackImg.getHeight()/2, i*10);
}
}
longBexImg = Image.createImage("/bex.png");
shieldCount=0;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
backY = height - backImg.getHeight();
bombY = height;
}
int menuBreak;
protected void paint(Graphics g){
switch(view){
case 0:{
g.setColor(255, 255, 255);
g.fillRect(0, 0, width, height);
g.drawImage(backImg, 0, height-backImg.getHeight(), 20);
cruserCount=cruserCount+20>255?100:cruserCount+20;
for(int i=0;i<menuItems.length;i++){
if(menuItems[i][0]==1){
menuItems[i][1]+=15;
if(menuItems[i][1]>=menuItemSpaceX){
menuItems[i][1]=menuItemSpaceX;
if(i==menuBreak){
menuBreak++;
}
}
g.drawImage(menuItem, menuItems[i][1], menuItems[i][2], 20);
if(i==cruser){
g.setColor(cruserCount, 0, 0);
}
else{
g.setColor(255, 255, 255);
}
g.drawString(menuStr[i], menuItems[i][1]+20, menuItems[i][2]+3, 20);
if(i>=menuBreak){
break;
}
}
}
break;
}
case 1:{
if( bgCenterY-bgCenter.getHeight()-backImg.getHeight()>=height-backImg.getHeight()){
view=5;
}
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
g.drawImage(backImg, 0, bgCenterY-bgCenter.getHeight()-backImg.getHeight(), 20);
g.drawImage(bgCenter, 0, bgCenterY-bgCenter.getHeight(), 20);
g.drawImage(bgCenter, 0, bgCenterY, 20);
g.drawImage(shipImg, shipX, shipY, 20);
extend+=5;
if(extend>=width/2){
bgCenterY+=bgCenterV;
bgCenterV++;
}
g.drawImage(bgleft, width/2-bgleft.getWidth()-extend, 0, 20);
g.drawRegion(bgleft, 0, 0, bgleft.getWidth(), bgleft.getHeight(), Sprite.TRANS_MIRROR, width/2+extend, 0, 20);
break;
}
case 2:{
g.setColor(255, 255, 255);
g.fillRect(0, 0, width, height);
g.setColor(0, 0, 0);
g.drawString("游戏帮助", 0, 0, 20);
break;
}
case 3:{
g.setColor(255, 255, 255);
g.fillRect(0, 0, width, height);
g.setColor(0, 0, 0);
g.drawString("游戏说明", 0, 0, 20);
break;
}
case 4:{
g.setColor(255, 255, 255);
g.fillRect(0, 0, width, height);
g.setColor(0, 0, 0);
g.drawString("退出游戏", 0, 0, 20);
break;
}
case 5:{
mainPaint(g);
break;
}
}
}
protected void mainPaint(Graphics g) {
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
// 画背景图片
g.drawImage(backImg, 0, backY, 20);
g.drawImage(backImg, 0, backY - backImg.getHeight(), 20);
// 画战机
g.drawImage(shipImg, shipX, shipY, 20);
// 画子弹
for (int i = 0; i < Balls.length; i++) {
if (Balls[i][0] == 1) {
/*
* g.setColor(0xff0000); g.fillRect(Balls[i][1], Balls[i][2], 4,
* 10);
*/
if(Balls[i][3]!=6){
g.drawImage(fireImgs[(Balls[i][3] - 1) % 3], Balls[i][1],
Balls[i][2], 20);
}
else{
g.drawImage(trackImgs[Balls[i][4
j2me 飞机射击游戏
3星 · 超过75%的资源 需积分: 9 163 浏览量
2011-06-10
15:59:35
上传
评论 2
收藏 315KB RAR 举报
chuccdeccyincc
- 粉丝: 4
- 资源: 15
最新资源
- 人工智能ai相关教学课程快
- Suno的冲击-AI音乐来了-学习备用.pdf
- KIMI大模型浏览器插件
- b61fa64a08a02de0e0d49d53bb84c444.amr
- 分布式系统中Java后端开发技术及其应用实践.pdf
- 5ffd9193f6aec31bbf16030a46680dc7.avi
- DA14531-蓝牙传感器连接传输数据固件
- 极限存在准则与两个重要极限
- logisim实验MIPS运算器(ALU)设计(内含4位先行进位74182、四位快速加法器、32位快速加法器)-Educoder_logisim里面连线,实现4位先行进位74182和4位快速加法器-C
- 高等数学第一章第二节数列的极限
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈