1. 程式人生 > >JAVA GUI文字遊戲

JAVA GUI文字遊戲

本遊戲是突發一個想法寫出來的,只寫了個大概,大概如下:

遊戲選單介面
遊戲主介面

 

人物詳情介面

 

揹包介面
裝備詳情介面

遊戲介紹:

  1. 遊戲目錄為src存放程式碼,lib存放jar包(build path加入jar),res存放資源
  2. 類列表:

    GameConfig 遊戲配置介面

    MenuGame 遊戲選單(含有main方法建立new menuGame)

    Player 玩家類

    StarGame 遊戲介面

    GameUtil 遊戲工具類

    BackpackJFrame 揹包介面

    EquipDetailJFrame 揹包物品詳情介面

    PlayerJFrame 角色詳情介面

    UnitXLS 操作XLS工具類

  3. 方法註釋:太多了有時間再寫吧,認真學習的,加我QQ問也行(大部分我在程式碼中都有註釋)

  4. 本來為了放資料,程式碼執行會在D盤建一個文字遊戲的資料夾,然而,我並沒有發現有啥用

最最重要的程式碼下載地址↓↓↓↓:

連結: https://pan.baidu.com/s/1-PViDjNVfdh58vagk63czw

提取碼: 6666

注:開發不易,有票子的老鐵可以在這下載→:

https://download.csdn.net/download/qq_40176716/10727643

遊戲介面:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 遊戲介面
 * 
 * @author 莫言情難忘 1179307527
 *
 */
public interface GameConfig {

	String[][] MAP = new String[10][10];// 新手村地圖
	String[][] MAPabout = new String[10][10];// 新手村地圖註釋
	int[][][] coordinate = new int[10][10][10];// 10個新手村這麼大的地圖
	Player player = new Player();
	List<Map<String, String>> zhuangbeilist = new ArrayList<Map<String, String>>();// 所有裝備
}

MenuGame.java

遊戲選單,main方法在裡面,還有初始化裝備列表

import java.awt.Container;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;

/**
 * 
 * @author 莫言情難忘
 * QQ 1179307527
 * 遊戲選單
 */
public class MenuGame implements GameConfig{
	
	public static JFrame loginFrame;// 啟動介面
	
	public MenuGame() {
		Initialization1();
		loginFrame = new JFrame("文字遊戲");
		// 設定大小
		loginFrame.setSize(200, 235);
		// 設定窗體居中
		loginFrame.setLocationRelativeTo(null);
		// 設定不可最大化
		loginFrame.setResizable(false);
		// 設定沒有標題欄
		// loginFrame.setUndecorated(true);
		// 設定圖示
		Image icon = Toolkit.getDefaultToolkit().getImage("images/icon.png");
		loginFrame.setIconImage(icon);
		// 設定關閉
		loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 設定字型
		Font font = new Font("楷體", 0, 16);
		// 設定文字字型
		UIManager.put("Label.font", font);
		// 面板,用於新增按鈕
		JPanel jPanel = new JPanel();
		Container container = loginFrame.getContentPane();
		// 按鈕例項化
		JButton stargame = new JButton("開始遊戲");
		JButton duqugame = new JButton("讀取遊戲");
		JButton guanyugame = new JButton("關於遊戲");
		JButton helpgame = new JButton("遊戲幫助");
		JButton tuichugame = new JButton("退出遊戲");
		// 面板新增5個選單按鈕
		jPanel.add(stargame);
		jPanel.add(duqugame);
		jPanel.add(guanyugame);
		jPanel.add(helpgame);
		jPanel.add(tuichugame);
		// 為按鈕設定字型
		stargame.setFont(font);
		duqugame.setFont(font);
		guanyugame.setFont(font);
		tuichugame.setFont(font);
		helpgame.setFont(font);
		// 新增面板
		container.add(jPanel);
		// 開始遊戲按鈕監聽
		stargame.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {

				// 開始遊戲
				StartGame ks = new StartGame();
				loginFrame.dispose();
			}
		});
		// 讀取遊戲按鈕監聽
		duqugame.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// 警告資訊框
				JOptionPane.showMessageDialog(jPanel, "後續開發", "讀取存檔", JOptionPane.WARNING_MESSAGE);
			}
		});
		// 關於按鈕被單擊
		guanyugame.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// 彈出文字內容
				String guanyu = "本軟體為文字類遊戲,ok";
				// 資訊框
				JOptionPane.showMessageDialog(null, guanyu, "關於", JOptionPane.PLAIN_MESSAGE);
			}
		});
		// 幫助按鈕被單擊
		helpgame.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// 彈出文字內容
				String help = "這是幫助";
				// 資訊框
				JOptionPane.showMessageDialog(null, help, "幫助", JOptionPane.PLAIN_MESSAGE);
			}
		});
		// 退出遊戲監聽
		tuichugame.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				int res = JOptionPane.showConfirmDialog(null, "我們正在努力新增遊戲各種功能\n" + "敬請期待", "退出?",
						JOptionPane.YES_NO_OPTION);
				if (res == JOptionPane.YES_OPTION) {
					Desktop desktop = Desktop.getDesktop();
					try {
						desktop.browse(new URI("http://www.520mylove.com"));
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (URISyntaxException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.exit(0);// 退出
				}
			}
		});
		// 顯示視窗
		loginFrame.setVisible(true);
	}
	

	/**
	 * 初始化1,判斷是否存在遊戲文件資料夾(遊戲文件包括遊戲存檔等)
	 */
	void Initialization1() {
		File file = new File("D:\\文字遊戲");//遊戲目錄
		File file1 = new File("D:\\文字遊戲\\map");//遊戲地圖
		File file2 = new File("D:\\文字遊戲\\cundang");//遊戲存檔
		if (!file.exists() && !file.isDirectory()) {
			// 不存在此資料夾,建立此資料夾
			file.mkdir();
		}
		if (!file1.exists() && !file1.isDirectory()) {
			// 不存在此資料夾,建立此資料夾
			file1.mkdir();
		}
		if (!file2.exists() && !file2.isDirectory()) {
			// 不存在此資料夾,建立此資料夾
			file2.mkdir();
		}
	}
	
	public static void main(String[] args) {
		//載入遊戲裝備列表
		String 所有裝備 = "res/裝備匹配表.xls";
		String 佇列1[] = {"ID", "品質", "位置", "名稱", "說明", "等級", "善惡", "門派", "生命", "攻擊", "防禦", "速度", "暴擊",
				"命中", "閃避", "生命加成", "攻擊加成", "防禦加成", "速度加成", "吸血"};
		UnitXLS.AddXls(zhuangbeilist,所有裝備,佇列1);
		//載入當前裝備列表
		String 角色裝備 = "res/角色裝備.xls";
		String 佇列2[] = {"ID", "名稱"};
		UnitXLS.AddXls(player.juesezhuangbeilist,角色裝備,佇列2);
		new MenuGame();
	}
	
}

