java骑士飞行棋

java骑士飞行棋
java骑士飞行棋

骑士飞行棋

骑士飞行棋简介:

《骑士飞行棋》又名《别生气》,是一款跟传统的飞行棋一模一样的小游戏。游戏中每家有4个棋兵,谁4个兵最先到达目的地谁就赢(每一家的目的地各不相同,用颜色区别,大本营是什么颜色目的就是什么颜色)。当没有活动的兵时,每家可以连续扔3次,直到扔出6点释放出一个兵。之后每轮只能扔一次,棋兵前进的格数由扔出的点数决定,扔几点就走几步。无论是前进或者后退,当棋兵最后落脚的地方踩到对方棋兵时,就把对方棋兵轰回老家,当踩到地雷就后退6格,当踩到“¤”时,就进入幸运轮盘,里面有8种运气:前进、后退、交换位置、转移、暂停一轮、奖励一次、设置地雷、轰炸(将对方棋兵炸退6步)。

一、需求分析:

1、定义一个类MAP,生成游戏中的地图,地图中包括幸运轮盘“¤”的位置,地雷位

置,暂停位置,时候隧道位置。同时构造成员方法creatMap生成对战图,设置相关的成员变量;构造成员方法getGraph返回地图当前位置的对应图片。定义构造方法

showLine1输出地图的奇数行(第1、3行),定义showLine2输出地图的偶数行(第2行);定义showRLine输出地图的右竖列;定义showLLine输出地图的左数列;最后定义showMap方法显示对战图。

2、定义游戏类Game,定义相关的成员变量,包括对战图map,对战中玩家1的当前位

置playerPos1,对战中玩家2的当前位置playerPos2,走或停标识设置goAndStop,对战角色playerName。构造成员方法init()调用生成地图方法creatMap;开始游戏方法start(),同时构造成员方法setRole设置对战角色。构造对战玩法的方法play。

其中方法play中调用掷骰子成员方法throwShifter,并返回掷出的骰子数目;构造成员方法getCurPos计算玩家此次移动后的当前位置,返回移动后的位置,构造方法judge 显示对战结果。

3、定义类StartGame启动游戏。

4、本程序是两人对战玩法。

5、程序执行的命令:1)启动游戏 2)创建游戏类Game 3)开始游戏 4)定义测试

类。

二、概要设计:

1、定义启动游戏类StartGame:

//启动游戏

class StartGame {

public static void main(String[] args) {

Game game = new Game(); //创建游戏类

game.start(); //开始游戏

}

}

2、创建游戏类Game:

public class Game {

Map map; //地图

int playerPos1; //对战中玩家1的当前位置

int playerPos2; //对战中玩家2的当前位置

String[] goAndStop = new String[2]; //走或停标识设置

String[] playerName = new String[2]; //对战角色

public void init(){

//调用createMap()生成地图

}

public void start(){

//两人对战开始游戏

}

public void setRole(int no, int role){

//设置对战角色

}

public void play(){

//两人对战玩法

}

public int throwShifter(int no){

//掷骰子并返回掷出的骰子数目

}

public int getCurPos(int no, int position, int step){

//计算玩家此次移动后的当前位置并返回移动后的位置

}

public void judge(){

//显示对战结果

}

}

3、定义Map类:

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}; //时空隧道public void createMap(){

//生成地图

}

public String getGraph(int i, int index, int playerPos1, int playerPos2){ //显示地图关卡对应的图形并返回地图当前位置的对应图片

}

public void showLine1(int start, int end, int playerPos1, int playerPos2){ //输出地图的奇数行(第1、3行)

}

public void showLine2(int start, int end, int playerPos1, int playerPos2){ //输出地图的偶数行(第2行)

}

public void showRLine(int start, int end, int playerPos1, int playerPos2){ /输出地图的右竖列

}

public void showLLine(int start, int end, int playerPos1, int playerPos2) {

//输出地图的左竖列

}

public void showMap(int playerPos1, int playerPos2){

//显示对战地图

}

}

4、定义测试类Test:

class Test {

public static void main(String[] args) {

Map map = new Map();

map.createMap();

map.showMap(0, 0);

}

}

三、程序代码:

import java.util.*;

//Map类

public class Game {

Map map; //地图

int playerPos1; //对战中玩家1的当前位置

int playerPos2; //对战中玩家2的当前位置

String[] goAndStop = new String[2]; //走或停标识设置

String[] playerName = new String[2]; //对战角色

// 初始化游戏的一局

public void init() {

map = new Map();

map.createMap(); //生成地图

playerPos1 = 0; //设置玩家1起始位置

playerPos2 = 0; //设置玩家2起始位置

goAndStop[0] = "on"; //记录玩家1下一次走或停

goAndStop[1] = "on"; //设置玩家2下一次走或停

}

//开始游戏

public void start() {

//初始化

init();

System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

System.out.println("//

//");

System.out.println("//

//");

System.out.println("// 骑士飞行棋

//");

System.out.println("//

//");

System.out.println("//

//");

System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※

※※※※※※※\n\n\n");

System.out.println("\n~~~~~~~~~~~~~~~~~~~两人对战

~~~~~~~~~~~~~~~~~~~");

System.out.println("\n请选择角色: 1. 戴高乐 2. 艾森豪威尔 3. 麦克阿瑟 4. 巴顿");

Scanner input = new Scanner(System.in);

System.out.print("请玩家1选择角色: ");

int role1 = input.nextInt();

int role2;

do {

System.out.print("请玩家2选择角色: ");

role2 = input.nextInt(); //双方选择角色代号

} while (role2 == role1); //不允许角色重复

setRole(1, role1); //设置玩家1代表的角色

setRole(2, role2); //设置玩家2代表的角色

play(); //开始两人对战

}

/*设置对战角色

*no 玩家次序 1:玩家1 2:玩家2

*role 角色代号

*/

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;

default:

break;

}

}

// 两人对战玩法

public void play() {

System.out.println("\n\n\n\n");

System.out.print("\n\n****************************************************\n"); System.out.print(" Game Start \n");

System.out.print("****************************************************\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("骰子数: " + step);

playerPos1 = getCurPos(1, playerPos1, step); //计算这一次移动后的当前位置

System.out.println("\n您当前位置: " + playerPos1);

System.out.println("对方当前位置:" + playerPos2);

System.out.println("-----------------\n");

map.showMap(playerPos1, playerPos2); //显示当前地图

if (playerPos1 == 99) { //如果走到终点

break; //退出

}

System.out.println("\n" + playerName[0] + "停掷一次!\n"); //显示此次暂停信息

goAndStop[0] = "on"; //设置下次可掷状态

}

System.out.println("\n\n\n\n");

if (goAndStop[1].equals("on")) {

//玩家2掷骰子

step = throwShifter(2); //掷骰子

System.out.println("\n-----------------"); //显示结果信息

System.out.println("骰子数: " + step);

playerPos2 = getCurPos(2, playerPos2, step); //计算这一次移动后的当前位置

System.out.println("\n您当前位置: " + playerPos2);

System.out.println("对方当前位置:" + 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");

System.out.print(" Game Over \n");

System.out.print("****************************************************\n\n"); judge();

}

/*掷骰子

* no 玩家次序

* return step 掷出的骰子数目

*/

public int throwShifter(int no) {

System.out.print("\n\n" + playerName[no - 1] + ", 请您按任意字母键后回车启动掷骰子: ");

Scanner input = new Scanner(System.in);

String answer = input.next();

step = (int) (Math.random() * 10) % 6 + 1; //产生一个1~6的数字,即掷的骰子数目

return step;

}

/*计算玩家此次移动后的当前位置

* no 玩家次序

* position 移动前位置

* step 掷的骰子数目

* return position 移动后的位置

*/

public int getCurPos(int no, int position, int step) {

position = position + step; //第一次移动后的位置

if (position >= 99) {

return 99;

}

Scanner input = new Scanner(System.in);

switch (map.map[position]) { //根据地图中的关卡代号进行判断

case 0: //走到普通格

if (no == 1 && playerPos2 == position) { //玩家1与对方骑兵相遇

playerPos2 = 0; //踩到对方,对方回到起点

System.out.println(":-D 哈哈哈哈...踩到了!");

}

if (no == 2 && playerPos1 == position) { //玩家2与对方骑兵相遇 playerPos1 = 0; //踩到对方,对方回到起点

System.out.println(":-D 哈哈哈哈...踩到了!");

}

break;

case 1: //幸运轮盘

System.out.println("\n◆◇◆◇◆欢迎进入幸运轮盘◆◇◆◇◆"); 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 = position;

position = playerPos2;

playerPos2 = temp;

} else if (no == 2) {

temp = position;

position = playerPos1;

playerPos1 = temp;

}

break;

case 2:

if (no == 1 && playerPos2 < 6) {

playerPos2 = 0;

} else {

playerPos2 = playerPos2 - 6;

}

if (no == 2 && playerPos2 < 6) {

playerPos1 = 0;

} else {

playerPos1 = playerPos1 - 6;

}

break;

}

//System.out.println(":~) " + "幸福的我都要哭了..."); break;

case 2: //踩到地雷

position = position - 6; //踩到地雷退6步

System.out.println("~:-( " + "踩到地雷,气死了..."); break;

case 3: //下一次暂停一次

goAndStop[no - 1] = "off"; //设置下次暂停掷骰子

System.out.println("~~>_<~~ 要停战一局了。");

break;

case 4: //时空隧道

position = position + 10; //进入时空隧道,加走10步

System.out.println("|-P " + "进入时空隧道,真爽!"); break;

}

//返回此次掷骰子后玩家的位置坐标

if (position < 0) {

return 0;

} else if (position > 99) {

return 99;

} else {

return position;

}

}

//显示对战结果

public void judge() {

if (playerPos1 > playerPos2) {

System.out.println("\n恭喜" + playerName[0] + "将军! 您获胜了!"); } else {

System.out.println("\n恭喜" + playerName[1] + "将军! 您获胜了!"); }

}

}

//package s1java.xmal1;

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;

}

}

/* 显示地图关卡对应的图形

* i 地图当前位置的关卡代号

* index 当前地图位置编号

* playerPos1 玩家1的当前位置

* playerPos2 玩家2的当前位置

* return 地图当前位置的对应图片

*/

public String getGraph(int i, int index, int playerPos1, int playerPos2) { String graph = "";

if (index == playerPos1 && index == playerPos2) {

graph = "@@";

} else if (index == playerPos1) {

//graph = "♀";

graph = "A";

} else if (index == playerPos2) {

//graph = "♂";

graph = "B";

} else {

switch (i) {

case 1: //幸运轮盘

graph = "¤";

break;

case 2: //地雷

graph = "★";

break;

case 3: //暂停

graph = "■";

break;

case 4: //时光隧道

graph = "〓";

break;

default:

graph = "∷";

break;

}

}

return graph;

}

/**

* 输出地图的奇数行(第1、3行)

* start 输出的起始点在地图上的位置

* end 输出的结束点在地图上的位置

* playerPos1 玩家1的当前位置

* 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));

}

}

/**

* 输出地图的偶数行(第2行)

* start 输出的起始点在地图上的位置

* end 输出的结束点在地图上的位置

* playerPos1 玩家1的当前位置

* playerPos2 玩家2的当前位置

*/

public void showLine2(int start, int end, int playerPos1, int playerPos2) { for (int i = end - 1; i >= start; i--) {

System.out.print(getGraph(map[i], i, playerPos1, playerPos2));

}

}

/**

* 输出地图的右竖列

* start 输出的起始点在地图上的位置

* end 输出的结束点在地图上的位置

* playerPos1 玩家1的当前位置

* playerPos2 玩家2的当前位置

*/

public void showRLine(int start, int end, int playerPos1, int playerPos2) { for (int i = start; i < end; i++) {

for (int j = 28; j > 0; j--) { //输出29个空格

System.out.print(" ");

}

System.out.print(getGraph(map[i], i, playerPos1, playerPos2));

System.out.println();

}

}

/**

* 输出地图的左竖列

* start 输出的起始点在地图上的位置

* end 输出的结束点在地图上的位置

* playerPos1 玩家1的当前位置

* playerPos2 玩家2的当前位置

*/

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));

}

}

/**

* 显示对战地图

* playerPos1 玩家1的当前位置

* playerPos2 玩家2的当前位置

*/

public void showMap(int playerPos1, int playerPos2) {

showLine1(0, 31, playerPos1, playerPos2); //显示地图第一行

System.out.println(); //换行

showRLine(31, 35, playerPos1, playerPos2); //显示地图右竖行

showLine2(35, 66, playerPos1, playerPos2); //显示地图第二行

System.out.println(); //换行

showLLine(66, 69, playerPos1, playerPos2); //显示地图左竖行

showLine2(69, 100, playerPos1, playerPos2); //显示地图第3行

}

}

//开始游戏

//package s1java.xmal1;

//public class StartGame

class StartGame {

/**

* 启动游戏

* args

*/

public static void main(String[] args) {

Game game = new Game(); //创建游戏类

game.start(); //开始游戏

}

}

//测试类

//package s1java.xmal1;

class Test {

/* 测试Map类

* args

*/

public static void main(String[] args) {

Map map = new Map();

map.createMap();

map.showMap(0, 0);

}

}

四、测试与分析:

1、调试中遇到的问题与解决方法:

1)定义好Map类后不懂怎么解决游戏中前进与后退的问题,不知道该怎么写代码,经上网查询和查资料解决了。

2)定义游戏类Game时方法间的调用出现了问题,思路不清晰,花了大量的时间弄明白方法间的关联问题。

2、程序改进设想:

界面能不能改成启动小程序窗口,然后对战图在小程序窗口显示,可样晚起游戏来界面就能很清晰。

3、具体调试过程

游戏开始以及地图的显示:

掷骰子后移动相应位置后的对战图:

五、试验体会:

可以说这是第一次接触飞行棋,以前都没玩过,为了弄清楚什么是飞行棋,特意的去网上玩了好几回,也终于弄明白了飞行棋是什么,飞行棋的规则是什么,对此也有了深入的了解。开始写代码的时候,大概知道该定义什么类,但具体写的时候还是不知道该怎么下手,后来在网上看了几个相似的代码后,就有了思路,慢慢的就知道是怎么一回事了,该怎么写下代码了。这个实验让我们懂得了,只要有耐心,只要肯下功夫,还是有收获的,并且收获是你之前无法估量的。

骑士飞行棋实训报告

山东理工大学计算机学院 实训报告 《DOS界面开发基础实训》 班级 姓名 学号 指导教师 二○一二年七月五日 实训任务书及成绩评定 课题名称骑士飞行棋 Ⅰ、题目的目的和要求: 1、设计目的 本实训是实践性教学环节之一,旨在锻炼学生的实践操作能力和综合应用能力,希望通过案例实践,帮助学生掌握DOS界面的开发和应用,具备熟练使用C语言开发界面、感受游戏开发过程等。 2.要求学生掌握: (1)、C语言的规范、结构和标记。 (2)、数组、链表的定义和使用。 (3)、C语言的程序设计基础、面向对象编程、操作、事件处理和特效,感受游戏的开发过程等 (4)、综合应用各种前台技术开发DOS页面。 2、设计题目要求: 第一部分 游戏端首页 (1)角色的分配及及游戏规则: 游戏规则和传统的飞行棋一样,支持两人对战 采用100格小型游戏棋盘 游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡普通 地雷 暂停 时空隧道

幸运轮盘(提供两种运气:交换位置和轰炸) 棋盘上的关卡只在骑兵第一次移动遇到时有效 (2)棋盘示例: 第二部分:游戏过程 (1)地图显示思路: 将对战地图划分成4个部分分别显示 奇数行:顺序输出地图数组中代号对应图像 右竖行:先输出空格,再输出数组中代号对应图像 偶数行:逆序输出地图数组中代号对应图像 (2)游戏进行中的界面 第三部分:游戏结束,玩家胜负已分 Ⅱ、设计进度及完成情况 日期内容 分析所给题目,初步划分侧重点,并初步制定流程 对所给题目进行详细的研究并细读有关资料 做出所给题目,讨论研究并调试检查错误, 对所给题目进行综合考虑,并进行再次修改 答辩,思考老师的评价 Ⅲ、系统实现--主要功能代码 void Welcome() { printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("操 2.孙权 3.刘备 \n"); printf("请玩家1选择角色:");个玩家轮流掷骰子,如果上轮走到暂停关卡,停掷一次\n\n"); printf("2.若玩家走到幸运轮盘,则和对方交换位置或者对方后退6步\n\n"); printf("3.若玩家走到某格,而对方也在此格,则对方退回原点\n\n"); printf("4.若遇到地雷后退6步\n\n"); printf("5.若遇到暂停则此玩家下一回合停止掷骰子\n\n"); printf("6.若遇到时空隧道再前进10步\n\n");

java骑士飞行棋小游戏

突然想起自己刚学java时,老师让写一个java骑士飞行棋,那时候还不知道写,到处问人,勉强写好了,结果全是放在主函数里,今天闲来没事,花了一会,再次写了个骑士飞行棋小游戏,希望对初学者有帮助吧。 代码中,可能用到了初学者还没接触到的东西,不过都不难,注释都有写明,花点时间就能明白的。 一共三个类。 分别: Game.java Map.java Player.java package ; import ; import ; public class Game { private Scanner sc = new Scanner(System.in); private static Map map = new Map(); /** * 静态块,初始化地图 * 加载时就会被执行的内容 * 不理解的,可以在static{}块里打印一句话,看看控制台反映 */ static { map.initMap(); } /** * 游戏开始 */ public void GameStart() { //游戏开始界面 welcome(); //选择角色,生成对象数组 Player [] players = getPlayer(); //游戏开始循环,直到有玩家胜出,结束 boolean isAnyoneWin = false; while (!isAnyoneWin) { //遍历玩家数组,让每个玩家依次进行掷点 for (int i = 0; i < players.length; i++) { //对玩家的状态进行判断,是否处于暂停状态 if (players[i].getStatus() == 1) { //如果玩家处于暂停状态,恢复暂停状态并跳过此回合 players[i].setStatus(0); statusSay(players[i]); continue; }

骑士飞行棋实训报告

骑士飞行棋实训报告文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

山东理工大学计算机学院 实训报告 《DOS界面开发基础实训》 班级 姓名 学号 指导教师 二○一二年七月五日 实训任务书及成绩评定 课题名称骑士飞行棋 Ⅰ、题目的目的和要求: 1、设计目的 本实训是实践性教学环节之一,旨在锻炼学生的实践操作能力和综合应用能力,希望通过案例实践,帮助学生掌握DOS界面的开发和应用,具备熟练使用C 语言开发界面、感受游戏开发过程等。 2.要求学生掌握: (1)、C语言的规范、结构和标记。 (2)、数组、链表的定义和使用。 (3)、C语言的程序设计基础、面向对象编程、操作、事件处理和特效,感受游戏的开发过程等 (4)、综合应用各种前台技术开发DOS页面。 2、设计题目要求: 第一部分 游戏端首页 (1)角色的分配及及游戏规则: 游戏规则和传统的飞行棋一样,支持两人对战 采用100格小型游戏棋盘

游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡 普通 地雷 暂停 时空隧道 幸运轮盘(提供两种运气:交换位置和轰炸) 棋盘上的关卡只在骑兵第一次移动遇到时有效 (2)棋盘示例: 第二部分:游戏过程 (1)地图显示思路: 将对战地图划分成4个部分分别显示 奇数行:顺序输出地图数组中代号对应图像 右竖行:先输出空格,再输出数组中代号对应图像 偶数行:逆序输出地图数组中代号对应图像 (2)游戏进行中的界面 第三部分:游戏结束,玩家胜负已分 Ⅱ、设计进度及完成情况 日期内容 7.1分析所给题目,初步划分侧重点,并初步制定流程 7.2对所给题目进行详细的研究并细读有关资料 7.3做出所给题目,讨论研究并调试检查错误, 7.4对所给题目进行综合考虑,并进行再次修改 7.5答辩,思考老师的评价

java骑士飞行棋

骑士飞行棋 骑士飞行棋简介: 《骑士飞行棋》又名《别生气》,是一款跟传统的飞行棋一模一样的小游戏。游戏中每家有4个棋兵,谁4个兵最先到达目的地谁就赢(每一家的目的地各不相同,用颜色区别,大本营是什么颜色目的就是什么颜色)。当没有活动的兵时,每家可以连续扔3次,直到扔出6点释放出一个兵。之后每轮只能扔一次,棋兵前进的格数由扔出的点数决定,扔几点就走几步。无论是前进或者后退,当棋兵最后落脚的地方踩到对方棋兵时,就把对方棋兵轰回老家,当踩到地雷就后退6格,当踩到“¤”时,就进入幸运轮盘,里面有8种运气:前进、后退、交换位置、转移、暂停一轮、奖励一次、设置地雷、轰炸(将对方棋兵炸退6步)。 一、需求分析: 1、定义一个类MAP,生成游戏中的地图,地图中包括幸运轮盘“¤”的位置,地雷位 置,暂停位置,时候隧道位置。同时构造成员方法creatMap生成对战图,设置相关的成员变量;构造成员方法getGraph返回地图当前位置的对应图片。定义构造方法 showLine1输出地图的奇数行(第1、3行),定义showLine2输出地图的偶数行(第2行);定义showRLine输出地图的右竖列;定义showLLine输出地图的左数列;最后定义showMap方法显示对战图。 2、定义游戏类Game,定义相关的成员变量,包括对战图map,对战中玩家1的当前位 置playerPos1,对战中玩家2的当前位置playerPos2,走或停标识设置goAndStop,对战角色playerName。构造成员方法init()调用生成地图方法creatMap;开始游戏方法start(),同时构造成员方法setRole设置对战角色。构造对战玩法的方法play。 其中方法play中调用掷骰子成员方法throwShifter,并返回掷出的骰子数目;构造成员方法getCurPos计算玩家此次移动后的当前位置,返回移动后的位置,构造方法judge 显示对战结果。 3、定义类StartGame启动游戏。 4、本程序是两人对战玩法。 5、程序执行的命令:1)启动游戏 2)创建游戏类Game 3)开始游戏 4)定义测试 类。 二、概要设计: 1、定义启动游戏类StartGame: //启动游戏 class StartGame { public static void main(String[] args) { Game game = new Game(); //创建游戏类 game.start(); //开始游戏 } } 2、创建游戏类Game: public class Game { Map map; //地图 int playerPos1; //对战中玩家1的当前位置 int playerPos2; //对战中玩家2的当前位置 String[] goAndStop = new String[2]; //走或停标识设置

