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

📄 gamecanvas.java

📁 梦幻手机迷宫游戏,J2ME完整的手机游戏范例程式
💻 JAVA
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;

public class gameCanvas extends Canvas
{
  private final mobileMAP midletCanvas;
  private int gameaction, getMAP, mapX, mapY, mapXgo, mapYgo, mapNew, readline, nextPage;
  private Image houseImage, keyImage;
  private Image[] mapImage, catImage;
  private boolean catGO, houseStatus;
  private boolean[] keyStatus; 
  private int i, j, cat, X, Y, keyType, playGame, finalX, finalY, saveKey, X_MAP, Y_MAP;
  private InputStream inputmap; 
  private String[][] viewmap;
  private int[][] mapkey;
  private NextMAP nextMAP;
  
  public gameCanvas(mobileMAP midletCanvas)
  {
    this.midletCanvas=midletCanvas;
    mapImage=new Image[4];
    catImage=new Image[2];
    try{
        houseImage=Image.createImage("/house.png");
        keyImage=Image.createImage("/key.png");
        mapImage[0]=Image.createImage("/map1.png");
        mapImage[1]=Image.createImage("/map2.png");
        mapImage[2]=Image.createImage("/map3.png");
        mapImage[3]=Image.createImage("/map4.png");
        catImage[0]=Image.createImage("/cat1.png");
        catImage[1]=Image.createImage("/cat2.png");
    }catch(Exception ex){}
    readFileMap();
  }
  
  public void keyPressed(int keyCode)
  { 
    gameaction=getGameAction(keyCode);
    switch(gameaction)
    {
      case UP:
           Y--;
           if(Y<0) Y=0;
           checkGO(X,Y);
           if(!catGO && Y>=0) Y++; 
           repaint();
           break;
      case DOWN:             
           Y++;
           if(Y>(mapYgo-1)) Y=mapYgo-1;
           checkGO(X,Y);
           if(!catGO && Y<mapYgo) Y--; 
           repaint();
           break;
      case LEFT:
           cat=1;
           X--;
           if(X<0) X=0;
           checkGO(X,Y);
           if(!catGO && X>=0) X++;
           if(playGame==2) 
             if(X<=8) 
                nextPage=0;
             else
                nextPage=160;
           repaint();
           break;
      case RIGHT:
           cat=0;
           X++;
           if(X>(mapXgo-1)) X=mapXgo-1;
           checkGO(X,Y);
           if(!catGO && X<mapXgo) X--;
           if(playGame==2)  
             if(X>8) 
               nextPage=160;
             else
               nextPage=0;
           repaint();
           break;
    } 
  }

  public void paint(Graphics g)
  {
     for(i=0;i<12; i++)
       for(j=0;j<9;j++)
         g.drawImage(mapImage[3], 20*j, 15*i, Graphics.LEFT | Graphics.TOP);     

     for(i=0; i<viewmap.length; i++)
     {
       for(j=0; j<viewmap[0].length; j++)
       {
         if(playGame==1)
         {
              X_MAP=20*j;
              Y_MAP=15*i;
         }else if(playGame==2){
              X_MAP=20*j-nextPage;
              Y_MAP=15*i;
         }else{
              X_MAP=20*(4-X+j);
              Y_MAP=15*(5-Y+i); 
         }
         if(Y_MAP>=0 && Y_MAP<=180 && X_MAP>=0 && X_MAP<=180)
         {

           if(viewmap[i][j].equals("1") || viewmap[i][j].equals("4") || viewmap[i][j].equals("5"))    
             g.drawImage(mapImage[0], X_MAP, Y_MAP, Graphics.LEFT | Graphics.TOP); 
           if(viewmap[i][j].equals("2")) 
             g.drawImage(mapImage[1], X_MAP, Y_MAP, Graphics.LEFT | Graphics.TOP); 
           if(viewmap[i][j].equals("3")) 
             g.drawImage(mapImage[2], X_MAP, Y_MAP, Graphics.LEFT | Graphics.TOP); 
           if(viewmap[i][j].equals("4")) 
             g.drawImage(houseImage, X_MAP, Y_MAP, Graphics.LEFT | Graphics.TOP);
         }
       }
     }
     
     for(i=0;i<keyStatus.length;i++)
        if(!keyStatus[i])
          if(playGame==3)
            g.drawImage(keyImage, 2+20*(4-X+mapkey[i][0]), 2+15*(5-Y+mapkey[i][1]), Graphics.LEFT | Graphics.TOP);   
          else if(nextPage==0)
            g.drawImage(keyImage, 2+20*mapkey[i][0], 2+15*mapkey[i][1], Graphics.LEFT | Graphics.TOP);
          else
            g.drawImage(keyImage, (2+20*mapkey[i][0])-nextPage, 2+15*mapkey[i][1], Graphics.LEFT | Graphics.TOP);
            
     if(playGame==3)
       g.drawImage(catImage[cat], 2+20*4, 15*5, Graphics.LEFT | Graphics.TOP);
     else
       g.drawImage(catImage[cat], 2+20*X-nextPage, 15*Y, Graphics.LEFT | Graphics.TOP);
     
     if(houseStatus && (finalX==X) && (finalY==Y))
     {
        g.setColor(0x90EE90);
        g.fillRect(getWidth()/2-45, getHeight()/2-18, 90, 30);
        g.setColor(0x000080);
        if(playGame==3){
          g.drawString("

⌨️ 快捷键说明

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