StartGame.java

遊戲主介面(地圖移動,開啟人物介面等)

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;

/**
 * 遊戲初始介面
 * 
 * @author 莫言情難忘 1179307527
 *
 */
public class StartGame extends JFrame implements GameConfig {

	// 遊戲面板
	JPanel panel;
	int PlayerX = 1;
	int PlayerY = 1;
	JButton shang, xia, zuo, you, zhong;

	/**
	 * 設定窗體
	 */
	public StartGame() {

		// 讀取遊戲map
		ReadMap();

		this.setTitle("文字類");
		this.setSize(450, 485);// 450*450 標題欄佔35
		this.setLayout(null);
		// 設定關閉方式
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 設定窗體居中
		this.setLocationRelativeTo(null);
		// 設定字型
		Font font = new Font("楷體", 0, 20);
		// 設定文字字型
		UIManager.put("Label.font", font);
		// 上
		shang = new JButton("上城");
		shang.setBounds(150, 0, 150, 150);
		shang.setFont(font);
		this.add(shang);
		shang.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ReMap(0);
			}
		});
		// 下
		xia = new JButton("下城");
		xia.setBounds(150, 300, 150, 150);
		xia.setFont(font);
		this.add(xia);
		xia.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ReMap(1);
			}
		});
		// 左
		zuo = new JButton("左城");
		zuo.setBounds(0, 150, 150, 150);
		zuo.setFont(font);
		this.add(zuo);
		zuo.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ReMap(2);
			}
		});
		// 右
		you = new JButton("右城");
		you.setBounds(300, 150, 150, 150);
		you.setFont(font);
		this.add(you);
		you.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ReMap(3);
			}
		});
		// 中
		zhong = new JButton("該城");
		zhong.setBounds(150, 150, 150, 150);
		zhong.setFont(font);
		this.add(zhong);
		zhong.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				ReMap(4);
			}
		});
		// 人物
		JButton renwu = new JButton("人物");
		renwu.setBounds(0, 0, 150, 150);
		renwu.setFont(font);
		this.add(renwu);
		renwu.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				new PlayerJFrame();
				// String[] a = {"da","da","da"};
				// int va =JOptionPane.showOptionDialog(StartGame.this, "人物詳情", "標題",
				// JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, a, "da");

			}
		});
		// 揹包
		JButton backpack = new JButton("揹包");
		backpack.setBounds(300, 0, 150, 150);
		backpack.setFont(font);
		this.add(backpack);
		backpack.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				new BackpackJFrame();
			}
		});
		// 設定
		JButton shezhi = new JButton("設定");
		shezhi.setBounds(0, 300, 150, 150);
		shezhi.setFont(font);
		this.add(shezhi);
		shezhi.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub

			}
		});
		// 特殊
		JButton teshu = new JButton("特殊");
		teshu.setBounds(300, 300, 150, 150);
		teshu.setFont(font);
		this.add(teshu);
		teshu.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String pojie = JOptionPane.showInputDialog("請輸入密碼");

				if (pojie != null && pojie.equals("我愛文字遊戲1179307527")) {
					player.PoJie1();
					JOptionPane.showMessageDialog(null, "輸入key成功,開啟貴族的待遇", "破解success", JOptionPane.PLAIN_MESSAGE);
				} else if (pojie != null && pojie.equals("我有故事你有酒嗎")) {
					String aString = "輸入KEY值成功,我有故事你有酒嗎?\n" + "真的,誰沒有藏在心底的故事呢?";
					JOptionPane.showMessageDialog(null, aString, "來,乾杯", JOptionPane.PLAIN_MESSAGE);
				} else {
					JOptionPane.showMessageDialog(null, "輸入key失敗", "破解失敗", JOptionPane.PLAIN_MESSAGE);
				}

			}
		});
		shang.setText(MAP[PlayerX - 1][PlayerY]);
		xia.setText(MAP[PlayerX + 1][PlayerY]);
		zuo.setText(MAP[PlayerX][PlayerY - 1]);
		you.setText(MAP[PlayerX][PlayerY + 1]);
		zhong.setText(MAP[PlayerX][PlayerY]);
		this.setResizable(false);
		this.setVisible(true);
	}

	/**
	 * 讀取地圖及地圖介紹 地圖為res資料夾的MAP.txt 地圖介紹為res資料夾的MAPabout.txt
	 */
	void ReadMap() {
		// 載入地圖
		try {
			File file = new File("res\\MAP.txt");
			InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
			BufferedReader br = new BufferedReader(reader);
			// 讀取地圖的主要操作
			for (int i = 0; i < 10; i++) {
				String[] iString = br.readLine().split(";");
				for (int j = 0; j < 10; j++) {
					MAP[i][j] = iString[j];
				}
			}
			// 關閉輸出流
			reader.close();
		} catch (Exception e) {
			// 處理異常
		}

		// 載入地圖介紹
		try {
			File file = new File("res\\MAPabout.txt");
			InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
			BufferedReader br = new BufferedReader(reader);
			// 讀取地圖的主要操作
			for (int i = 0; i < 10; i++) {
				for (int j = 0; j < 10; j++) {
					String iString = br.readLine();
					MAPabout[i][j] = iString;
				}
			}
			// 關閉輸出流
			reader.close();
		} catch (Exception e) {
			// 處理異常
		}

	}

	/**
	 * 重新整理地圖
	 * 
	 * @param j
	 *            0=上 1=下 2=左 3=右 4=中 獲取移動方向
	 */
	void ReMap(int key) {
		switch (key) {
		// 上
		case 0:
			if (MAP[PlayerX - 1][PlayerY] != null && !MAP[PlayerX - 1][PlayerY].equals("空")) {
				PlayerX--;
				shang.setText(MAP[PlayerX - 1][PlayerY]);
				xia.setText(MAP[PlayerX + 1][PlayerY]);
				zuo.setText(MAP[PlayerX][PlayerY - 1]);
				you.setText(MAP[PlayerX][PlayerY + 1]);
				zhong.setText(MAP[PlayerX][PlayerY]);
			}
			break;
		// 下
		case 1:
			if (MAP[PlayerX + 1][PlayerY] != null && !MAP[PlayerX + 1][PlayerY].equals("空")) {
				PlayerX++;
				shang.setText(MAP[PlayerX - 1][PlayerY]);
				xia.setText(MAP[PlayerX + 1][PlayerY]);
				zuo.setText(MAP[PlayerX][PlayerY - 1]);
				you.setText(MAP[PlayerX][PlayerY + 1]);
				zhong.setText(MAP[PlayerX][PlayerY]);
			}
			break;
		// 左
		case 2:
			if (MAP[PlayerX][PlayerY - 1] != null && !MAP[PlayerX][PlayerY - 1].equals("空")) {
				PlayerY--;
				shang.setText(MAP[PlayerX - 1][PlayerY]);
				xia.setText(MAP[PlayerX + 1][PlayerY]);
				zuo.setText(MAP[PlayerX][PlayerY - 1]);
				you.setText(MAP[PlayerX][PlayerY + 1]);
				zhong.setText(MAP[PlayerX][PlayerY]);
			}
			break;
		// 右
		case 3:
			if (MAP[PlayerX][PlayerY + 1] != null && !MAP[PlayerX][PlayerY + 1].equals("空")) {
				PlayerY++;
				shang.setText(MAP[PlayerX - 1][PlayerY]);
				xia.setText(MAP[PlayerX + 1][PlayerY]);
				zuo.setText(MAP[PlayerX][PlayerY - 1]);
				you.setText(MAP[PlayerX][PlayerY + 1]);
				zhong.setText(MAP[PlayerX][PlayerY]);
			}
			break;
		// 中
		case 4:
			int res = JOptionPane.showConfirmDialog(null, GameUtil.StringToHtml(MAPabout[PlayerX][PlayerY], 10),
					"是否進入" + MAP[PlayerX][PlayerY] + "?", JOptionPane.YES_NO_OPTION);
			if (res == JOptionPane.YES_OPTION) {
				// 此處處理進入方法
				System.out.println("進入了" + MAP[PlayerX][PlayerY]);
			} else {
				// 此處可做不處理
				System.out.println("沒進入" + MAP[PlayerX][PlayerY]);
			}
			break;
		default:
			JOptionPane.showMessageDialog(this, "219", "default錯誤", JOptionPane.WARNING_MESSAGE);
			break;
		}

	}
}

