📄 maze1.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 + -