⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamestart.java

📁 j2me编的非常非常非常简单的深海大战游戏源码...适用机型:支持CLDC1.0,MIDP2.0,分辨率128*96
💻 JAVA
字号:
/*
 * GameStart.java
 *
 * Created on 2005年12月10日, 下午11:26
 */

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import java.util.Random;
import java.io.*;

/**
 *
 * @author  myStone
 * @version
 */
public class GameStart extends Canvas implements Runnable {
    
    MIDlet parent;
    public static final int MAXLIFE=20;
    public static final int MAXBOMB=3;
    public static final int MAXSUBM=3;
    public static final int MAXTORP=5;
    public static final int MAXEXPL=4;
    public static final int sealevel=27;
    public static boolean isRestart;
    public static Image bg,imgBomb,imgShip,imgSubl,imgSubr,imgTorp;
    public static Image[] imgExpl;
    public static int width,height;
    
    clsBomb[] bomb;
    clsTorp[] torp;
    clsSubm[] subm;
    clsExpl[] expl;
    clsShip ship;
    Random rand;
    Image bufImg;
    Graphics g;
    
    /**
     * constructor
     */
    public GameStart(MIDlet parentMIDlet) {
        try{
        parent=parentMIDlet;
        bg=Image.createImage("/img/bg.png");
        imgBomb=Image.createImage("/img/bomb.png");
        imgShip=Image.createImage("/img/ship.png");
        imgSubl=Image.createImage("/img/subl.png");
        imgSubr=Image.createImage("/img/subr.png");
        imgTorp=Image.createImage("/img/torp.png");
        int i;
        imgExpl=new Image[15];
        for(i=0;i<imgExpl.length;i++)imgExpl[i]=Image.createImage("/img/Expl"+i+".png");
        width=getWidth();
        height=getHeight();
        bomb=new clsBomb[MAXBOMB];
        torp=new clsTorp[MAXTORP];
        subm=new clsSubm[MAXSUBM];
        expl=new clsExpl[MAXEXPL];
        for(i=0;i<MAXBOMB;i++)bomb[i]=new clsBomb();
        for(i=0;i<MAXTORP;i++)torp[i]=new clsTorp();
        for(i=0;i<MAXSUBM;i++)subm[i]=new clsSubm();
        for(i=0;i<MAXEXPL;i++)expl[i]=new clsExpl();
        ship=new clsShip();
        rand=new Random();
        bufImg=Image.createImage(width,height);
        
        }catch(Exception e){ e.printStackTrace();}
    }
    
    /**
     * paint
     */
    public void paint(Graphics g) {
        g.drawImage(bufImg,(getWidth()-bufImg.getWidth())/2,
                             (getHeight()-bufImg.getHeight())/2,20);
    }
    
    public void showNotify()
    {
        new Thread(this).start();
    }
    
