如何用数组绘制一个“大富翁”游戏的地图:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
                                                           ::
                                                           ::
                                                           ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
::
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
每行由三十个双冒号“::”构成,左右两列各由三个“::”组成。
将地雷:☆
暂停:■
快进:〓
后退:●
分别3,5,5,4个放置于上图中。且将玩家 “A”, “B”也至于上图,A,B及上面四个符号各占一个双冒号“::”。十万火急,似无头绪!!!

解决方案 »

  1.   

    哈哈,这个对我来说很熟悉哦。就是青鸟的骑士飞行棋项目吧。我也是过来人了,呵呵。给你看看我当时是怎么做的。
    /**
     *  骑士飞行棋-地图类
     *  陈群浩
     *  09/3/6
     *  
     */package mygame;public class Map
    {
    String[] mapArray=new String[107]; //地图数组
    int[] xylp={8,25,42,72,86}; //幸运轮盘
    int[] dilei={7,15,19,35,40,52,66,83,97}; //地雷
    int[] stop={11,31,62,74}; //暂停
    int[] sksd={22,27,47,65,86,93}; //时空隧道
    /**
     * 地图数组初始化
     */
    public void initialize()
    {
    for(int i=0;i<mapArray.length;i++) //普通格
    {
    mapArray[i]="∷";
    }
    for(int i=0;i<xylp.length;i++) //幸运轮盘
    {
    mapArray[xylp[i]]="¤";
    }
    for(int i=0;i<dilei.length;i++) //地雷
    {
    mapArray[dilei[i]]="★";
    }
    for(int i=0;i<stop.length;i++) //暂停
    {
    mapArray[stop[i]]="■";
    }
    for(int i=0;i<sksd.length;i++) //时空隧道
    {
    mapArray[sksd[i]]="〓";
    }
    }

    /**
     * 打印地图数组
     */
    public void printMapArray()
    {
    for(int i=0;i<=32;i++)
    {
    System.out.print(mapArray[i]);
    }
    System.out.println("\n\t\t\t\t\t\t\t\t"+mapArray[33]);
    System.out.println("\t\t\t\t\t\t\t\t"+mapArray[34]);
    System.out.println("\t\t\t\t\t\t\t\t"+mapArray[35]);
    System.out.println("\t\t\t\t\t\t\t\t"+mapArray[36]);
    for(int i=69;i>=37;i--)
    {
    System.out.print(mapArray[i]);
    }
    System.out.println();
    System.out.println(mapArray[70]);
    System.out.println(mapArray[71]);
    System.out.println(mapArray[72]);
    System.out.println(mapArray[73]);
    for(int i=74;i<mapArray.length;i++)
    {
    System.out.print(mapArray[i]);
    }
    }
    }
    /**
     *  骑士飞行棋-玩家类
     *  陈群浩
     *  09/3/6
     *  
     */package mygame;import java.util.Scanner;public class Player
    {
    String name; //昵称
    int place; //位置
    public static String temp; //临时用

    /**
     * 玩家选择角色
     *
     */
    public void selectRole(String s)
    {
    System.out.print(s);
    Scanner input=new Scanner(System.in);
    String num;
    //判断输入是否有问题
    while(true)
    {
    while(true)
    {
    num=input.next();
    if(num.equals("1") || num.equals("2") || num.equals("3") || num.equals("4") )
    {
    break;
    }
    else
    {
    System.out.print("输入错误!,请选择角色编号1-4:");
    }
    }

    //判断选择什么角色
    if(num.equals("1"))
    name="JAVA";
    else if(num.equals("2"))
    name="HTML";
    else if(num.equals("3"))
    name="SQL";
    else
    name="C#";

    if(name.equals(temp))
    {
    System.out.print(name + " 已被玩家一选择,请重新选择:");
    }
    else
    {
    return ;
    }
    }
    }

    /**
     * 打印信息1
     *
     */
    public static void printXinxi1()
    {
    System.out.println("\n◇◇◇◇◇◇◇◇◇◇◇◇  两  人  对  战  ◇◇◇◇◇◇◇◇◇◇◇◇\n");
    System.out.println("请选择角色: 1. JAVA 2. HTML 3. SQL 4. C#");
    }


    }/**
     *  骑士飞行棋-游戏类
     *  陈群浩
     *  09/3/6
     *  
     */package mygame;import java.util.Scanner;public class Game
    {
    Player player1; //玩家一
    Player player2; //玩家二
    Map map; //游戏地图
    public static int =0; //标识哪个玩家暂停一次.1=玩家一 2=玩家二

    /**
     * 程序入口
     * @param args
     */
    public static void main(String[] args)
    {
    Game g=new Game();
    g.initialize(); //游戏类初始化
    g.startGame(); //开始游戏

    }

    /**
     * 打印游戏横幅
     *
     */
    static
    {
    System.out.println("T22班 陈群浩制作 09/3/6");
    System.out.println("说明:该程序在MyEclipse 5.5.1 GA编译运行的话,地图右侧没有对齐。\n" +
    "但是生成JAR包在命令提示符里运行的话是有对齐的。");
    System.out.println("\n※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
    System.out.println("\\\\\t\t\t\t\t\t\t\t//");
    System.out.println("\\\\\t\t\t\t\t\t\t\t//");
    System.out.println("\\\\\t\t   骑    士    飞    行    棋 \t\t\t//");
    System.out.println("\\\\\t\t\t\t\t\t\t\t//");
    System.out.println("\\\\\t\t\t\t\t\t\t\t//");
    System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    }

    /**
     * 游戏类初始化
     *
     */
    public void initialize()
    {
    map=new Map(); //创建地图对象
    map.initialize(); //地图数组初始化
    Player.printXinxi1(); //打印信息
    player1=new Player(); //创建玩家一对象
    player1.selectRole("请玩家一选择角色:"); //玩家一选择角色
    Player.temp=player1.name;
    player2=new Player(); //创建玩家二对象
    player2.selectRole("请玩家二选择角色:"); //玩家二选择角色
    printXinxi2(); //打印信息
    map.mapArray[0]="@@";
    map.printMapArray(); //打印地图数组

    }

    /**
     * 打印信息2
     */
    public void printXinxi2()
    {
    System.out.println("\n\n******************************************************************");
    System.out.println("\t\t\t   Game  Start");
    System.out.println("******************************************************************");

    System.out.println("\n"+player1.name+"的士兵:A");
    System.out.println(player2.name+"的士兵:B");
    System.out.println("\n图例: \n■ 暂停  ¤ 幸运轮盘   ★ 地雷   〓 时空隧道   ∷ 普通   $ 终点\n");
    }

    /**
     * 开始游戏
     *
     */
    public void startGame()
    {
    boolean =true;
    Scanner input=new Scanner(System.in);

    while(true)
    {
    if() // 轮到玩家一
    {
    System.out.print("\n\n"+player1.name +"(A),请您按任意字母键后回车启动掷骰子:");
    input.next();
    player1.place=getCount(player1.place); //获得骰子随机数
    getResult(1,player1.place); //获得最新位置
    if(Game.==2)
    {
    Game.=0;
    }
    else
    {
    =false;
    }
    }
    else //轮到玩家二
    {
    System.out.print("\n\n"+player2.name +"(B),请您按任意字母键后回车启动掷骰子:");
    input.next();
    player2.place=getCount(player2.place); //获得骰子随机数
    getResult(2,player2.place); //获得最新位置
    if(Game.==1)
    {
    Game.=0;
    }
    else
    {
    =true;
    }
    }
    }
    }

    /**
     * 返回骰子随机数
     * @return
     */
    public int getCount(int place)
    {
    int random=((int)(Math.random()*6)+1); //获得骰子随机数
    System.out.println("\n---------------------------------------");
    System.out.println("骰子数:"+random);
    place+=random;
    if(place>106) //超过终点
    {
    place=106-(place-106);
    System.out.println("\n不小心超过终点了,被退回超过格数");
    return place;
    }
    return place;
    }

    /**
     * 返回掷骰子后当前位置 
     * 参数一:玩家 参数二:位置
     * @param i
     * @param place
     * @return
     */
    public void getResult(int i,int place)
    {
    boolean hao=false; //为true时获胜
    Scanner input=new Scanner(System.in);

    //所在位置是幸运轮盘
    if(map.mapArray[place].equals("¤"))
    {
    //所在位置是幸运轮盘
    System.out.println("\n◆◇◆◇◆欢迎进入幸运轮盘◆◇◆◇◆");
    System.out.println("请选择一种运气:");
    System.out.println("1. 交换位置  2. 轰炸(退4格)");
    System.out.println("=============================");
    String num;
    while(true)
    {
    num=input.next();
    if(num.equals("1") || num.equals("2"))
    {
    break;
    }
    else
    {
    System.out.print("输入错误!请输入 1 或者 2 :");
    }
    }
    if(num.equals("1")) //选择交换位置
    {
    player1.place+=player2.place;
    player2.place=player1.place-player2.place;
    player1.place=player1.place-player2.place;
    }
    else //选择轰炸
    {
    if(i==1)
    {
    if(player2.place-4<0)
    {
    player2.place=0;
    }
    else
    {
    player2.place-=4;
    if(map.mapArray[player2.place].equals("A"))
    {
    player1.place=0;
    System.out.println("倒霉,被踩回起点。");
    }
    }
    }
    else
    {
    if(player1.place-4<0)
    {
    player1.place=0;
    }
    else
    {
    player1.place-=4;
    if(map.mapArray[player1.place].equals("B"))
    {
    player2.place=0;
    System.out.println("倒霉,被踩回起点。");
    }
    }
    }
    }

    }
    //所在位置是地雷
    else if(map.mapArray[place].equals("★"))
    {
    System.out.println("\n倒霉,踩到地雷被退回6格!");
    if(i==1)
    {
    if(player1.place-6<0)
    {
    player1.place=0;
    }
    else
    {
    player1.place-=6;
    if(map.mapArray[player1.place].equals("B"))
    {
    player2.place=0;
    System.out.println("哈哈,把对方踩回起点。");
    }
    }
    }
    else
    {
    if(player2.place-6<0)
    {
    player2.place=0;
    }
    else
    {
    player2.place-=6;
    if(map.mapArray[player2.place].equals("A"))
    {
    player2.place=0;
    System.out.println("哈哈,把对方踩回起点。");
    }
    }
    }
    }
    //所在位置是暂停
    else if(map.mapArray[place].equals("■"))
    {
    System.out.println("\n倒霉,被暂停一次掷骰子机会!");
    if(i==1)
    {
    Game.=1;
    }
    else
    {
    Game.=2;
    }

    }
    //所在位置是时空隧道
    else if(map.mapArray[place].equals("〓"))
    {
    System.out.println("\n恭喜,进入时空隧道,前进10格。");
    if(i==1)
    {
    player1.place+=10;
    if(map.mapArray[player1.place].equals("B"))
    {
    player2.place=0;
    System.out.println("哈哈,把对方踩回起点。");
    }
    }
    else
    {
    player2.place+=10;
    if(map.mapArray[player2.place].equals("A"))
    {
    player1.place=0;
    System.out.println("哈哈,把对方踩回起点.");
    }
    }
    }
    //玩家重叠 A踩B
    else if(map.mapArray[place].equals("B"))
    {
    if(i==1)
    {
    System.out.println("\n很好,把对方踩回起点。");
    player2.place=0;
    }
    }
    //玩家重叠 B踩A
    else if(map.mapArray[place].equals("A"))
    {
    if(i==2)
    {
    System.out.println("\n很好,把对方踩回起点。");
    player1.place=0;
    }
    }
    //到达终点
    else if(map.mapArray[place].equals("$"))
    {
    hao=true;
    }

    if(i==1)
    {
    System.out.println("\n您当前位置:"+player1.place);
    System.out.println("对方当前位置:"+player2.place);
    }
    else
    {
    System.out.println("\n您当前位置:"+player2.place);
    System.out.println("对方当前位置:"+player1.place);
    }
    System.out.println("---------------------------------------");

    //地图数组赋值
    map.initialize();
    map.mapArray[player1.place]="A";
    map.mapArray[player2.place]="B";

    //打印地图数组
    map.printMapArray();

    if(hao)
    {
    if(i==1)
    {
    System.out.println("\n恭喜,顺利到达终点,本局由"+player1.name+"获胜。");
    }
    else
    {
    System.out.println("\n恭喜,顺利到达终点,本局由"+player2.name+"获胜。");
    }
    hao=false;

    System.out.print("\n本轮游戏结束!输入'y'重新开始,输入其它退出游戏:");
    String answer=input.next();
    if(answer.endsWith("y"))//重新开始
    {
    Game g=new Game();
    g.initialize(); //游戏类初始化
    g.startGame(); //开始游戏
    }
    else//结束程序
    {
    System.out.println("游戏已结束!");
    System.exit(1);
    }

    }
    }
    }