📄 feiji_canvas.java~457~
字号:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import java.util.Random;
public class feiji_Canvas extends Canvas implements Runnable{
final int key_up = -1;
final int key_down = -2;
final int key_left = -3;
final int key_right = -4;
final int key_select = -5;
final int key_lsoft = -6;
final int key_rsoft = -7;
final int up = 2, down = 3, left = 5, right = 7, stop = 1;
int game_state=1;
final int game_state_start=1;
final int game_state_run=2;
final int game_state_over=3;
final int game_state_win=4;
Random r = new Random();
Thread t=new Thread(this);
Image feiji_ziji_tu,zidan_tu,beijing_tu,npc_feiji_tu1,baozha,npc_feiji_tu4,npc_feiji_tu5;
final int screen_W=176;
final int screen_H=208;
int feiji_ziji_x=70;//自己飞机的坐标
int feiji_ziji_y=170;
final int feiji_ziji_W=31;
final int feiji_ziji_H=23;
int feiji_ziji_yangzi=stop;
int feiji_ziji_speed=4;//自己飞机的速度
int feiji_ziji_hp=50;//飞机的生命值
boolean feiji_ziji_cunzai=true;//飞机存在
final int feiji_ziji_1=1;
int feiji_ziji_zidan_x_speed=0;//子弹x的速度
int feiji_ziji_zidan_y_speed=8;//子弹y的速度
int feiji_ziji_zidan_x;
int feiji_ziji_zidan_y;
int feiji_ziji_lei=3;
boolean fanglei=false;
final int feiji_ziji_zidan_W=16;
final int feiji_ziji_zidan_H=12;
int feiji_ziji_zidan_geshu=0;//屏幕上子弹个数
int feiji_ziji_zidan_weili=10;//子弹威力
int[][] feiji_ziji_zidan_shuzu=new int[40][6];//0是x坐标,1是y坐标,2是x方向速度,3是y方向速度,4是威力,5是种类
int feiji_ziji_zidan_paopao_time=6;//子弹攒泡泡需要的时间
int feiji_ziji_zidan_paopao_shu=0;
boolean feiji_ziji_zidan_paopao_queren=false;//按住确认
boolean feiji_ziji_zidan_paopao_anzhu=false;//按住状态
int feiji_ziji_zidan_paopao_anzhuweizhi=-1;//按住位置
int feiji_ziji_zidan_paopao_zuijin;//最近的泡泡
int[][] feiji_ziji_zidan_paopao_shuzu=new int[5][6];//0是x坐标,1是y坐标,2是x方向速度,3是y方向速度,4是威力,5是种类
int feiji_ziji_zidan_paopao_W=23;
int feiji_ziji_zidan_paopao_H=23;
int feiji_ziji_zidan_paopao_geshu=0;//屏幕上子弹泡泡的个数
int feiji_ziji_zidan_paopao_speed=6;
int feiji_ziji_zidan_paopao_weili=100;
boolean feiji_ziji_zidan_paopao_keyifashe=false;
boolean win=false;
int[][] daoju_shuzu=new int[10][7];//0是x坐标,1是y坐标,2是x方向速度,3是y方向速度,4是种类,5是宽,6是高
int beijing=0;//背景
int beijing_x=0;
int beijing_speed=4;
int[][] npc_feiji_shuzu=new int[40][12];//0是x坐标,1是y坐标,2是x方向速度,3是y方向速度,4是hp,5是种类(显示哪个图),6是动画桢(样子,飞行图片),7是状态(飞行方向),8是批次,9是记数器,10是宽,11是高
final int npc_feiji_W=32;
final int npc_feiji_H=32;
final int npc_feiji_state_up=5;
final int npc_feiji_state_down=1;
final int npc_feiji_state_left=7;
final int npc_feiji_state_right=3;
final int npc_feiji_state_upleft=6;
final int npc_feiji_state_upright=4;
final int npc_feiji_state_downleft=8;
final int npc_feiji_state_downright=2;
int[][] npc_zidan_shuzu=new int[80][9];//0是x坐标,1是y坐标,2是x方向速度,3是y方向速度,4是威力,5是宽,6是高,7是方向,8是计数器
long st,et;//起始时间,结束时间
final long WT=70;//等待时间
int jishuqi_time=0;
void paint_bejing(Graphics g){
g.setClip(0,0,screen_W,screen_H);
if(feiji_ziji_x<=10&&feiji_ziji_yangzi%left==0)beijing_x-=5;
if(feiji_ziji_x+10+23>=166&&feiji_ziji_yangzi%right==0)beijing_x+=5;
beijing%=320;
if(beijing_x<=0)beijing_x=0;
if(beijing_x>=481-screen_W)beijing_x=481-screen_W;
g.drawImage(beijing_tu,0-beijing_x,0+beijing,0);
g.drawImage(beijing_tu,0-beijing_x,0+beijing-320,0);
}
void paint_cls(Graphics g){
g.setClip(0,0,500,500);
g.setColor(0x0000ff);
g.fillRect(0,0,500,500);
g.setClip(0,0,500,500);
g.setColor(0x000000);
g.fillRect(0,0,screen_W,screen_H);
}
Image getImage(String s) { //传图片的方法
Image img = null;
try {
img = Image.createImage(s);
} catch (Exception e) {}
return img;
}
protected feiji_Canvas() {
this.setFullScreenMode(true);
feiji_ziji_tu=getImage("/player.png");
zidan_tu=getImage("/playerZidan.png");
beijing_tu=getImage("/1.png");
npc_feiji_tu1=getImage("/npc1.png");
baozha=getImage("/bao.png");
npc_feiji_tu4=getImage("/npc4.png");
npc_feiji_tu5=getImage("/npc5.png");
t.start();
}
void kaishi_chushihua(){
feiji_ziji_x=70;
feiji_ziji_y=170;
feiji_ziji_yangzi=stop;
feiji_ziji_hp=50;
feiji_ziji_lei=3;
feiji_ziji_zidan_weili=10;
for(int i=0;i<feiji_ziji_zidan_shuzu.length;i++){
feiji_ziji_zidan_shuzu[i][5]=0;
}
for(int i=0;i<feiji_ziji_zidan_paopao_shuzu.length;i++){
feiji_ziji_zidan_shuzu[i][5]=0;
}
for(int i=0;i<daoju_shuzu.length;i++){
daoju_shuzu[i][4]=0;
}
for(int i=0;i<npc_feiji_shuzu.length;i++){
npc_feiji_shuzu[i][5]=0;
}
for(int i=0;i<npc_zidan_shuzu.length;i++){
npc_zidan_shuzu[i][4]=0;
}
feiji_ziji_zidan_paopao_keyifashe=false;
win=false;
jishuqi_time=0;
}
protected void keyPressed(int code) {
switch(game_state){
case game_state_start:
switch(code){
case key_lsoft:
kaishi_chushihua();
game_state=game_state_run;
break;
}
break;
case game_state_win:
switch(code){
case key_lsoft:
game_state=game_state_start;
break;
}
break;
case game_state_run:
switch(code){
case key_lsoft:
if(feiji_ziji_lei>0){
fanglei=true;
}
break;
case key_up:
feiji_ziji_yangzi*=up;
break;
case key_down:
feiji_ziji_yangzi*=down;
break;
case key_left:
feiji_ziji_yangzi*=left;
break;
case key_right:
feiji_ziji_yangzi*=right;
break;
case key_select:
feiji_ziji_zidan_paopao_queren=true;
feiji_ziji_zidan_paopao_anzhu=true;
for(int i=0;i<feiji_ziji_zidan_paopao_shuzu.length;i++){
if(feiji_ziji_zidan_paopao_shuzu[i][5]==0){
feiji_ziji_zidan_paopao_anzhuweizhi=i;
break;
}
}
break;
}
break;
}
}
protected void keyReleased(int code) {
switch(game_state){
case game_state_run:
switch(code){
case key_up:
feiji_ziji_yangzi/=up;
break;
case key_down:
feiji_ziji_yangzi/=down;
break;
case key_left:
feiji_ziji_yangzi/=left;
break;
case key_right:
feiji_ziji_yangzi/=right;
break;
case key_select:
feiji_ziji_zidan_paopao_anzhu=false;
feiji_ziji_zidan_paopao_anzhuweizhi=-1;
if(!panduan_paopao()){
for(int i=0;i<feiji_ziji_zidan_shuzu.length;i++){
if(feiji_ziji_zidan_shuzu[i][5]==0){//种类为0
switch(feiji_ziji_zidan_weili){
case 10:
feiji_ziji_zidan_shuzu[i][0]=feiji_ziji_x+7;
feiji_ziji_zidan_shuzu[i][1]=feiji_ziji_y;
feiji_ziji_zidan_shuzu[i][3]=feiji_ziji_zidan_y_speed;
feiji_ziji_zidan_shuzu[i][4]=10;
feiji_ziji_zidan_shuzu[i][5]=feiji_ziji_1;
feiji_ziji_zidan_geshu++;
break;
case 20:
feiji_ziji_zidan_shuzu[i][0]=feiji_ziji_x;
feiji_ziji_zidan_shuzu[i][1]=feiji_ziji_y;
feiji_ziji_zidan_shuzu[i][3]=feiji_ziji_zidan_y_speed;
feiji_ziji_zidan_shuzu[i][4]=10;
feiji_ziji_zidan_shuzu[i][5]=feiji_ziji_1;
feiji_ziji_zidan_geshu++;
for(int j=0;j<feiji_ziji_zidan_shuzu.length;j++){
if(feiji_ziji_zidan_shuzu[j][5]==0){
feiji_ziji_zidan_shuzu[j][0]=feiji_ziji_x+16;
feiji_ziji_zidan_shuzu[j][1]=feiji_ziji_y;
feiji_ziji_zidan_shuzu[j][3]=feiji_ziji_zidan_y_speed;
feiji_ziji_zidan_shuzu[j][4]=10;
feiji_ziji_zidan_shuzu[j][5]=feiji_ziji_1;
feiji_ziji_zidan_geshu++;
break;
}
}
break;
}
break;
}
}
}
if(feiji_ziji_zidan_paopao_geshu>0){
feiji_ziji_zidan_paopao_keyifashe=true;
}
else{
feiji_ziji_zidan_paopao_queren = false;
feiji_ziji_zidan_paopao_shu=0;
feiji_ziji_zidan_paopao_geshu=0;
feiji_ziji_zidan_paopao_keyifashe=false;
}
break;
}
break;
}
}
boolean panduan_paopao(){//判断泡泡是否就在飞机上面
for(int i=0;i<feiji_ziji_zidan_paopao_shuzu.length;i++){
if(feiji_ziji_zidan_paopao_shuzu[i][5]!=0){
if(feiji_ziji_zidan_paopao_shuzu[i][1]>=feiji_ziji_y-23){//说明离的近
return true;
}
}
}
return false;
}
void next_feiji_ziji_movp(){//主角移动的方法
if(feiji_ziji_yangzi%up==0){
if(feiji_ziji_y-feiji_ziji_speed>=0){
feiji_ziji_y -= feiji_ziji_speed;
}else feiji_ziji_y=0;
}
if(feiji_ziji_yangzi%down==0){
if (feiji_ziji_y + feiji_ziji_speed <= screen_H - feiji_ziji_H) {
feiji_ziji_y += feiji_ziji_speed;
}else
feiji_ziji_y = screen_H - feiji_ziji_H;
}
if(feiji_ziji_yangzi%left==0){
if (feiji_ziji_x - feiji_ziji_speed >= 0) {
feiji_ziji_x -= feiji_ziji_speed;
}else
feiji_ziji_x = 0;
}
if(feiji_ziji_yangzi%right==0){
if (feiji_ziji_x + feiji_ziji_speed <= screen_W - feiji_ziji_W) {
feiji_ziji_x += feiji_ziji_speed;
}else
feiji_ziji_x = screen_W - feiji_ziji_W;
}
}
void next_feiji_ziji_zidan_movp(){////主角子弹移动的方法
if(feiji_ziji_zidan_geshu>0){
for(int i=0;i<feiji_ziji_zidan_shuzu.length;i++){
if(feiji_ziji_zidan_shuzu[i][5]!=0){
if(feiji_ziji_zidan_shuzu[i][0]-feiji_ziji_zidan_shuzu[i][2]>=0-feiji_ziji_zidan_W//左边出去
&&feiji_ziji_zidan_shuzu[i][0]+feiji_ziji_zidan_shuzu[i][2]<=screen_W//右边出去
&&feiji_ziji_zidan_shuzu[i][1]-feiji_ziji_zidan_shuzu[i][3]>=0-feiji_ziji_zidan_H//上边出去
&&feiji_ziji_zidan_shuzu[i][1]+feiji_ziji_zidan_shuzu[i][3]<=screen_H){//下边出去
feiji_ziji_zidan_shuzu[i][1]-=feiji_ziji_zidan_shuzu[i][3];
}else{
feiji_ziji_zidan_shuzu[i][5]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -