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

📄 maze1.java

📁 JAVA2游戏程序设计源码 可以帮助初学者或者只想改改程序就能用的人
💻 JAVA
字号:
// 程序:平面迷宫制作
// 范例文件:Maze1.java

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Maze1 extends Applet 
             implements KeyListener, Runnable
{
   int          ImageWidth,ImageHeight,ImageX,ImageY,AppletWidth,
                AppletHeight,floorW,key;
   int sx;  
   char direction = 'R'; 
   Image        character,floor,block1,block2,OffScreen;
   Thread       newThread;
   Graphics     drawOffScreen; 
   MediaTracker MT;
   Sprite s; 

   int[][] maze = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                   {0,0,0,0,0,1,0,0,2,0,0,1,1,0,0,0,2,2},
                   {2,0,1,0,1,0,0,0,2,0,1,0,0,1,1,0,2,2},
                   {2,0,0,0,0,1,1,1,2,0,1,0,1,1,0,0,2,2},
                   {2,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,2,2},
                   {2,1,0,1,0,1,1,0,1,1,0,0,1,0,2,0,2,2},
                   {2,1,0,0,0,0,1,0,0,2,0,0,0,0,2,2,2,2},
                   {2,1,0,0,2,0,1,1,1,2,0,1,0,0,2,1,1,2},
                   {2,1,1,1,1,0,0,0,1,2,0,0,0,0,1,1,0,2},
                   {2,0,0,0,0,0,0,0,1,0,0,1,1,0,2,1,0,2},
                   {2,0,2,0,1,0,0,0,1,0,1,0,0,0,2,1,0,2},
                   {2,1,2,0,0,0,1,1,1,0,1,0,1,1,2,1,0,2},
                   {2,0,0,0,2,0,0,0,1,1,0,0,0,0,0,0,0,0},
                   {2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};

   public void init()
   {
      addKeyListener(this);   

      setBackground(Color.white);  
  
      AppletWidth  = getSize().width;  
      AppletHeight = getSize().height; 
      sx = 0;

      MT           = new MediaTracker(this);
      character = getImage(getDocumentBase(),"Images/character.gif");
      floor = getImage(getDocumentBase(),"Images/floor.jpg");         
      block1 = getImage(getDocumentBase(),"Images/block1.gif");
      block2 = getImage(getDocumentBase(),"Images/block2.gif");
      MT.addImage(character,0);
      MT.addImage(floor,0);
      MT.addImage(block1,0);
      MT.addImage(block2,0);
     
      try
      {
         showStatus("图像载入中(Loading Images)...");
         MT.waitForAll();
      }
      catch(InterruptedException E){ } 
      
      OffScreen     = createImage(AppletWidth,AppletHeight);
      drawOffScreen = OffScreen.getGraphics();

      floorW = floor.getWidth(this);
      ImageWidth    = character.getWidth(this) / 3;   
      ImageHeight   = character.getHeight(this) / 4;    
      ImageX        = floorW;  
      ImageY        = floorW/3;  


      s = new Sprite(ImageX, ImageY, ImageWidth, ImageHeight, maze);
   }

   public void start()
   {
      newThread = new Thread(this);
      newThread.start();
   }

   public void stop()
   {
      newThread = null;
   }

   public void update(Graphics g)    
   {
      paint(g);              
   }

   public void paint(Graphics g)
   {

      g.drawImage(OffScreen,0,0,this);
   }

    public void run()
    {
        while(true)
        {
           drawOffScreen.clearRect(0,0,AppletWidth,AppletHeight);

           for(int i=0; i <= AppletHeight; i+= floorW)
              for(int j=0; j <= AppletWidth; j+=floorW)
                 drawOffScreen.drawImage(floor,j,i,j+floorW,i+floorW,
                     0,0,floorW,floorW,this);

           for(int i=0; i < 14; i++)
              for(int j=0; j < 18; j++)
                  if(maze[i][j] == 1) 
                     drawOffScreen.drawImage(block1,j*floorW,i*floorW,
                          (j+1)*floorW,(i+1)*floorW,0,0,floorW,floorW,this); 
                  else if(maze[i][j] == 2) 
                     drawOffScreen.drawImage(block2,j*floorW,i*floorW,
                          (j+1)*floorW,(i+1)*floorW,0,0,floorW,floorW,this);
        
           switch (direction)
           {
               case 'U': 
                  drawOffScreen.drawImage(character,s.LcX,s.LcY,
                     s.LcX+s.SizeW,s.LcY+s.SizeH,sx,0, sx+s.SizeW,
                     s.SizeH,this);
                  break;
               case 'D': 
                  drawOffScreen.drawImage(character,s.LcX,s.LcY,
                     s.LcX+s.SizeW,s.LcY+s.SizeH,sx,s.SizeH*2,
                     sx+s.SizeW, s.SizeH*3,this);
                  break;
               case 'L':  
                   drawOffScreen.drawImage(character,s.LcX,s.LcY,
                     s.LcX+s.SizeW,s.LcY+s.SizeH,sx,s.SizeH*3,
                     sx+s.SizeW, s.SizeH*4,this);
                  break;
               case 'R':  
                  drawOffScreen.drawImage(character,s.LcX,s.LcY,
                     s.LcX+s.SizeW,s.LcY+s.SizeH,sx, s.SizeH,
                     sx+s.SizeW, s.SizeH*2,this);
                  break;
           }
           repaint();
           sx += s.SizeW;
           if(sx > s.SizeW*2)
              sx = 0;

           try {
               Thread.sleep(200);
           }
           catch (InterruptedException e)
           {

           }
        }
    }

   public void keyTyped(KeyEvent e)  { }

   public void keyPressed(KeyEvent e)
   {
      key = e.getKeyCode();
   
      if(key == KeyEvent.VK_RIGHT) 
      {
          direction = 'R'; 
          s.moveRight(); 
      }
      else if(key == KeyEvent.VK_LEFT)
      {
          direction = 'L';
          s.moveLeft();
      }
      else if(key == KeyEvent.VK_UP)
      {
         direction = 'U';       
         s.moveUp();
      }
      else if(key == KeyEvent.VK_DOWN) 
      {
         direction = 'D';       
         s.moveDown();
      }
   }

   public void keyReleased(KeyEvent e) {}
}

⌨️ 快捷键说明

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