Player.java

玩家類,裡面大多是變數,例如攻擊防禦等資訊

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 
 * @author 莫言情難忘 1179307527
 *
 */
public class Player {
	String name = "情難忘";// 姓名
	int age = 15;// 年齡(預設年齡在70歲死亡,冒險在15歲)
	String sex = "男";// 性別(加入幫派限制)(轉職?)
	String designation = "無";// 稱號
	int leave = 0;// 等級,每級增加
	int jingyan = 0;// 當前經驗
	int[] shengjijingyan = { 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200, 102400, 204800, 409600,
			999999 };// 升級所需的經驗
	int life = 100;// 生命值
	int attack = 20;// 攻擊(攻擊演算法)
	int defend = 10;// 防禦(防禦演算法)
	int speed = 5;// 速度(速度大的先手)

	int violent = 2; // 暴擊率(2倍)(百分比,最大100,最小0)
	int goodevil = 0;// 善惡值 可觸發一些事件任務
	int prestige = 0;// 聲望值 到達某些指定聲望值時,購買東西可打折
	int faction = 0;// 門派 在門派可以學習很多東西,當然要用門派的積分來換,有些門派任務是有時限的
	int lucky = 5;// 幸運值,掉寶機率大,暴擊加成(掉寶加成具體寶貝具體演算法,暴擊=原有暴擊+幸運值*0.5)

	boolean burns1;// 1級燒傷,每回合2%
	boolean burns2;// 2級燒傷,每回合5%
	boolean burns3;// 3級燒傷,每回合10%

	boolean frostbite1;// 1級凍傷,每回合2%
	boolean frostbite2;// 2級凍傷,每回合5%
	boolean frostbite3;// 3級凍傷,每回合10%

	boolean poisoning1;// 1級中毒,每回合2%
	boolean poisoning2;// 2級中毒,每回合5%
	boolean poisoning3;// 3級中毒,每回合10%

	boolean deceleration;// 減速

