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

📄 worldbuilder.java

📁 j2me实现的一款小游戏
💻 JAVA
字号:
package istarion.core;

import java.util.*;
import istarion.frontend.*;

public class WorldBuilder
{

	MazeBuilder __mb = null;
	MonsterFactory __mf = null;
	private final Vault RECT_ROOM;
	private ProgressBar __progressBar;


	public WorldBuilder(ProgressBar pb)
	{
		__progressBar = pb;
		__progressBar.setText("Generating Dungeon...");
		__progressBar.setSteps(17);
		__progressBar.doShow();

		__mb = new MazeBuilder();
		__mf = new MonsterFactory();


		RECT_ROOM = new Vault(
			new int[][]
			{
				{1,1,1,1,1,1,1},
				{1,1,1,0,1,1,1},
				{1,1,0,0,0,1,1},
				{1,0,0,0,0,0,1},
				{1,1,0,0,0,1,1},
				{1,1,1,0,1,1,1},
				{1,1,1,1,1,1,1}
			}, 7, 7,
			0,3,
			6,3,
			0,3,
			6,3
		);
	}


	public Dungeon buildDungeon(int level)
	{
		int sizeX = Toolkit.tk().rollDice(1, 30, 30) + (5 * level);
		int sizeY = Toolkit.tk().rollDice(1, 30, 30) + (5 * level);

		int startX = Toolkit.tk().rollDice(1, sizeX - 1, 0);
		int startY = Toolkit.tk().rollDice(1, sizeY - 1, 0);

		char maze[][] = new char[sizeX][sizeY];

		__mb.makeMaze(maze, startX, startY, Dungeon.NORTH, 30, true);
		for (int i = 0; i < 15; i++)
		{
			__mb.makeMaze(maze, Toolkit.tk().rollDice(1, sizeX - 1, 0),
				Toolkit.tk().rollDice(1, sizeY - 1, 0), Dungeon.NORTH, 30, false);
			__progressBar.nextStep();
		}


		addRooms(maze, 35 + level);

		Dungeon dungeon =
			new Dungeon(maze, "The Dungeon, Level " + level, level, startX, startY);

		//some test monsters.
		for (int i = 0; i < 20; i++)
		{
			Monster m = __mf.createMonster(Monster.ORC);
			int mx, my;
			do
			{
				mx = Toolkit.tk().rollDice(1, sizeX - 2, 0);
				my = Toolkit.tk().rollDice(1, sizeY - 2, 0);
				m.setLocation(mx, my);
				m.setDungeon(dungeon);
			} while (!dungeon.addMobile(m, mx, my));
		}
		__progressBar.nextStep();

		return dungeon;
	}


	/**
	 * Add simple rectangular rooms to the dungeon.
	 */
	private void addRooms(char[][] maze, int amount)
	{
  		for (int i = 0 ; i < amount; i++)
  		{
    		int roomSizeX = Toolkit.tk().rollDice(1,3,3);
    		int roomSizeY = Toolkit.tk().rollDice(1,3,3);
    		int roomPosX = Toolkit.tk().rollDice(1, maze.length - roomSizeX - 3, 0);
    		int roomPosY = Toolkit.tk().rollDice(1,maze[0].length - roomSizeY - 3, 0);
    		for (int a = roomPosX; a <= roomPosX + roomSizeX - 3; a++)
      			for(int b = roomPosY; b <= roomPosY + roomSizeY; b++)
        			maze[a][b] = Dungeon.FLOOR;
  		}
  		__progressBar.nextStep();
	}
}

⌨️ 快捷键说明

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