北大青鸟Accp5.0 S1 Java项目——骑士飞行棋

本文介绍了作者在学习Java理解程序逻辑后,完成的骑士飞行棋项目。项目包括Map、TestMap、Game和TestGame四个类,代码已上传供交流学习。文章末尾鼓励读者提出意见和疑问。
摘要由CSDN通过智能技术生成

      经过一个多月的学习终于学完了使用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
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值