	List<Map<String, String>> juesezhuangbeilist = new ArrayList<Map<String, String>>();// 角色裝備列表
	String[] backpackcontent = new String[99];// 揹包內容

	String equipment1;// 裝備1,武器
	String equipment2;// 裝備2,頭盔
	String equipment3;// 裝備3,上衣甲
	String equipment4;// 裝備4,下褲甲
	String equipment5;// 裝備5,鞋子
	String equipment6;// 裝備6,首飾

	boolean pojie1 = true;

	/**
	 * 破解方法 增加10倍於0級的生命值 攻擊 防禦 速度 增加 幸運點數20
	 */
	public void PoJie1() {
		if (pojie1) {
			life = life + 1000;
			attack = attack + 200;
			defend = defend + 100;
			speed = speed + 50;
			lucky = lucky + 20;
			pojie1 = false;
		}
	}

	boolean pojie2 = true;

	/**
	 * 破解方法 增加20倍於0級的生命值 攻擊 防禦 速度 增加 幸運點數50
	 */
	public void PoJie2() {
		if (pojie2) {
			life = life + 2000;
			attack = attack + 400;
			defend = defend + 200;
			speed = speed + 100;
			lucky = lucky + 50;
			pojie2 = false;
		}
	}

}

PlayerJFrame.java

玩家介面,裡面是玩家的各種資訊

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

/**
 * 人物介面
 * 
 * @author 莫言情難忘
 *
 */
public class PlayerJFrame extends JFrame implements GameConfig {

	public PlayerJFrame() {

		JFrame playerjframe = new JFrame("人物詳情");
		JPanel playerJPanel = new JPanel();

		// 設定字型
		Font font = new Font("楷體", 0, 20);
		// 設定文字字型
		UIManager.put("Label.font", font);

		// 稱號
		JLabel jLabel_designation = new JLabel("稱號:" + player.designation, JLabel.CENTER);
		jLabel_designation.setFont(font);
		jLabel_designation.setBounds(0, 0, 200, 20);
		// 名字
		JLabel jLabel_name = new JLabel(player.name, JLabel.CENTER);
		jLabel_name.setFont(font);
		jLabel_name.setBounds(0, 20, 200, 20);
		// 年齡
		JLabel jLabel_age = new JLabel(String.valueOf(player.age) + "歲", JLabel.CENTER);
		jLabel_age.setFont(font);
		jLabel_age.setBounds(0, 40, 100, 20);
		// 性別
		JLabel jLabel_sex = new JLabel(player.sex, JLabel.CENTER);
		jLabel_sex.setFont(font);
		jLabel_sex.setBounds(100, 40, 100, 20);
		// 等級
		JLabel jLabel_leave = new JLabel("等級:" + String.valueOf(player.leave), JLabel.CENTER);
		jLabel_leave.setFont(font);
		jLabel_leave.setBounds(0, 60, 200, 20);
		// 經驗
		JLabel jLabel_jingyan = new JLabel("經驗:" + String.valueOf(player.jingyan), JLabel.CENTER);
		jLabel_jingyan.setFont(font);
		jLabel_jingyan.setBounds(0, 80, 200, 20);
		// 生命值
		JLabel jLabel_life = new JLabel("生命" + String.valueOf(player.life), JLabel.CENTER);
		jLabel_life.setFont(font);
		jLabel_life.setBounds(0, 100, 200, 20);
		// 攻擊
		JLabel jLabel_attack = new JLabel("攻擊" + String.valueOf(player.attack), JLabel.CENTER);
		jLabel_attack.setFont(font);
		jLabel_attack.setBounds(0, 120, 100, 20);
		// 防禦
		JLabel jLabel_defend = new JLabel("防禦" + String.valueOf(player.defend), JLabel.CENTER);
		jLabel_defend.setFont(font);
		jLabel_defend.setBounds(100, 120, 100, 20);
		// 速度
		JLabel jLabel_speed = new JLabel("速度" + String.valueOf(player.speed), JLabel.CENTER);
		jLabel_speed.setFont(font);
		jLabel_speed.setBounds(0, 140, 100, 20);
		// 暴擊
		JLabel jLabel_violent = new JLabel("暴擊" + String.valueOf(player.violent), JLabel.CENTER);
		jLabel_violent.setFont(font);
		jLabel_violent.setBounds(100, 140, 100, 20);
		// 善惡
		JLabel jLabel_goodevil = new JLabel("善惡" + String.valueOf(player.goodevil), JLabel.CENTER);
		jLabel_goodevil.setFont(font);
		jLabel_goodevil.setBounds(0, 180, 200, 20);
		// 聲望
		JLabel jLabel_prestige = new JLabel("聲望" + String.valueOf(player.prestige), JLabel.CENTER);
		jLabel_prestige.setFont(font);
		jLabel_prestige.setBounds(0, 200, 200, 20);
		// 門派
		JLabel jLabel_faction = new JLabel("門派" + String.valueOf(player.faction), JLabel.CENTER);// 門派
		jLabel_faction.setFont(font);
		jLabel_faction.setBounds(0, 220, 200, 20);
		// 幸運
		JLabel jLabel_lucky = new JLabel("幸運" + String.valueOf(player.lucky), JLabel.CENTER);
		jLabel_lucky.setFont(font);
		jLabel_lucky.setBounds(0, 240, 200, 20);
		// 裝備列表
		JLabel[] jLable_zhuangbei = new JLabel[6];
		for (int i = 0; i < 6; i++) {
			jLable_zhuangbei[i] = new JLabel();
		}
		jLable_zhuangbei[0].setText("裝備1:" + "空");
		jLable_zhuangbei[0].setFont(font);
		jLable_zhuangbei[0].setHorizontalAlignment(JLabel.CENTER);
		jLable_zhuangbei[1].setText("裝備2:" + "空");
		jLable_zhuangbei[1].setFont(font);
		jLable_zhuangbei[1].setHorizontalAlignment(JLabel.CENTER);
		jLable_zhuangbei[2].setText("裝備3:" + "空");
		jLable_zhuangbei[2].setFont(font);
		jLable_zhuangbei[2].setHorizontalAlignment(JLabel.CENTER);
		jLable_zhuangbei[3].setText("裝備4:" + "空");
		jLable_zhuangbei[3].setFont(font);
		jLable_zhuangbei[3].setHorizontalAlignment(JLabel.CENTER);
		jLable_zhuangbei[4].setText("裝備5:" + "空");
		jLable_zhuangbei[4].setFont(font);
		jLable_zhuangbei[4].setHorizontalAlignment(JLabel.CENTER);
		jLable_zhuangbei[5].setText("裝備6:" + "空");
		jLable_zhuangbei[5].setFont(font);
		jLable_zhuangbei[5].setHorizontalAlignment(JLabel.CENTER);
		jLable_zhuangbei[0].setBounds(0, 260, 200, 20);
		jLable_zhuangbei[1].setBounds(0, 280, 200, 20);
		jLable_zhuangbei[2].setBounds(0, 300, 200, 20);
		jLable_zhuangbei[3].setBounds(0, 320, 200, 20);
		jLable_zhuangbei[4].setBounds(0, 340, 200, 20);
		jLable_zhuangbei[5].setBounds(0, 360, 200, 20);
		// 關閉人物詳情介面
		JButton close = new JButton("關閉介面");
		close.setFont(font);
		close.setBounds(20, 380, 160, 35);
		// 關閉人物詳情介面的按鈕觸發
		close.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				playerjframe.dispose();
			}
		});
		// 面板新增元件
		playerJPanel.add(jLabel_designation);
		playerJPanel.add(jLabel_name);
		playerJPanel.add(jLabel_age);
		playerJPanel.add(jLabel_sex);
		playerJPanel.add(jLabel_leave);
		playerJPanel.add(jLabel_jingyan);
		playerJPanel.add(jLabel_life);
		playerJPanel.add(jLabel_attack);
		playerJPanel.add(jLabel_defend);
		playerJPanel.add(jLabel_speed);
		playerJPanel.add(jLabel_violent);
		playerJPanel.add(jLabel_goodevil);
		playerJPanel.add(jLabel_prestige);
		playerJPanel.add(jLabel_faction);
		playerJPanel.add(jLabel_lucky);
		playerJPanel.add(jLable_zhuangbei[0]);
		playerJPanel.add(jLable_zhuangbei[1]);
		playerJPanel.add(jLable_zhuangbei[2]);
		playerJPanel.add(jLable_zhuangbei[3]);
		playerJPanel.add(jLable_zhuangbei[4]);
		playerJPanel.add(jLable_zhuangbei[5]);
		playerJPanel.add(close);
		// 設定佈局格式
		playerJPanel.setLayout(null);
		// JFame新增面板
		playerjframe.add(playerJPanel);
		playerjframe.setSize(200, 450);
		// 設定在最前顯示
		playerjframe.setAlwaysOnTop(true);
		// 關閉方式,DISPOSE_ON_CLOSE,隱藏並釋放窗體,dispose(),當最後一個視窗被釋放後,則程式也隨之執行結束。
		playerjframe.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		// 設定窗體居中
		playerjframe.setLocationRelativeTo(null);
		// 大小不可變
		playerjframe.setResizable(false);
		// 顯示介面
		playerjframe.setVisible(true);
	}
}

