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

📄 lpdrawmanage.java

📁 j2me 上的 超级马力游戏 代码 超级马力游戏 代码
💻 JAVA
字号:
/**
 * <p>Title: lipeng</p>
 * <p>Description:
 * You cannot remove this copyright and notice.
 * You cannot use this file without the express permission of the author.
 * All Rights Reserved</p>
 * <p>Copyright: lizhenpeng (c) 2004</p>
 * <p>Company: LP&P</p>
 * @author lizhenpeng
 * @version 1.0.3
 * <p>
 * Revise History
 * 2004.07.12 Revise magic number may reduce speed V1.0.1
 * 2004.07.28 remove setclip back to full screen V1.0.2
 * 2004.08.12 revise function name first letter to small V1.0.3
 * </p>
 */

package lipeng;


import javax.microedition.lcdui.*;
import java.util.*;



public class LPDrawManage
{
  private int width;
  private int height;
  private int currentHeight=0;
  private int currentWidth=0;
  private int nX=0;
  private int nY=0;
  private int beginX=0;
  private int beginY=0;
  private int tempX;
  private int tempY;
  private char arrayNum=0;
  public LPDrawManage(int width,int height)
  {
    this.width = width;
    this.height = height;
  }

  public void drawMaps(Graphics g, LPMaps maps[])
  {
    int i = 0;

    for (i = 0; i < maps.length; i++)
    {
      beginX = 0;
      beginY = 0;
      nX = maps[i].x % maps[i].tileSize;
      nY = maps[i].y % maps[i].tileSize;
      while (true)
      {
        while (true)
        {
          //if array's num is 0xff, map is not draw;
          tempY = ( (beginX + maps[i].x) / maps[i].tileSize) % maps[i].w;
          tempX = ( (beginY + maps[i].y) / maps[i].tileSize) % maps[i].h;
          if (tempY < 0 || tempX < 0)
          {
            beginY += maps[i].tileSize;
            continue;
          }
          arrayNum = (char) (maps[i].mapArray[tempX][tempY] & (0x00FF));
          if (arrayNum != 0xff)
          {
            currentWidth = beginX - nX;
            currentHeight =
              beginY - (arrayNum * maps[i].tileSize);
            g.setClip(currentWidth, beginY - nY, maps[i].tileSize,
                      maps[i].tileSize);
            g.drawImage(maps[i].image.image, currentWidth, currentHeight - nY,
                        Graphics.LEFT | Graphics.TOP);
           // g.setClip(0, 0, width, height);
          }
          if (beginY < height)
          {
            beginY += maps[i].tileSize;
          }
          else
          {
            break;
          }
        }
        if (beginX < width)
        {
          beginX += maps[i].tileSize;
          beginY = 0;
        }
        else
        {
          break;
        }
      }
    }
  }
  public void drawMaps(Graphics g, LPMaps maps)
  {
    currentHeight = 0;
    currentWidth = 0;
    nX = 0;
    nY = 0;
    beginX = 0;
    beginY = 0;
    arrayNum = 0;
    if (maps.x < 0)
    {
      maps.x += maps.w * maps.tileSize;
    }
    if (maps.y < 0)
    {
      maps.y += maps.h * maps.tileSize;
    }
    nX = (maps.x) % maps.tileSize;
    nY = (maps.y) % maps.tileSize;
    while (true)
    {
      while (true)
      {
        tempY = ( (beginX + maps.x) / maps.tileSize) % maps.w;
        tempX = ( (beginY + maps.y) / maps.tileSize) % maps.h;
        if (tempY < 0 || tempX < 0)
        {
          beginY += maps.tileSize;
          continue;
        }
        arrayNum = (char) (maps.mapArray[tempX][tempY] & (0x00FF));
        if (arrayNum != 0xFF)
        {
          currentWidth = beginX - nX;
          currentHeight = beginY - (arrayNum * maps.tileSize);
          g.setClip(currentWidth, beginY - nY, maps.tileSize, maps.tileSize);
          g.drawImage(maps.image.image, currentWidth, currentHeight - nY,
                      Graphics.LEFT | Graphics.TOP);
         // g.setClip(0, 0, width, height);
        }
        if (beginY < height)
        {
          beginY += maps.tileSize;
        }
        else
        {
          break;
        }
      }
      if (beginX < width)
      {
        beginX += maps.tileSize;
        beginY = 0;
      }
      else
      {
        break;
      }
    }
  }

  public void drawSprite(Graphics g, LPImageManage im, LPSprite sprite)
  {
    if (!sprite.isHidden)
    {
      g.setClip(sprite.x,
                sprite.y, im.frameSize,
                im.frameSize);
      g.drawImage(im.image, sprite.x,
                  sprite.y -
                  sprite.frameCnt *
                  im.frameSize, g.LEFT | g.TOP);
     // g.setClip(0, 0, width, height);
    }
  }

  public void drawSprite(Graphics g, LPImageManage im, Vector vec) {
    if(vec==null)
      return;
    for (int i = vec.size()-1; i >=0 ; --i) {
      if(((LPSprite)vec.elementAt(i)).isHidden)
      {
        continue;
      }
      if(((LPSprite)vec.elementAt(i)).x<-im.frameSize
         ||((LPSprite)vec.elementAt(i)).x>width
         ||((LPSprite)vec.elementAt(i)).y<-im.frameSize
         ||((LPSprite)vec.elementAt(i)).y>height+im.frameSize)
      {
        continue;
      }
      g.setClip(((LPSprite)vec.elementAt(i)).x, ((LPSprite)vec.elementAt(i)).y, im.frameSize, im.frameSize);
      g.drawImage(im.image, ((LPSprite)vec.elementAt(i)).x,
                  ((LPSprite)vec.elementAt(i)).y - ((LPSprite)vec.elementAt(i)).frameCnt * im.frameSize, g.LEFT | g.TOP);
      //g.setClip(0, 0, width, height);
    }

  }
  public void drawSprite(Graphics g, LPImageManage im, LPSprite []sprites) {
    if(sprites==null)
      return;
   for (int i = sprites.length-1; i >= 0; --i) {
     if(sprites[i].isHidden)
     {
       continue;
     }
     if(sprites[i].x<-im.frameSize
        ||sprites[i].x>width
        ||sprites[i].y<-im.frameSize
        ||sprites[i].y>height+im.frameSize)
     {
       continue;
     }
     g.setClip(sprites[i].x, sprites[i].y, im.frameSize, im.frameSize);
     g.drawImage(im.image, sprites[i].x,
                 sprites[i].y - sprites[i].frameCnt * im.frameSize, g.LEFT | g.TOP);
     //g.setClip(0, 0, width, height);
   }
 }
}

⌨️ 快捷键说明

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