    public void run()
    {
        g=bufImg.getGraphics();       
        g.setColor(0x0000ff);
        int i,n;
        boolean isDead=false;
        isRestart=false;
        ship.init();
       
        while(true)
        {
            if(isRestart)
            {
                g.setColor(0x0000ff);
                for(i=0;i<MAXSUBM;i++)subm[i].used=false;
                for(i=0;i<MAXBOMB;i++)bomb[i].used=false;
                for(i=0;i<MAXTORP;i++)torp[i].used=false;
                for(i=0;i<MAXEXPL;i++)expl[i].used=false;
                ship.init();
                isRestart=false;
            }
            g.drawImage(bg,0,0,20);
            if(ship.life<=MAXLIFE/4)
            {
                if(g.getColor()==0x0000ff)g.setColor(0xff0000);
                else g.setColor(0x0000ff);
            }
            g.drawString("分数:"+ship.score,0,0,20);
            g.drawString("生命:"+ship.life,64,0,20);
            
            if(ship.used)ship.draw(g);
            for(i=0;i<MAXEXPL;i++)if(expl[i].used)expl[i].draw(g);
            for(i=0;i<MAXSUBM;i++)
            {
                if(subm[i].used)
                {
                    subm[i].draw(g);
                    if(rand.nextInt()/2>rand.nextInt())subm[i].fire();
                }
                else if(rand.nextInt()/2>rand.nextInt())subm[i].init();
            }
           
            for(i=0;i<MAXBOMB;i++)
            {
                if(bomb[i].used)
                {
                    bomb[i].draw(g);
                    for(n=0;n<MAXSUBM;n++)
                        if(subm[n].used)
                            if( (bomb[i].x>=subm[n].x-bomb[i].width/2)
                                & (bomb[i].x<=subm[n].x+subm[n].width-bomb[i].width/2)
                                & (bomb[i].y>=subm[n].y-bomb[i].height*3/4)
                                & (bomb[i].y<=subm[n].y+subm[n].height-bomb[i].height*3/4)
                              )
                            {
                                subm[n].expl();
                                ship.score++;
                                subm[n].used=false;
                                break;
                            }

                    if(n<MAXSUBM)bomb[i].used=false;
                    
                }
            }
            
            for(i=0;i<MAXTORP;i++)
            {
                if(torp[i].used)
                {
                    torp[i].draw(g);
                    if(ship.used)
                        if((torp[i].x>=ship.x-torp[i].width/2) 
                         & (torp[i].x<=ship.x+ship.width-torp[i].width/2)
                         & (torp[i].y>=ship.y-torp[i].height*3/4)
                         & (torp[i].y<=ship.y+ship.height-torp[i].height*3/4)
                          )
                        {
                            ship.expl();
                            ship.life--;
                            if(ship.life==0)
                            {
                                ship.used=false;
                                isDead=true;
                            }
                            torp[i].used=false;
                            
                        }
                }
            }
            repaint();
            try{
                Thread.sleep(20);
            }catch(Exception e){}
         }
    }
    
    /**
     * Called when a key is pressed.
     */
    protected  void keyPressed(int keyCode) {
        
                if(keyCode==KEY_NUM4)
                {
                    if(ship.v>=0)ship.v=-1;
                    else 
                    {
                        ship.v--;
                        if(ship.v<=-3)ship.v=-3;
                    }
                    
                }else
                if(keyCode==KEY_NUM6)
                {
                    if(ship.v<=0)ship.v=1;
                    else 
                    {
                        ship.v++;
                        if(ship.v>=3)ship.v=3;
                    }
                    
                }else
                if(keyCode==KEY_NUM8)
                {
                    ship.v=0;
                }else
                if(keyCode==KEY_NUM5)
                {
                    ship.fire();
                }
    }
    
    /**
     * Called when a key is released.
     */
    protected  void keyReleased(int keyCode) {
    }
    
    /**
     * Called when a key is repeated (held down).
     */
    protected  void keyRepeated(int keyCode) {
    }
    
    /**
     * Called when the pointer is dragged.
     */
    protected  void pointerDragged(int x, int y) {
    }
    
    /**
     * Called when the pointer is pressed.
     */
    protected  void pointerPressed(int x, int y) {
    }
    
    /**
     * Called when the pointer is released.
     */
    protected  void pointerReleased(int x, int y) {
    }
    
    public class clsBomb
    {
        int x;
        int y;
        int width;
        int height;
        public boolean used;
        public void clsBomb()
        {
            used=false;
        }
        
        public void init()
        {
            width=GameStart.imgBomb.getWidth();
            height=GameStart.imgBomb.getHeight();
            x=ship.x+7;
            y=ship.y;
            used=true;
        }
        public void draw(Graphics g)
        {
            g.drawImage(GameStart.imgBomb,x,y++,20);
            if(y>GameStart.height)used=false;
        }
    }
    
    public class clsShip
    {
        int x;
        int y;
        int life;
        int score;
        int v;
        int width;
        int height;
        public boolean used;
        public void clsShip()
        {
            used=false;
        }
        
