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

📄 mapfunc.java

📁 金旭亮的java教案
💻 JAVA
字号:
/*
 * Created on 2006-6-30
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package all;

import java.awt.*;
import java.awt.image.ImageObserver;

/**
 * @author kaito
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class MapFunc implements ImageObserver {
	int enterx=200,entery=0;//地图开始的横纵坐标
	int gridX=5,gridY=5;//地图格子数
	int si,sj,ei,ej;
	int[][] maze=new int[30][30];
	int enter=300,width=20;
	Image wall1,wall2;//墙的壁纸
	Image wall12,wall22;//2d墙的壁纸
	Graphics gw1,gw2;//2d墙画面
	int w=106,h=85;//墙的大小
	double wa=0.53,ha=0.175,wb=-0.49,hb=0.24;//构建单个地图坐标的加权值

	public void mapInit(){
		int i,j;
		si=1;sj=1;ei=gridY;ej=gridX; // 设置出口和入口     
		for(i=0;i<=gridY+1;i++)
		{        
			for(j=0;j<=gridX+1;j++){ 
				if(i==0||j==0||i==gridY+1||j==gridX+1) 
					maze[i][j]=15;  // 设置外墙 
				else
					maze[i][j]=3;  // 初始化迷宫内部
			} 
		} 
		genmaze(ei,ej);    // 产生迷宫 
		maze[ei][ej]=maze[ei][ej]&0xd; // 拆掉出口右墙 
		mapinit2d();
	}
	public void mapinit2d(){
		gw1=wall12.getGraphics();
		gw1.setColor(Color.BLACK);
		gw1.fillRect(0,0,width,width);
		gw2=wall22.getGraphics();
		gw2.setColor(Color.BLACK);
		gw2.fillRect(0,0,width,width);
	}
	public void genmaze(int i,int j){
		int n;
		maze[i][j]|=0x4;
		while(maze[i][j+1]==3||maze[i+1][j]==3||maze[i][j-1]==3||maze[i-1][j]==3){
			n=(int)(4*Math.random()+1);
			if(n==1&&maze[i][j+1]==3){
				maze[i][j]&=0xd;
				genmaze(i,j+1);
			}
			else if(n==2&&maze[i-1][j]==3){
				maze[i][j]&=0xe;
				genmaze(i-1,j);
			}
			else if(n==3&&maze[i][j-1]==3){
				maze[i][j-1]&=0xd;
				genmaze(i,j-1);
			}
			else if(n==4&&maze[i+1][j]==3){
				maze[i+1][j]&=0xe;
				genmaze(i+1,j);
			}
		}
	}
	public void paintmaze25d(Graphics g,People people1){
		int i,j;
		g.clearRect(0,0,(gridX+3)*w,(gridY+6)*h);
		j=0;
		for(i=2;i<=gridY;i++){
			g.drawImage(wall1,(int)((j-1)*wa*w+(i-1)*wb*w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+entery),(int)((j-1)*wa*w+(i-1)*wb*w+w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+h+entery),0,0,w,h,this);
		}
		for(i=1;i<=gridY;i++){
			for(j=1;j<=gridX+1;j++){
				if(j==people1.girlInMapX+1&&i==people1.girlInMapY){
					people1.paintPeople(g);
					int tempi=i,tempj=j;
					if((maze[i][j-1]&2)==2){
						j=people1.girlInMapX;i=people1.girlInMapY;
						g.drawImage(wall1,(int)((j-1)*wa*w+(i-1)*wb*w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+entery),(int)((j-1)*wa*w+(i-1)*wb*w+w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+h+entery),0,0,w,h,this);
					}
					i=tempi;j=tempj;
				}
				if(j<=gridX){
					if((maze[i][j]&1)==1){
						g.drawImage(wall2,(int)((j-1)*wa*w+(i-1)*wb*w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+entery),(int)((j-1)*wa*w+(i-1)*wb*w+w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+h+entery),0,0,w,h,this);
					}
					if((maze[i][j]&2)==2){
						g.drawImage(wall1,(int)((j-1)*wa*w+(i-1)*wb*w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+entery),(int)((j-1)*wa*w+(i-1)*wb*w+w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+h+entery),0,0,w,h,this);
					}
				}
			}
		}
		i=gridY+1;
		for(j=1;j<=gridX;j++){
			g.drawImage(wall2,(int)((j-1)*wa*w+(i-1)*wb*w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+entery),(int)((j-1)*wa*w+(i-1)*wb*w+w+enterx),(int)((i-1)*hb*h+(j-1)*ha*h+h+entery),0,0,w,h,this);
		}
	}
	public void paintmaze2d(Graphics g,People people1){
		int x,y,i,j;
		g.clearRect(enter,enter,(gridX+3)*width+enter,(gridY+6)*width);
		g.drawImage(wall12,enter+width/4,enter+width/4,(gridX+2)*width+enter,enter+width+width/4,0,0,width,width,this);
		g.drawImage(wall22,enter+width/4,enter+2*width+width/4,width+enter+width/4,(gridY+2)*width+enter,0,0,width,width,this);
		g.drawImage(wall12,enter+width/4,(gridY+1)*width+enter,(gridX+2)*width+enter,(gridY+2)*width+enter,0,0,width,width,this);
		g.drawImage(wall22,(gridX+1)*width+enter,width+enter,(gridX+2)*width+enter,(gridY)*width+enter+width/4,0,0,width,width,this);
		for(i=1;i<=gridY;i++){
			for(j=1;j<=gridX;j++){
				x=(j)*width+enter;
				y=(i)*width+enter;
				if((maze[i][j]&1)==1){
					g.drawImage(wall12,x,y,x+width,y+width,0,0,width,width*4,this);
				}
				if((maze[i][j]&2)==2){
					g.drawImage(wall22,x+width,y,x+2*width,y+width,0,0,width*4,width,this);
				}
			}
			//System.out.println(maze[i][0]+" "+maze[i][1]+" "+maze[i][2]+" "+maze[i][3]+" "+maze[i][4]+" "+maze[i][5]+" ");
		}
		System.out.println();
		g.setColor(Color.RED);
		g.fillRect(enter+people1.girlInMapX*20+13,13+enter+20*people1.girlInMapY,5,5);
	}
	public boolean imageUpdate(Image arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
		// TODO Auto-generated method stub
		return false;
	}
}

⌨️ 快捷键说明

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