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

📄 hero.java

📁 J2ME手机游戏源码 整个游戏有八个类组成: &#61548 主类:TankMIDlet &#61548 敌人坦克:Enemy &#61548 图片池:EnemyPool &#61548
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

/*
 * @(#)Hero.java	0.20 02/11/07
 * Copyright (c) 2002 InterScape Creations. All Rights Reserved.
 */

import javax.microedition.lcdui.*;

class Hero 
{
    private static Graphics g = null;
    private Image imgHero;
    private Image imgCurrentDraw;
    private Image imgHeroLeft;
    private Image imgHeroRight;
    private Image imgHeroUp;
    private Image imgHeroDown;
    private Image imgHeroLeft1;
    private Image imgHeroRight1;
    private Image imgHeroUp1;
    private Image imgHeroDown1;
    private Image imgHeroLeft2;
    private Image imgHeroRight2;
    private Image imgHeroUp2;
    private Image imgHeroDown2;
    private Image imgExplode;
    public int status = 0; //1--normal 2--start 7--explode
    public int posX, posY;
    public int direction;  
    public int speed;
    public boolean shootFlag = false;
    public int bulletNo;
    public int bulletLevel = 0; //symbol the hero's bullet speed
    public int count;
    public int frameWidth, frameHeight;
    public boolean isCapped;
    boolean grassPaint = false;