        public void init()
        {
            width=GameStart.imgShip.getWidth();
            height=GameStart.imgShip.getHeight();
            x=(GameStart.width-width)/2;
            y=GameStart.sealevel-height;
            life=GameStart.MAXLIFE;
            score=0;
            v=0;
            used=true;
        }
        
        public void draw(Graphics g)
        {
            g.drawImage(GameStart.imgShip,x,y,20);
            x+=v;
            if(x+width>GameStart.width)x-=v;
            else if(x<0)x=0;
        }
        
        public void fire()
        {
            int i;
            for(i=0;i<MAXBOMB;i++)
            {
                if(!bomb[i].used)
                {
                    bomb[i].init();
                    break;
                }
            }
        }
        
        public void expl()
        {
            int i;
            for(i=0;i<MAXEXPL;i++)
            {
                if(!expl[i].used)
                {
                    expl[i].init(this);
                    break;
                }
            }
        }
    }
    
    public class clsTorp
    {
        int x;
        int y;
        int width;
        int height;
        public boolean used;
        public void clsTorp()
        {
            used=false;
        }
        
        public void init(clsSubm subm)
        {
            width=GameStart.imgTorp.getWidth();
            height=GameStart.imgTorp.getHeight();
            x=subm.x+7;
            y=subm.y;
            used=true;
            
        }
        public void draw(Graphics g)
        {
            g.drawImage(GameStart.imgTorp,x,y--,20);
            if(y+height/2<GameStart.sealevel)used=false;
        }
    }
    
    public class clsSubm
    {
        int x;
        int y;
        int width;
        int height;
        public int v;
        public boolean dir;
        public boolean used;
      
        public void clsSubm()
        {
            used=false;
        }
        
        public void init()
        {
            width=GameStart.imgSubl.getWidth();
            height=GameStart.imgSubl.getHeight();
            dir=(rand.nextInt()>rand.nextInt());
            
            if(dir)
            {
                x=GameStart.width;
                v=-1;
            }
            else
            {
                x=-GameStart.imgSubr.getWidth();
                v=1;
            }
             
            y=(GameStart.height-GameStart.sealevel)/2+GameStart.sealevel;
            used=true;
        }
        
        public void draw(Graphics g)
        {
            if(dir)
            {
                g.drawImage(GameStart.imgSubl,x,y,20);
                x+=v;
                if(x+GameStart.imgSubl.getWidth()<0)used=false;
            }
            else
            {
                g.drawImage(GameStart.imgSubr,x,y,20);
                x+=v;
                if(x>GameStart.width)used=false;
            }
            
            
        }
        
        public void fire()
        {
            int i;
            for(i=0;i<MAXTORP;i++)
            {
                if(!torp[i].used)
                {
                    torp[i].init(this);
                    break;
                }
            }
        }
        
        public void expl()
        {
            int i;
            for(i=0;i<MAXEXPL;i++)
            {
                if(!expl[i].used)
                {
                    expl[i].init(this);
                    break;
                }
            }
        }
    }
    
    public class clsExpl
    {
        int x;
        int y;
        int width;
        int height;
        public boolean used;
        int index;
        public void clsExpl()
        {
            used=false;
        }
        public void init(clsShip ship)
        {
            width=GameStart.imgExpl[0].getWidth();
            height=GameStart.imgExpl[0].getHeight();
            x=ship.x+ship.width/2-width/2;
            y=ship.y+ship.height/2-height/2;
            index=0;
            used=true;
        }
        public void init(clsSubm subm)
        {
            width=GameStart.imgExpl[0].getWidth();
            height=GameStart.imgExpl[0].getHeight();
            x=subm.x+subm.width/2-width/2;
            y=subm.y+subm.height/2-height/2;
            index=0;
            used=true;
        }
        public void draw(Graphics g)
        {
            g.drawImage(GameStart.imgExpl[index++],x,y,20);
            if(index>=15)used=false;
        }
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -