经过一个多月的学习终于学完了使用Java语言理解程序逻辑课程,花了一周的时间写完了项目案例——骑士飞行棋。为了方便大家的交流学习,先将代码上传,欢迎大家批评指正。注:我把Game类的play方法中‘开始游戏’部分重新写成了一个方法。
Map类:
package com.game;
public class Map {
int[] map = new int[100];// 对战地图
int[] luckyTurn = new int[] {6, 23, 40, 55, 69, 83};// 幸运轮盘
int[] landmine = new int[] {5, 13, 17, 33, 38, 50, 64, 80, 94};// 地雷
int[] pause = new int[] {9, 27, 60, 93};// 暂停
int[] timeTunnel = new int[] {20, 25, 45, 63, 72, 88, 90};// 时空隧道
/**
* 生成地图关卡 *关卡代号为:0.普通 1.地雷 2.幸运轮盘 3.暂停 4.时空隧道
*/
public void createMap() { // 在对战地图上设置地雷格
for (int item : landmine) {
map[item] = 1;
} // 在对战地图上设置幸运轮盘格
for (int value : luckyTurn) {
map[value] = 2;
} // 在对战地图上设置暂停格
for (int k : pause) {
map[k] = 3;
} // 在对战地图上设置时空隧道格
for (int j : timeTunnel) {
map[j] = 4;
}
}
/**
* * 显示地图关卡对应的图形 * @param i 地图当前位置的关卡代号 * @param index 当前地图位置编号 * @param playerPos1 玩家1的当前位置 * @param playerPos2
* 玩家2的当前位置 * @return 地图当前位置对应的图形
*/
public String getGraph(int i, int index, int playerPos1, int playerPos2) {
String graph;
createMap();
if (playerPos1 == index && playerPos2 == index) {
graph = "@@"; // 玩家1位于地图当前位置
} else if (index == playerPos1) {
graph = "A"; // 玩家2位于当前位置
} else if (index == playerPos2) {
graph = "B";
} else {
switch (i) {
case 1:
graph = "★"; // 关卡1,显示地雷
break;
case 2:
graph = "¤"; // 关卡2,显示幸运轮盘
break;
case 3:
graph = "■"; // 关卡3,显示暂停
break;
case 4:
graph = "〓"; // 关卡4,显示时空隧道
break;
default:
graph = "::";// 关卡0,显示普通格
break;
}
}
return graph;
}
/**
* * 输出地图的奇数行 * @param start 输出的起始点在地图上的位置 * @param end 输出的结束点在地图上的位置 * @param playerPos1 玩家1的当前位置 * @param
* playerPos2 玩家2的当前位置
*/
public void showLine1(int start, int end, int playerPos1, int playerPos2) {
for (int i = start; i <= end; i++) {
System.out.print(getGraph(map[i], i, playerPos1, playerPos2));
}
}
/**
* * 输出地图的偶数行 * @param start 输出的起始点在地图上的位置 * @param end 输出的结束点在地图上的位置 * @param playerPos1 玩家1的当前位置 * @param
* playerPos2 玩家2的当前位置
*/
public void showLine2(int start, int end, int playerPos1, int playerPos2) {
for (int i = end; i >= start; i--) {
System.out.print(getGraph(map[i], i, playerPos1, playerPos2));
}
}
/**
* * 显示左竖列 * @param start 输出的起始点在地图上的位置 * @param end 输出的结束点在地图上的位置 * @param playerPos1 玩家1的当前位置 * @param playerPos2
* 玩家2的当前位置
*/
public void showLeftLine(int start, int end, int playerPos1, int playerPos2) {
for (int i = start; i <= end; i++) {
System.out.print(getGraph(map[i], i, playerPos1, playerPos2));
System.out.println();
}
}
/**
* * 显示右竖列 * @param start 输出的起始点在地图上的位置 * @param end 输出的结束点在地图上的位置 * @param playerPos1 玩家1的当前位置 * @param playerPos2
* 玩家2的当前位置
*/
public void showRightLine(int start, int end, int playerPos1, int playerPos2