BackpackJFrame.java

揹包介面,內容為你的揹包的東西

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;

/**
 * 揹包介面
 * 
 * @author 莫言情難忘 1179307527
 *
 */
public class BackpackJFrame extends JFrame implements GameConfig {

	public BackpackJFrame() {

		JFrame backpackjframe = new JFrame("揹包詳情");
		JPanel backpackJPanel = new JPanel();

		// 設定字型
		Font font = new Font("楷體", 0, 20);
		// 設定文字字型
		UIManager.put("Label.font", font);
		// 設定佈局格式
		backpackJPanel.setLayout(null);
		// 面板新增元件
		JButton[] JButton_zhuangbei = new JButton[99];
		for (int i = 0; i < 33; i++) {
			for (int j = 0; j < 3; j++) {
				JButton_zhuangbei[i * 3 + j] = new JButton();
				JButton_zhuangbei[i * 3 + j].setText(GameUtil.StringToHtml(
						GameUtil.取指定文字(UnitXLS.取內容(player.juesezhuangbeilist, i * 3 + j), "名稱=", "}"), 3));
				JButton_zhuangbei[i * 3 + j].setFont(font);
				backpackJPanel.add(JButton_zhuangbei[i * 3 + j]);
				// 設定位置
				JButton_zhuangbei[i * 3 + j].setBounds(j * 100, i * 100, 100, 100);// i=縱 j=橫
			}
		}
		ActionListener jbutton = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				int k = -1;
				// html標準格式頭
				String strhtmltou = "<html>";
				// html標準格式尾
				String strhtmlwei = "</html>";
				// 迴圈判斷點選的按鈕的
				for (int i = 0; i < 99; i++) {
					if (!GameUtil.取指定文字(e.getSource().toString(), "text=", ",").equals("空")) {
						if (GameUtil.HtmlToString(GameUtil.取指定文字(e.getSource().toString(), strhtmltou, strhtmlwei))
								.equals(GameUtil.取指定文字(UnitXLS.取內容(zhuangbeilist, i), "名稱=", ","))) {
							k = i;
						}
					}
				}
				// 開啟該ID的裝備資訊
				if (k != -1) {
					new EquipDetailJFrame(k);
				}

			}
		};

		for (int i = 0; i < JButton_zhuangbei.length; i++) {
			JButton_zhuangbei[i].addActionListener(jbutton);
		}
		// JFame新增面板
		// backpackJPanel.setSize(300, 3300);採用下面的方法設定大小
		backpackJPanel.setPreferredSize(new Dimension(300, 3300));
		// 向jscrollpane中新增揹包面板
		JScrollPane jsp = new JScrollPane(backpackJPanel);
		// Jfame新增JScerollPane
		backpackjframe.add(jsp);
		// 設定大小
		backpackjframe.setSize(324, 335);
		// 關閉方式,DISPOSE_ON_CLOSE,隱藏並釋放窗體,dispose(),當最後一個視窗被釋放後,則程式也隨之執行結束。
		backpackjframe.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		// 設定在最前顯示
		backpackjframe.setAlwaysOnTop(true);
		// 設定窗體居中
		backpackjframe.setLocationRelativeTo(null);
		// 大小不可變
		backpackjframe.setResizable(false);
		// 顯示介面
		backpackjframe.setVisible(true);
	}
}

 