    TankCanvas canvas;
    Hero(TankCanvas canvas)
    {
        posX = 0;//sony 108;
        posY = 0;//sony 148;
        this.canvas = canvas;

        status = 0;
        count = 40;
        bulletLevel = 0;
        direction = 3; // 1--left 2--right 3--up 4--down

        // Load the object images
            imgHero = canvas.createImage("/tank_p.png");
            frameWidth = imgHero.getWidth()/4;
            frameHeight = imgHero.getHeight();
            imgHeroLeft = Image.createImage(frameWidth, frameHeight);
            g = imgHeroLeft.getGraphics();
            g.drawImage(imgHero, 0, 0, g.TOP | g.LEFT);
            imgHeroRight = Image.createImage(frameWidth, frameHeight);
            g = imgHeroRight.getGraphics();
            g.drawImage(imgHero,  - frameWidth, 0, g.TOP | g.LEFT);
            imgHeroUp = Image.createImage(frameWidth, frameHeight);
            g = imgHeroUp.getGraphics();
            g.drawImage(imgHero,  - frameWidth * 2, 0, g.TOP | g.LEFT);
            imgHeroDown = Image.createImage(frameWidth, frameHeight);
            g = imgHeroDown.getGraphics();
            g.drawImage(imgHero,  - frameWidth * 3, 0, g.TOP | g.LEFT);
            
            imgHero = canvas.createImage("/tank_shell.png");
            imgHeroLeft1 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroLeft1.getGraphics();
            g.drawImage(imgHero, 0,  - frameHeight, g.TOP | g.LEFT);
            imgHeroRight1 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroRight1.getGraphics();
            g.drawImage(imgHero,  - frameWidth,  - frameHeight, g.TOP | g.LEFT);
            imgHeroUp1 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroUp1.getGraphics();
            g.drawImage(imgHero,  - frameWidth * 2,  - frameHeight, g.TOP | g.LEFT);
            imgHeroDown1 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroDown1.getGraphics();
            g.drawImage(imgHero,  - frameWidth * 3,  - frameHeight, g.TOP | g.LEFT);

            imgHeroLeft2 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroLeft2.getGraphics();
            g.drawImage(imgHero, 0, 0, g.TOP | g.LEFT);
            imgHeroRight2 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroRight2.getGraphics();
            g.drawImage(imgHero,  - frameWidth, 0, g.TOP | g.LEFT);
            imgHeroUp2 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroUp2.getGraphics();
            g.drawImage(imgHero,  - frameWidth * 2, 0, g.TOP | g.LEFT);
            imgHeroDown2 = Image.createImage(frameWidth, frameHeight);
            g = imgHeroDown2.getGraphics();
            g.drawImage(imgHero,  - frameWidth * 3, 0, g.TOP | g.LEFT);
          
            g = null;
            imgCurrentDraw = imgHeroUp1;//当前绘制为闪烁向上
            imgExplode = canvas.createImage("/explode.png");//爆炸

    }
    public void paint(Graphics g)
    {
        int fillposX = posX;//位置点
        int fillposY = posY;//位置点
        int fillwidth = frameWidth;
        int fillheigh = frameHeight;

        speed = canvas.tileW;
          
        g.setColor(0x0);

        grassPaint = false;
        if (((direction & 0x10) > 0) && (status < 2))
        {

            switch (direction & 0x0f)
            {
                case 1:
                  
                    if ((posX > canvas.mapOffsetX) && !isMapCollide())
                    {
                        posX -= speed;

                        fillposX = posX + frameWidth;
                        fillposY = posY;
                        fillwidth = speed;
                        fillheigh = frameHeight;
                    }

                    break;

                case 2:

                    if ((posX < (canvas.mapOffsetX +
                        canvas.mapWidth - frameWidth)) &&
                        !isMapCollide())
                    {
                        posX += speed;

                        fillposX = posX - speed;
                        fillposY = posY;
                        fillwidth = speed;
                        fillheigh = frameHeight;
                    }

                    break;

                case 3:

                    if ((posY > canvas.mapOffsetY) && !isMapCollide())
                    {
                        posY -= speed;
                   
                        fillposX = posX;
                        fillposY = posY + frameHeight;
                        fillwidth = frameWidth;
                        fillheigh = speed;
                    }

                    break;

                case 4:

                    if ((posY < (canvas.mapOffsetY +
                        canvas.mapHeight - frameHeight)) &&
                        !isMapCollide())
                    {
                        posY += speed;

                        fillposX = posX;
                        fillposY = posY - speed;
                        fillwidth = frameWidth;
                        fillheigh = speed;
                    }

                default:
                    break;
            }
            g.fillRect(fillposX, fillposY, fillwidth, fillheigh);
            
        }

        if (status == 0)
        {
            if (count > 0)
            {
                if ((count & 1) > 0)
                {
                    switch (direction & 0x0f)
                    {
                        case 1:
                            imgCurrentDraw = imgHeroLeft1;
                            break;

                        case 2:
                            imgCurrentDraw = imgHeroRight1;
                            break;

                        case 3:
                            imgCurrentDraw = imgHeroUp1;
                            break;

                        case 4:
                            imgCurrentDraw = imgHeroDown1;
                        default:
                            break;
                    }
                }
                else
                {
                    switch (direction & 0x0f)
                    {
                        case 1:
                            imgCurrentDraw = imgHeroLeft2;
                            break;

                        case 2:
                            imgCurrentDraw = imgHeroRight2;
                            break;

                        case 3:
                            imgCurrentDraw = imgHeroUp2;
                            break;

                        case 4:
                            imgCurrentDraw = imgHeroDown2;
                        default:
                            break;
                    }
                }
                count--;
            }
            else
            {

                status = 1;

                switch (direction & 0x0f)
                {
                    case 1:
                        imgCurrentDraw = imgHeroLeft;
                        break;

                    case 2:
                        imgCurrentDraw = imgHeroRight;
                        break;

                    case 3:
                        imgCurrentDraw = imgHeroUp;
                        break;

                    case 4:
                        imgCurrentDraw = imgHeroDown;
                    default:
                        break;
                }
            }


            g.drawImage(imgCurrentDraw, posX, posY, g.TOP | g.LEFT);

        }
        else if (status == 2)
        {
            g.drawImage(imgExplode, posX, posY, g.TOP | g.LEFT);

            if (count > 0)
                count--;
            else
            {
                g.fillRect(posX, posY, imgExplode.getWidth(),
                    imgExplode.getHeight());
                if (canvas.life > 1)
                {
                    canvas.life--;
                    
                    posX = canvas.mapOffsetX +
                        canvas.mapWidth / 2-
                        (canvas.tileWidth * 2+2) - frameWidth - 2;
                    posY = canvas.mapOffsetY +
                        canvas.mapHeight - frameHeight - 2;
                    status = 0;
                    count = 40;
                    direction = 3;
                    imgCurrentDraw = imgHeroUp1;
                }else canvas.isLose = true;

            }
        }else 
        {

            if (isCapped)
            {

                if ((count & 1) > 0)
                {
                    switch (direction & 0x0f)
                    {
                        case 1:
                            g.drawImage(imgHeroLeft2, posX, posY, g.TOP | g.LEFT);
                            break;

                        case 2:
                            g.drawImage(imgHeroRight2, posX, posY, g.TOP | g.LEFT);
                            break;

                        case 3:
                            g.drawImage(imgHeroUp2, posX, posY, g.TOP | g.LEFT);
                            break;
                        case 4:
                            g.drawImage(imgHeroDown2, posX, posY, g.TOP | g.LEFT);
                        default:
                            break;
                    }
                }
                else
                {
                    switch (direction & 0x0f)
                    {
                        case 1:
                            g.drawImage(imgHeroLeft1, posX, posY, g.TOP | g.LEFT);
                            break;

                        case 2:
                            g.drawImage(imgHeroRight1, posX, posY, g.TOP | g.LEFT);
                            break;

                        case 3:
                            g.drawImage(imgHeroUp1, posX, posY, g.TOP | g.LEFT);
                            break;
                        case 4:
                            g.drawImage(imgHeroDown1, posX, posY, g.TOP | g.LEFT);
                        default:
                            break;
                    }
                }
                count++;
            }
            else
            {
                switch (direction & 0x0f)
                {
                    case 1:

                        g.drawImage(imgHeroLeft, posX, posY, g.TOP | g.LEFT);
                        break;

                    case 2:
                   
                        g.drawImage(imgHeroRight, posX, posY, g.TOP | g.LEFT);
                        break;

                    case 3:
                        
                        g.drawImage(imgHeroUp, posX, posY, g.TOP | g.LEFT);
                        break;

⌨️ 快捷键说明

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