package s1java.xmal1;public class Map {
int map[] = new int[100];
int luckyTurn[] = {6,23,40,55,69,83};
int landMine[] = {5,13,17,33,38,50,64,80,94};
int pause[] = {9,27,60,93};
int timeTunnel[] = {20,25,45,63,72,88,90};
/**
* 生成地图
* 关卡代号为:1:幸运轮盘 2:地雷 3:暂停 4:时空隧道 0:普通
*
*/
public void createMap() {
int i = 0;
for (i = 0; i < luckyTurn.length; i++) {
map[luckyTurn[i]] = 1;
}
for (i = 0; i < landMine.length; i++) {
map[landMine[i]] = 2;
}
for (i = 0; i < pause.length; i++) {
map[pause[i]] = 3;
}
for (i = 0; i < timeTunnel.length; i++) {
map[timeTunnel[i]] = 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 = "";
if(playerPos1 == index && playerPos2 == index) {
graph = "@@";
}else if (playerPos1 == index) {
graph = "A";
}else if (playerPos2 == index) {
graph = "B";
}else {
switch(i) {
case 1:
graph = "¤";
break;
case 2:
graph = "★";
break;
case 3:
graph = "■";
break;
case 4:
graph = "〓";
break;
default:
graph = "∷";
}
}
return graph;
}
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));
}
System.out.println();
}
public void showRLine(int start,int end,int playerPos1,int playerPos2) {
for(int i = start; i <= end; i++) {
for(int j = 0; j < 30; j++) {
System.out.print(" ");
}
System.out.println(getGraph(map[i],i,playerPos1,playerPos2));
}
}
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));
}
System.out.println();
}
public void showLLine(int start,int end,int playerPos1,int playerPos2){
for(int i = start; i <= end; i++) {
System.out.println(getGraph(map[i],i,playerPos1,playerPos2));
}
}
public void showMap(int playerPos1,int playerPos2) {
createMap();
showLine1(0,30,playerPos1,playerPos2);
showRLine(31,34,playerPos1,playerPos2);
showLine2(35,65,playerPos1,playerPos2);
showLLine(66,68,playerPos1,playerPos2);
showLine1(69,99,playerPos1,playerPos2);
}}
int map[] = new int[100];
int luckyTurn[] = {6,23,40,55,69,83};
int landMine[] = {5,13,17,33,38,50,64,80,94};
int pause[] = {9,27,60,93};
int timeTunnel[] = {20,25,45,63,72,88,90};
/**
* 生成地图
* 关卡代号为:1:幸运轮盘 2:地雷 3:暂停 4:时空隧道 0:普通
*
*/
public void createMap() {
int i = 0;
for (i = 0; i < luckyTurn.length; i++) {
map[luckyTurn[i]] = 1;
}
for (i = 0; i < landMine.length; i++) {
map[landMine[i]] = 2;
}
for (i = 0; i < pause.length; i++) {
map[pause[i]] = 3;
}
for (i = 0; i < timeTunnel.length; i++) {
map[timeTunnel[i]] = 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 = "";
if(playerPos1 == index && playerPos2 == index) {
graph = "@@";
}else if (playerPos1 == index) {
graph = "A";
}else if (playerPos2 == index) {
graph = "B";
}else {
switch(i) {
case 1:
graph = "¤";
break;
case 2:
graph = "★";
break;
case 3:
graph = "■";
break;
case 4:
graph = "〓";
break;
default:
graph = "∷";
}
}
return graph;
}
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));
}
System.out.println();
}
public void showRLine(int start,int end,int playerPos1,int playerPos2) {
for(int i = start; i <= end; i++) {
for(int j = 0; j < 30; j++) {
System.out.print(" ");
}
System.out.println(getGraph(map[i],i,playerPos1,playerPos2));
}
}
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));
}
System.out.println();
}
public void showLLine(int start,int end,int playerPos1,int playerPos2){
for(int i = start; i <= end; i++) {
System.out.println(getGraph(map[i],i,playerPos1,playerPos2));
}
}
public void showMap(int playerPos1,int playerPos2) {
createMap();
showLine1(0,30,playerPos1,playerPos2);
showRLine(31,34,playerPos1,playerPos2);
showLine2(35,65,playerPos1,playerPos2);
showLLine(66,68,playerPos1,playerPos2);
showLine1(69,99,playerPos1,playerPos2);
}}
解决方案 »
- 急问!JTree里如何取得节点的深度??
- java的类库如此强大,如何全面了解呢
- java socket问题
- 求Java最短路径的算法(Dijsktra算法)
- 初学者求助:时间格式的转换
- 一个匿名类,把它改成成员类竟然不行,真怪??
- 请问网上有没有Java的帮助文档的中文版下载?
- Exception in thread "main" java.lang.NoClassDefFoundError 运行出错 如何解决?
- =====请问怎样将Java 源程序编译成 Win32 可执行文件?========
- Java/gephi,每次模块化总是出现内存溢出,求解决
- Jdbc插入blob数据遇到的问题
- java查询数据库所有表的问题,请各位大大进来帮帮忙
import java.util.*;
public class Game {
Map map; //创建Map类的对象map
int playerPos1; //记录玩家1的位置
int playerPos2; //记录玩家2的位置
String goAndStop[] = new String[2]; //记录玩家下一次是走或是停
String playerName[] = new String[2]; //记录玩家使用的角色
/**
* 初始化游戏
*/
public void initial() {
map = new Map();
playerPos1 = 0;
playerPos2 = 0;
goAndStop[0] = "on";
goAndStop[1] = "on";
}
/**
* 设置对战角色
* @param no 玩家次序 1:玩家1 2:玩家2
* @param role 角色代号 1:戴高乐 2:艾森豪威尔 3:麦克阿瑟 4:巴顿
*/
public void setRole(int no, int role) {
switch(role) {
case 1:
//设置玩家名称为“戴高乐”
playerName[no-1] = "戴高乐";
break;
case 2:
//设置玩家名称为“艾森豪威尔”
playerName[no-1] = "艾森豪威尔";
break;
case 3:
//设置玩家名称为“麦克阿瑟高乐”
playerName[no-1] = "麦克阿瑟";
break;
case 4:
//设置玩家名称为“巴顿高乐”
playerName[no-1] = "巴顿";
break;
}
}
/**
* 游戏界面及游戏相关配置
*/
public void start() {
initial();
System.out.println("\n\t\t\t\t\t**************************************************");
System.out.println("\t\t\t\t\t// //");
System.out.println("\t\t\t\t\t// //");
System.out.println("\t\t\t\t\t// 骑 士 飞 行 棋 //");
System.out.println("\t\t\t\t\t// //");
System.out.println("\t\t\t\t\t// //");
System.out.println("\t\t\t\t\t**************************************************\n\n");
System.out.println("\n\n\t\t\t\t\t-------------------两 人 对 战---------------------");
System.out.println("\n\n请选择角色:1.戴高乐 2.艾森豪威尔 3.麦克阿瑟 4.巴顿");
boolean con;
do {
con = false;
System.out.print("\n请玩家1选择角色:");
Scanner input = new Scanner(System.in);
int role = input.nextInt();
setRole(1,role);
System.out.print("\n请玩家2选择角色:");
int role1 = input.nextInt();
setRole(2,role1);
if(role == role1) {
System.out.println("\n请玩家从新选择!");
con = true;
}else {
}
}while(con);
play();
}
/**
* 两人对战玩法
*/
public void play() {
System.out.println("\n\n\n\n");
System.out.print("\n\n\t\t\t\t\t****************************************************\n\n");
System.out.print("\t\t\t\t\t Game Start \n");
System.out.print("\n\t\t\t\t\t****************************************************\n\n");
//显示对战双方士兵
System.out.println("^-^"+playerName[0]+"的士兵: A");
System.out.println("^-^"+playerName[1]+"的士兵: B\n");
//显示对战地图
System.out.println("\n图例: ■ 暂停 ¤ 幸运轮盘 ★ 地雷 〓 时空隧道 ∷ 普通\n");
map.showMap(playerPos1, playerPos2);
//游戏开始
int step; //存储色子数目
while(playerPos1 < 99 && playerPos2 < 99) { //有认可一方走到终点,跳出循环
//轮流掷色子
if(goAndStop[0].equals("on")) {
//玩家1掷色子
step = throwShifter(1); //掷色子
System.out.println("\n-----------------------------"); //显示结果信息
System.out.println(playerName[0]+"的色子数:"+step);
playerPos1 = getCurPos(1,playerPos1,step); //计算这一次移动后的当前位置
System.out.println("\n您当前位置: "+playerPos1);
System.out.println("\n对方当前位置: "+playerPos2);
System.out.println("-----------------------------\n");
map.showMap(playerPos1,playerPos2); //显示当前地图
if(playerPos1 == 99) { //如果走到终点
break; //退出
}
}else {
System.out.println("\n"+playerName[0]+"停止一次!\n");
goAndStop[0] = "on";
}
System.out.println("\n\n\n\n");
if(goAndStop[1].equals("on")) {
//玩家1掷色子
step = throwShifter(2); //掷色子
System.out.println("\n-----------------------------"); //显示结果信息
System.out.println(playerName[1]+"的色子数:"+step);
playerPos2 = getCurPos(2,playerPos2,step); //计算这一次移动后的当前位置
System.out.println("\n您当前位置: "+playerPos2);
System.out.println("\n对方当前位置: "+playerPos1);
System.out.println("-----------------------------\n");
map.showMap(playerPos1,playerPos2); //显示当前地图
if(playerPos2 == 99) { //如果走到终点
break; //退出
}
}else {
System.out.println("\n"+playerName[1]+"停止一次!\n");
goAndStop[1] = "on";
}
System.out.println("\n\n\n\n");
}
//游戏结束
System.out.println("\n\n\n\n");
System.out.print("\n\n\t\t\t\t\t****************************************************\n\n");
System.out.print("\t\t\t\t\t Game Over \n");
System.out.print("\n\t\t\t\t\t****************************************************\n\n");
judge();
}
/**
* 掷色子
* @param no 玩家次序
* @return step 掷色子的数目
*
*/
public int throwShifter(int no) {
System.out.print("请按任意键掷色子:");
Scanner input = new Scanner(System.in);
input.next();
int step = (int)(Math.random()*6+1);
return step;
}
/**
* 计算玩家此次移动后的当前位置
* @param no 玩家次序
* @param position 移动前位置
* @param step 掷色子的数目
* @return position 移动后的位置
*/
public int getCurPos(int no, int position, int step) {
position += step; //第一次移动后的位置
if(position >= 99) {
return 99;
}
Scanner input = new Scanner(System.in);
switch(map.map[position]) { //根据地图中的关卡代号进行判断
case 0: //走到普通格
if(playerPos1 == position) { //如果玩家1遇到玩家2
playerPos2 = 0; //玩家2回起点
System.out.println("仇人见面,分外眼红!给我回起点!");
}
if(playerPos2 == position) { //如果玩家2遇到玩家1
playerPos1 = 0; //玩家1回起点
System.out.println("仇人见面,分外眼红!给我回起点!");
}
break;
case 1: //幸运轮盘
System.out.println("\n\n\t\t\t\t◆◇◆◇◆欢 迎 进 入 幸 运 轮 盘◆◇◆◇◆");
System.out.println(" 请选择一种运气:");
System.out.println(" 1.交换位置 2.轰炸");
System.out.println("======================================\n");
int choice = input.nextInt();
int temp; //交换时的临时变量
switch(choice) {
case 1: //交换位置
if(no == 1) {
temp = playerPos2;
playerPos2 = position;
position = temp;
}else if(no == 2) {
temp = playerPos1;
playerPos1 = position;
position = temp;
}
break;
case 2: //轰炸
if(no == 1 && playerPos2 < 6) {
playerPos2 = 0;
}else {
playerPos2 -= 6;
}
if(no == 2 && playerPos1 < 6) {
playerPos1 = 0;
}else {
playerPos1 -= 6;
}
break;
}
break;
case 2: //踩到地雷
position -= 6;
System.out.println("我晕,踩到地雷了,气死了!");
break;
case 3: //下一次暂停一次
if(no == 1) {
goAndStop[0] = "off";
System.out.println(playerName[0]+"将军停战一局 -->_<-- ");
}
if(no == 2) {
goAndStop[1] = "off";
System.out.println(playerName[1]+"将军停战一局 -->_<-- ");
}
break;
case 4: //时空隧道
position += 10;
System.out.println("|-) 进入时空隧道了,娃哈哈,好爽,我飞!");
break;
}
//返回此次掷色子后玩家的坐标位置
if(position < 0) {
return 0;
}else if(position > 99) {
return 99;
}else {
return position;
}
}
/**
* 显示对战结果
*/
public void judge() {
if(playerPos1 > playerPos2) {
System.out.println("恭喜!"+playerName[0]+"将军获得了胜利!");
}else {
System.out.println("恭喜!"+playerName[1]+"将军获得了胜利!");
}
}
/**
* @author edison
* 游戏开始
*/
public static void main(String[] args) {
Game game = new Game();
game.start(); }}
/*
* 描述:制作飞行棋地图类
*
* 作者:刘华升
*
* 时间:第1次 写: 2008年8月10日
* 第2次 写: 2008年8月11日
* 第3次 写: 2008年8月12日
*/
package CavalierFlyChess;
public class Map {
//建立数组:
int[] map = new int[100]; //地图有100格子
int[] luckyturn = {14,35,55,85,95}; //幸运轮盘的 位子
int[] dead = {7,24,53,68,75,83,97}; //地雷的 位子
int[] pause = {9,18,26,32,46,57,65,88,94}; //暂停的 位子
int[] turn = {10,15,58,67,73,88,92}; //时空穿梭的 位子
public void creatMap(){
int i = 0 ;
//生成地图
for(i=0;i<luckyturn.length;i++){
map[luckyturn[i]] = 1 ;
}
for(i=0;i<dead.length;i++){
map[dead[i]] = 2 ;
}
for(i=0;i<pause.length;i++){
map[pause[i]] = 3 ;
}
for(i=0;i<turn.length;i++){
map[turn[i]] = 4 ;
}
}
/*
* 显示地图:
* 设置幸运转盘、地雷、暂停、时空穿梭、 普通格的图象。
* 编写1.3行的地图
* 编写2行的地图
* 编写右边行的地图
* 编写左边行的地图
* i为关卡代号;
* index为当前地图编号
* playerPos1为玩家1的地图编号
* playerPos2为玩家2的地图编号
*
*
*/
public String getGraph(int i , int index , int playerPos1, int playerPos2){
String graph = " ";
//显示地图
//当2个人在一起的时候显示@@
if(index == playerPos1 && index== playerPos2){
graph = "@@";
}//玩家一显示A
else if(index == playerPos1){
graph = "A";
}//玩家二显示B
else if(index == playerPos2){
graph = "B";
}else{
switch(i){
case 1: //幸运轮盘
graph = "¤";
break;
case 2: //地雷
graph = "★";
break;
case 3: //暂停
graph = "■";
break;
case 4: //时空隧道
graph = "〓";
break;
default:
graph = "∷"; //普通格子
}
}
return graph;
}
//第一行 和第三行 地图
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));
}
}
//第二行 地图
public void showLine2(int start, int end, int playerPos1, int playerPos2){
for(int i = end - 1; i > start -1 ; i-- ){
System.out.print(getGraph(map[i], i,playerPos1, playerPos2));
}
}
//右边的地图
public void showLineR(int start,int end , int playerPos1,int playerPos2){
for (int i = start ; i < end ; i++) {
for (int j = 29 ; j > 0; j-- ) {
System.out.print(" ");
}
System.out.println(getGraph(map[i], i, playerPos1, playerPos2));
}
}
//左边的地图
public void showLineL(int start, int end, int playerPos1, int playerPos2){
for(int i = start; i < end; i++){
System.out.println(getGraph(map[i], i ,playerPos1, playerPos2));
}
}
//调用 前面4个地图,生成总的地图。
public void showMap(int playerPos1, int playerPos2){
showLine1(0, 30, playerPos1, playerPos2); //显示地图第一行
System.out.println();
showLineR(30,35, playerPos1, playerPos2); //显示地图右竖行
showLine2(35,65, playerPos1, playerPos2); //显示地图第二行
System.out.println();
showLineL(65,70, playerPos1, playerPos2); //显示地图左竖行
showLine1(70,100, playerPos1, playerPos2); //显示地图第3行
}
}
*测试地图类
*/package CavalierFlyChess;public class TestMap {
public static void main(String[] args) {
String[] goAndStop = new String[2];
String[] playerName = new String[2];
Map map = new Map();
map.creatMap();
map.showMap(36,35);
}
}
import java.util.*;
public class Game {
Scanner input = new Scanner(System.in);
//用map对象调入map类
Map map = new Map();
int playerPos1;
int playerPos2;
String[] playerName = new String[2]; //建立数组玩家名称
String[] goAndStop = new String[2]; //建立数组玩家走或者停
// 建立类玩家走或者停
public void init(){
map.creatMap(); //生成地图
int playerPos1 = 0;
int playerPos2 = 0;
goAndStop[0] = "on"; //玩家行状态开
goAndStop[1] = "on";
}
//建立选择人物类
public void setRole(int no,int role){
switch(role){
case 1:
playerName[no-1] = "戴高乐" ;
break;
case 2:
playerName[no-1] = "艾森豪威尔";
break;
case 3:
playerName[no-1] = "麦克阿瑟";
break;
case 4:
playerName[no-1] = "巴顿";
break;
}
}
//建立游戏开始类
public void start(){
//调入对象的初始属性
init();
Scanner input = new Scanner(System.in);
System.out.println("*************************************************************************");
System.out.println("// //");
System.out.println("// //");
System.out.println("// 骑士飞行棋 //");
System.out.println("// //");
System.out.println("// //");
System.out.println("*************************************************************************");
System.out.println("\n\n\n\n\n");
System.out.println("***********************两人对战********************************************");
System.out.println("请选择角色:1、戴高乐 2、艾森豪威尔 3、麦克阿瑟 4、巴顿");
int choice1 = 0 ;
int choice2 = 0 ;
System.out.print("\n请玩家1选择:");
choice1 = input.nextInt();
//判断玩家2是否和 玩家1重复选择
do{
System.out.print("请玩家2选择:");
choice2 = input.nextInt();
}while(choice2 == choice1);
setRole(1, choice1);
setRole(2, choice2);
play();
}
//建立游戏 中的类
public void play(){
System.out.println("\n\n\n\n");
System.out.println("*******************************************************************************");
System.out.println("// //");
System.out.println("// Game Start //");
System.out.println("// //");
System.out.println("********************************************************************************\n\n");
System.out.println("^_^" +playerName[0] + "的士兵: A ");
System.out.println("^_^" +playerName[1] + "的士兵: B \n ");
System.out.println("\n图例:"+ "暂停 幸运轮盘 地雷 时空隧道");
map.showMap(playerPos1, playerPos2);
int step;
//当玩家都没有到99格的时候
while(playerPos1 < 99 && playerPos2 < 99){
//当玩家1开始走棋的时候
if(goAndStop[0].equals("on")){
step = throwShifter(' ');
System.out.println("\n -------------------");
System.out.println("骰子数" + step);
playerPos1 =getCurPos(1,playerPos1,step);
System.out.println("\n 当前你的位子:" + playerPos1);
System.out.println("\n 当前对方的位子:" + playerPos2);
System.out.println("-----------------------\n");
map.showMap(playerPos1, playerPos2);
//如果玩家1 到了终点
if(playerPos1 == 99){
gameOver();
break;
}
}//如果玩家1没有到终点
else{
System.out.println("\n" + playerName[0] + "休息!! \n");
goAndStop[0] = "on";
}
System.out.println("\n\n\n\n");
//当玩家2开始走棋的时候
if(goAndStop[1].equals("on"));
step = throwShifter(' ');
System.out.println("\n -----------------------");
System.out.println("骰子数: " + step);
playerPos2=getCurPos(2,playerPos2,step);
System.out.println("\n 当前你的位子:" +playerPos2);
System.out.println("\n 当前对方的位子:" + playerPos1);
map.showMap(playerPos1, playerPos2);
if(playerPos2 == 99){
gameOver();
break;
}else{
System.out.println(" \n" + playerName[1] + " 休息一次!!! \n");
goAndStop[1] = "on" ;
}
}
System.out.println("\n\n\n\n");
} //建立丢骰子类
public int throwShifter(char no){
Scanner input = new Scanner(System.in);
System.out.println();
System.out.println("请丢骰子");
no = input.next().charAt(0);
int step = (int)(Math.random()*10%6+1);
return step;
}
//建立玩家在游戏过程中碰到的情况的类
public int getCurPos(int no,int position,int step){
position = position + step ;
if(position > 99){
return 99 ;
}
//当相互碰到一起的情况
switch(map.map[position]){
//在普通格子里
case 0 :
//如果2人碰到一起了
//玩家2 碰到玩家1 玩家1回家
if(no == 1 && playerPos2 == position){
System.out.println("哈哈 踩到你了!!" + playerName[no] + ":-D");
playerPos2 = 0 ;
}
//玩家1 碰到玩家2 玩家2回家
else if(no == 2 && playerPos1 == position){
playerPos1 = 0;
System.out.println("哈哈 踩到你了!!" + playerName[no - 1] + ":-D");
}
break;
//玩家碰到幸运轮盘的情况
case 1:
System.out.println("欢迎进入幸运轮盘!!");
System.out.println("请选择:\n 1.交换位子\t 2.轰炸");
int choice = input.nextInt();
int temp ;
switch(choice){
//当玩家选择交换位子
case 1 :
if(no == 1){
temp = position ;
position = playerPos2 ;
playerPos2 = temp ;
}else if(no == 2){
temp = position ;
position = playerPos1 ;
playerPos1 = temp ;
}
break;
//当玩家选择轰炸 这另一个玩家退后6格
case 2 :
if( no == 1 && playerPos2 < 6 ){
playerPos2 = 0 ;
}else if( no == 1 && playerPos2 >6 ){
playerPos2 -= 6 ;
}else if(no == 2 && playerPos1 < 6 ){
playerPos1 = 0 ;
}else{
playerPos1 -= 6 ;
}
break;
}
break;
//踩到地雷的情况
case 2:
position = position - 6 ;
System.out.println("踩到地雷了,气死了!!!");
break;
//遇到暂停的情况
case 3:
goAndStop[no-1] = "off" ;
System.out.println("休息,休息一会!!!");
break;
//遇到时空穿梭的情况
case 4:
position = position + 10 ;
System.out.println("坐飞机就是爽啊!!!");
break;
}
if(position <0){
return 0;
}else if(position>99){
return 99 ;
}else{
return position;
}
}
//游戏结束的时候
public void judge(){
//如果玩家1 到了终点
if(playerPos1 > playerPos2){
System.out.println("恭喜" + playerName[0] + "你赢的了比赛!!");
}else if(playerPos2 > playerPos1){
System.out.println("恭喜" + playerName[1] + "你赢的了比赛!!");
}
} public void gameOver(){
System.out.println("\n************************************************************************");
System.out.println("// //");
System.out.println("// Game Over //");
System.out.println("// //");
System.out.println("************************************************************************");
judge();
}
}