EquipDetailJFrame.java

物品詳情介面

import java.awt.Font;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

/**
 * 物品詳情介面
 * 
 * @author 莫言情難忘 1179307527
 */
public class EquipDetailJFrame implements GameConfig {
	/**
	 * 物品詳情介面,ID為物品ID
	 * 
	 * @param ID
	 */
	public EquipDetailJFrame(int ID) {

		JFrame equipdetailjframe = new JFrame("詳情");
		JPanel equipdetailJPanel = new JPanel();
		equipdetailJPanel.setLayout(null);
		// 設定字型
		Font font = new Font("楷體", 0, 20);
		// 設定文字字型
		UIManager.put("Label.font", font);

		// attribute屬性
		String[] attribute = { "ID", "品質", "位置", "名稱", "說明", "等級", "善惡", "門派", "生命", "攻擊", "防禦", "速度", "暴擊", "命中", "閃避",
				"生命加成", "攻擊加成", "防禦加成", "速度加成", "吸血" };
		// JLabel 品質,位置,名稱,說明,等級,善惡,幫派,幸運,生命,攻擊,防禦,速度,暴擊,命中,閃避,生命加成,攻擊加成,防禦加成,速度加成,吸血;
		// 品質=new JLabel(GameUtil.取指定文字(UnitXLS.取內容(ID),"品質",","));
		// 武器=new JLabel(GameUtil.取指定文字(UnitXLS.取內容(ID),"武器",","));
		// 上面那種太麻煩,改為下面的
		JLabel[] JLabel_attribute = new JLabel[20];
		for (int i = 0, k = JLabel_attribute.length; i < k; i++) {
			// for迴圈直接初始化
			if (i == k - 1) {
				JLabel_attribute[i] = new JLabel(
						GameUtil.取指定文字(UnitXLS.取內容(zhuangbeilist, ID), attribute[i] + "=", "}"), JLabel.CENTER);
			} else {
				JLabel_attribute[i] = new JLabel(
						GameUtil.取指定文字(UnitXLS.取內容(zhuangbeilist, ID), attribute[i] + "=", ","), JLabel.CENTER);
			}

			// 新增字型
			JLabel_attribute[i].setFont(font);
		}
		// 設定位置,ID
		JLabel_attribute[0].setText(attribute[0] + ":" + GameUtil.取點前(JLabel_attribute[0].getText()));
		JLabel_attribute[0].setBounds(0, 0, 250, 20);
		// 名稱
		JLabel_attribute[3].setText(JLabel_attribute[3].getText());
		JLabel_attribute[3].setBounds(0, 20, 250, 20);
		// 品質
		JLabel_attribute[1].setText(attribute[1] + ":" + JLabel_attribute[1].getText());
		JLabel_attribute[1].setBounds(0, 40, 130, 20);
		// 位置
		JLabel_attribute[2].setText(attribute[2] + ":" + JLabel_attribute[2].getText());
		JLabel_attribute[2].setBounds(130, 40, 130, 20);
		// 攻擊
		JLabel_attribute[9].setText(attribute[9] + ":" + GameUtil.取點前(JLabel_attribute[9].getText()));
		JLabel_attribute[9].setBounds(0, 60, 130, 20);
		// 防禦
		JLabel_attribute[10].setText(attribute[10] + ":" + GameUtil.取點前(JLabel_attribute[10].getText()));
		JLabel_attribute[10].setBounds(130, 60, 130, 20);
		// 速度
		JLabel_attribute[11].setText(attribute[11] + ":" + GameUtil.取點前(JLabel_attribute[11].getText()));
		JLabel_attribute[11].setBounds(0, 80, 130, 20);
		// 暴擊
		JLabel_attribute[12].setText(attribute[12] + ":" + GameUtil.取點前(JLabel_attribute[12].getText()));
		JLabel_attribute[12].setBounds(130, 80, 130, 20);
		// 命中
		JLabel_attribute[13].setText(attribute[13] + ":" + GameUtil.取點前(JLabel_attribute[13].getText()));
		JLabel_attribute[13].setBounds(0, 100, 130, 20);
		// 閃避
		JLabel_attribute[14].setText(attribute[14] + ":" + GameUtil.取點前(JLabel_attribute[14].getText()));
		JLabel_attribute[14].setBounds(130, 100, 130, 20);
		// 吸血
		JLabel_attribute[19].setText(attribute[19] + ":" + GameUtil.取點前(JLabel_attribute[19].getText()));
		JLabel_attribute[19].setBounds(0, 120, 130, 20);
		// 生命加成
		JLabel_attribute[15].setText(attribute[15] + ":" + GameUtil.取點前(JLabel_attribute[15].getText()));
		JLabel_attribute[15].setBounds(0, 140, 130, 20);
		// 攻擊加成
		JLabel_attribute[16].setText(attribute[16] + ":" + GameUtil.取點前(JLabel_attribute[16].getText()));
		JLabel_attribute[16].setBounds(130, 140, 130, 20);
		// 防禦加成
		JLabel_attribute[17].setText(attribute[17] + ":" + GameUtil.取點前(JLabel_attribute[17].getText()));
		JLabel_attribute[17].setBounds(0, 160, 130, 20);
		// 速度加成
		JLabel_attribute[18].setText(attribute[18] + ":" + GameUtil.取點前(JLabel_attribute[18].getText()));
		JLabel_attribute[18].setBounds(130, 160, 130, 20);
		// 等級
		JLabel_attribute[5]
				.setText(attribute[5] + "需求:" + GameUtil.ZeroToWu(GameUtil.取點前(JLabel_attribute[5].getText())));
		JLabel_attribute[5].setBounds(0, 180, 260, 20);
		// 善惡
		JLabel_attribute[6]
				.setText(attribute[6] + "需求:" + GameUtil.ZeroToWu(GameUtil.取點前(JLabel_attribute[6].getText())));
		JLabel_attribute[6].setBounds(0, 200, 260, 20);
		// 幫派
		JLabel_attribute[7]
				.setText(attribute[7] + "需求:" + GameUtil.Faction(GameUtil.取點前(JLabel_attribute[7].getText())));
		JLabel_attribute[7].setBounds(0, 220, 260, 20);
		// 說明
		JLabel_attribute[4].setText(
				GameUtil.StringToHtml(attribute[4] + ":" + GameUtil.Faction(JLabel_attribute[4].getText()), 12));
		JLabel_attribute[4].setBounds(0, 240, 260, 100);
		/**
		 * { "ID", "品質", "位置", "名稱", "說明", "等級", "善惡", "幫派", , "生命", "攻擊", "防禦", "速度",
		 * "暴擊", "命中", "閃避", "生命加成", "攻擊加成", "防禦加成", "速度加成", "吸血" };
		 */
		// JLabel_attribute[14].setText(attribute[14] + ":"
		// +GameUtil.取點前(JLabel_attribute[14].getText()));
		// JLabel_attribute[14].setBounds(0, 120, 130, 20);
		for (int i = 0, k = JLabel_attribute.length; i < k; i++) {
			equipdetailJPanel.add(JLabel_attribute[i]);
		}

		JButton 裝備 = new JButton("裝備");
		JButton 卸下 = new JButton("卸下");
		裝備.setFont(font);
		卸下.setFont(font);
		裝備.setBounds(0, 350, 130, 40);
		卸下.setBounds(130, 350, 130, 40);
		equipdetailJPanel.add(裝備);
		equipdetailJPanel.add(卸下);

		// JFame新增面板
		equipdetailjframe.add(equipdetailJPanel);
		// 設定大小
		equipdetailjframe.setSize(260, 420);
		// 關閉方式,DISPOSE_ON_CLOSE,隱藏並釋放窗體,dispose(),當最後一個視窗被釋放後,則程式也隨之執行結束。
		equipdetailjframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		// 設定在最前顯示
		equipdetailjframe.setAlwaysOnTop(true);
		// 設定窗體居中
		equipdetailjframe.setLocationRelativeTo(null);
		// 大小不可變
		equipdetailjframe.setResizable(false);
		// 顯示介面
		equipdetailjframe.setVisible(true);

	}

}

 