c#骑士飞行器主代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; https://www.360docs.net/doc/8c11518063.html, 官场小说 namespace骑士飞行棋 { class Program { //定义在了类里面,让Class类可以通过这个https://www.360docs.net/doc/8c11518063.html,来访问用户的名字public static string[] name = new string[2]; //存储玩家名字的数组,name0代表 a,name1代表b static void Main(string[] args) { Random r = new Random(); //r是产生随机数的变量,Random是随机数类 型 int step = 0; //用于临时存取随机数的变量 //显示游戏界面 Class p = new Class();//实验定义方法的时候不加static修饰符,然后再main方 法实例化类 p.ShowUi();//通过实例名点方法名! Console.WriteLine("请输入玩家A的姓名?"); name[0] = Console.ReadLine(); //判断用户输入的名称为空,如果为空则重新输入 while (name[0] == "") { Console.WriteLine("玩家A的姓名为空,请重新在输入!"); name[0] = Console.ReadLine(); } Console.WriteLine("请输入玩家B的姓名?"); name[1] = Console.ReadLine(); //判断用户输入的名称为空或者跟玩家A的名一样则提示重新输入 while (name[1] == "" || name[1] == name[0]) { if (name[1] == name[0])

java小项目 类与 对象 骑士飞行棋代码

/**主体方法 import java.util.Random; import java.util.Scanner; public class Game { public Map map; Scanner in = new Scanner(System.in); Random run = new Random(); static private int[][] temp = { { 0, 0 }, { 0, 0 } };// 分别记录玩家的 // 位置.........用来标记人所代替的位置 // 之前的状态private String[] name = { "张飞", "关羽", "赵云", "刘备" }; private static String[] palyer = new String[2]; private int[] p = { 12, 12 };// 暂停标准相差数即为暂停次数 private static boolean falg;// 轰炸标记 public Game() { map = new Map(); } /** * 选择玩家 * * @return */ public void choice() { System.out .println("------------------------------------------------------------------------------"); System.out .println("------------------------------------------------------------------------------"); System.out .println("------------------------------------------------------------------------------"); System.out .println("---------------骑士飞行棋---------------------"); System.out .println("------------------------------------------------------------------------------"); System.out .println("------------------------------------------------------------------------------"); System.out .println("------------------------------------------------------------------------------"); System.out.print("分别选择角色:");

骑士飞行棋

开发一款C语言小游戏——骑士飞行棋第一部分案例描述 案例目的 加强对C语言的理解,加强使用数组、链表等操作;学习游戏开发过程。 案例难度 ★★★★ 案例覆盖技能点 1、使用基本语句语法 2、常用函数的使用 3、数组使用 4、加深对链表的理解 推荐案例完成时间 5天 适用课程和对象 C语言编程基础 第二部分需求和开发环境 使用技术和开发环境 C语言、VC6

需求分析 游戏规则和传统的飞行棋一样,支持两人对战 采用100格小型游戏棋盘 游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡普通 地雷 暂停 时空隧道 幸运轮盘(提供两种运气:交换位置和轰炸) 棋盘上的关卡只在骑兵第一次移动遇到时有效 设计 1.棋盘示例: 2.地图的实现: 地图信息以整型数据存储在数组中

地图显示思路: 将对战地图划分成4个部分分别显示 奇数行:顺序输出地图数组中代号对应图像 右竖行:先输出空格,再输出数组中代号对应图像 偶数行:逆序输出地图数组中代号对应图像 3.游戏控制 两个玩家轮流掷骰子,如果上轮走到暂停关卡,停掷一次 部分伪代码示例: //显示游戏开始 while(玩家一的步数< 99 && 玩家二步数< 99){ //任意一个人走到终点,跳出循环//玩家1掷骰子 if(首先判断是否是暂停)){ //掷骰子获得移动的步数 //移动 if(玩家一的步数== 99){ //走到终点 break; //退出 } }else{ //提示此轮停掷 设置状态为停掷状态; //设置下次状态 } //玩家2 掷骰子 …… } //显示游戏结束并进行评判 4.实现游戏规则 关键:当移动到某一点遇到关卡时,怎么办?前进?后退?停止?…… 部分伪代码示例:

NET软件开发特色班课程宣传

乔布斯教育初、高中起点.NET软件开发特色班 一、培养规格 1、掌握本专业的专业知识和应用技术; 2、有较强的动手能力和解决实际问题的能力。 三、学期课程安排与课程简介 第一学期上半学期 《计算机基础》。讲解基本的计算机专业术语、计算机常见的操作、办公软

件的使用等。 《进入软件编程世界》。这是一门基础课程,讲解软件程序设计所必须知道的基础知识如网络配置和指令、Windows 2003操作技巧、常用工作软件的使用等。 《使用Java语言理解程序逻辑》。这是计算机程序设计的入门课程,主要讲解Java 语言基本语法、软件程序的基本组成和要素、使用Eclips开发工具等。 《使用HTML语言开发商业站点》。主要讲解使用页面标签,并通过样式表来增强页面效果,同时还包括表单、框架和页面布局、网站开发流程等内容,完全是基于网站静态页面的内容。 《使用SQL Server管理和查询数据》。讲解创建数据库和数据库表、使用SQL语句查询、增加、修改和删除数据,学习完成以后能够操作数据库,执行最基本的查询。 《使用C#开发数据库应用程序》。这是一门学习程序设计的基础课程,讲解传统的基于客户端/服务器的程序设计方式(类似于QQ、MSN、挖雷这样的“需要安装”、“带窗口”的程序),这一类程序的开发集成度已经很高了,主要是通过控件拖放的模式来实现,本课程将结合数据库的内容,来实现一些数据存储和查询,最终能完成企业运用中的MIS的开发,阶段结束时还要使用该技术完成自己的QQ程序的设计。 公共课程开设《计算机基础》与《英语》课程 《职业导向训练》。这门课程是用来培养职业素养的,通过学术活动、班级活动、职业素养课程,让学员具备职业人所必须具备的时间观念、表达能力、规范意识等。 《项目开发》。这门课程包括两部分内容,第一部分内容是针对每门课程设计的“项目案例”,用来组合训练,增加熟练程度、提高项目经验和开发能力,第二部分内容是第一学期结束时要求完成的阶段项目。 项目开发安排如下图所示:

相关文档
最新文档