UnitXLS.java

讀取XLS的工具類

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * XLS操作
 * 
 * @author 莫言情難忘
 *
 */
public class UnitXLS implements GameConfig {

	public static void AddXls(List<Map<String, String>> list, String filePath, String[] queue) {
		// Excel文件
		Workbook wb = null;
		// Excel文件中的一個sheet
		Sheet sheet = null;
		// 對應一個sheet中的一行
		Row row = null;

		String cellData = null;

		// 將xls賦值到wb
		wb = readExcel(filePath);
		if (wb != null) {
			// 用來存放表中資料
			// list = new ArrayList<Map<String, String>>();
			// 獲取第一個sheet
			sheet = wb.getSheetAt(0);
			// 獲取最大行數
			int rownum = sheet.getPhysicalNumberOfRows();
			// 獲取第一行
			row = sheet.getRow(0);
			// 獲取最大列數
			int colnum = row.getPhysicalNumberOfCells();
			for (int i = 1; i < rownum; i++) {
				Map<String, String> map = new LinkedHashMap<String, String>();
				row = sheet.getRow(i);
				if (row != null) {
					for (int j = 0; j < colnum; j++) {
						cellData = (String) getCellFormatValue(row.getCell(j));
						map.put(queue[j], cellData);
					}
				} else {
					break;
				}
				list.add(map);
			}
		}
		// 遍歷解析出來的list
		// for (Map<String,String> map : list) {
		// for (Entry<String,String> entry : map.entrySet()) {
		// System.out.print(entry.getKey()+":"+entry.getValue()+",");
		// }
		// System.out.println();
		// }
	}

	/**
	 * @param ID
	 * 
	 * @return string型別的全部資訊
	 */
	// ID為第幾行,僅僅使用這個方法,在使用這個方法前,要呼叫下AddXls初始化
	public static String 取內容(List<Map<String, String>> list, int ID) {
		return String.valueOf(list.get(ID));
	}

	// 讀取excel
	public static Workbook readExcel(String filePath) {
		Workbook wb = null;
		// 如果沒有該文件
		if (filePath == null) {
			return null;
		}
		// 取檔案字尾名
		String extString = filePath.substring(filePath.lastIndexOf("."));
		InputStream is = null;
		try {
			is = new FileInputStream(filePath);
			if (".xls".equals(extString)) {
				return wb = new HSSFWorkbook(is);
			} else if (".xlsx".equals(extString)) {
				return wb = new XSSFWorkbook(is);
			} else {
				return wb = null;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return wb;
	}

	/**
	 * 獲取單元格中的值並轉化成string
	 * 
	 * @param cell
	 *            單元格
	 * @return
	 */
	public static Object getCellFormatValue(Cell cell) {
		Object cellValue = null;
		if (cell != null) {
			// 判斷cell型別
			switch (cell.getCellType()) {
			case NUMERIC: {
				cellValue = String.valueOf(cell.getNumericCellValue());
				break;
			}
			case STRING: {
				cellValue = cell.getRichStringCellValue().getString();
				break;
			}
			default:
				cellValue = "";
			}
		} else {
			cellValue = "";
		}
		return cellValue;
	}

}

 

GameUtil.java

遊戲工具類

/**
 * 
 * @author 莫言情難忘 1179307527
 *
 */
public class GameUtil {
	// 求減少生命值的方法 方法用static 修飾 ,呼叫時 類名.方法名
	public static int getLoseLife(int attack, int defend) {
		return attack - defend;
	}

	// 求a-b之間隨機數方法
	public static int getNumber(int a, int b) {
		// 求任意兩個數之間的隨機數(int)
		return (int) (Math.random() * (b - a) + a);
	}

	/**
	 * 將文字中左邊文字與右邊文字中間的String取出來
	 * 
	 * @param 文字
	 * @param 左邊文字
	 * @param 右邊文字
	 * @return String
	 */
	public static String 取指定文字(String 文字, String 左邊文字, String 右邊文字) {
		// int indexOf(String str)
		// 返回指定子字串在此字串中第一次出現處的索引。
		// int indexOf(int ch, int fromIndex)
		// 返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。
		// String substring(int beginIndex, int endIndex)
		// 返回一個新字串,它是此字串的一個子字串

		int 左邊 = 文字.indexOf(左邊文字);
		int 右邊 = 文字.indexOf(右邊文字, 左邊);
		return 文字.substring(左邊 + 左邊文字.length(), 右邊);
	}

	/**
	 * 因為JButton是不自動換行的,但是支援html中的換行,所以寫這個為了方便換行
	 * 
	 * @param str
	 *            文字
	 * @param length
	 *            每隔length長度換行
	 * @return
	 */
	public static String StringToHtml(String str, int length) {
		// html換行符
		String strhtmlbr = "<br>";
		// html標準格式頭
		String strhtmltou = "<html>";
		// html標準格式尾
		String strhtmlwei = "</html>";
		// 字串總長度
		int strlength = str.length();
		// 迴圈次數
		int k = strlength / length;
		// 一開始的思路:
		// 存放string每一小段
		// String[] strings = new String[99];
		// 初次迴圈取出str賦值到陣列
		// for (int i = 0; i < k; i++) {
		// strings[i] = str.substring(i * length, i * length + length);
		// }
		// //連線頭和第一個文字
		// String strreturn = strhtmltou.concat(strings[0]);
		// //for迴圈從1開始,依次連線
		// for (int i = 1; i < k; i++) {
		// strreturn = strreturn.concat(strhtmlbr + strings[i]);
		// }
		// //連線html尾
		// strreturn = strreturn.concat(strhtmlwei);

		// 此方法可以改進,改進方式如下:取消陣列,兩個for迴圈合併
		// 如果小於則直接輸出
		if (strlength < length) {
			return str;
		}
		String strreturn = strhtmltou.concat(str.substring(0 * length, 0 * length + length));
		for (int i = 1; i < k; i++) {
			strreturn = strreturn.concat(strhtmlbr + str.substring(i * length, i * length + length));
		}
		if (strlength - k * length != 0) {
			strreturn = strreturn.concat(strhtmlbr + str.substring(k * length, strlength));
		}
		strreturn = strreturn.concat(strhtmlwei);
		// 返回轉化好的html
		return strreturn;
	}

	/**
	 * 將html轉化成string,<br>
	 * =null
	 * 
	 * @param str
	 *            html文字
	 * @return string
	 */
	public static String HtmlToString(String str) {
		// html換行符
		String strhtmlbr = "<br>";
		// html標準格式頭
		String strhtmltou = "<html>";
		// html標準格式尾
		String strhtmlwei = "</html>";

		String strreturn = str.replace(strhtmltou, "");
		strreturn = strreturn.replace(strhtmlwei, "");
		strreturn = strreturn.replaceAll(strhtmlbr, "");
		// 返回轉化好的html
		return strreturn;
	}

	public static String 取點前(String str) {
		String strreturn = str.substring(0, str.indexOf("."));
		return strreturn;
	}

	/**
	 * 檢測是否為文字型的0,如果是將文字轉化成無
	 * 
	 * @return "無"
	 */
	public static String ZeroToWu(String str) {
		if (str.equals("0")) {
			str = "無";
		}
		return str;
	}

	/**
	 * 
	 * @param str
	 *            門派數字
	 * @return 門派名稱
	 */
	public static String Faction(String str) {

		switch (str) {
		case "0":
			str = "無";
			break;
		case "1":
			str = "逆天者聯盟";
			break;
		case "2":
			str = "傭兵工會";
			break;
		case "3":
			str = "刺客公會";
			break;
		case "4":
			str = "戰士公會";
			break;
		case "5":
			str = "極寒宮";
			break;
		case "6":
			str = "九霄宮";
			break;
		case "7":
			str = "無極宮";
			break;
		case "8":
			str = "火炎宮";
			break;
		case "9":
			str = "金鼎宮";
			break;
		case "10":
			str = "靈木宮";
			break;
		case "11":
			str = "赤土宮";
			break;
		case "12":
			str = "穩定宮";
			break;
		case "13":
			str = "時空宮";
			break;
		default:
			break;
		}
		return str;
	}

}

嗯emmm沒了