java骑士飞行棋Word格式.docx
《java骑士飞行棋Word格式.docx》由会员分享,可在线阅读,更多相关《java骑士飞行棋Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
game.start();
//开始游戏
}
}
2、创建游戏类Game:
publicclassGame{
Mapmap;
//地图
intplayerPos1;
//对战中玩家1的当前位置
intplayerPos2;
//对战中玩家2的当前位置
String[]goAndStop=newString[2];
//走或停标识设置
String[]playerName=newString[2];
//对战角色
publicvoidinit(){
//调用createMap()生成地图
publicvoidstart(){
//两人对战开始游戏
publicvoidsetRole(intno,introle){
//设置对战角色
publicvoidplay(){
//两人对战玩法
publicintthrowShifter(intno){
//掷骰子并返回掷出的骰子数目
publicintgetCurPos(intno,intposition,intstep){
//计算玩家此次移动后的当前位置并返回移动后的位置
publicvoidjudge(){
//显示对战结果
3、定义Map类:
classMap{
int[]map=newint[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};
//时空隧道
publicvoidcreateMap(){
//生成地图
publicStringgetGraph(inti,intindex,intplayerPos1,intplayerPos2){
//显示地图关卡对应的图形并返回地图当前位置的对应图片
publicvoidshowLine1(intstart,intend,intplayerPos1,intplayerPos2){
//输出地图的奇数行(第1、3行)
publicvoidshowLine2(intstart,intend,intplayerPos1,intplayerPos2){
//输出地图的偶数行(第2行)
publicvoidshowRLine(intstart,intend,intplayerPos1,intplayerPos2){
/输出地图的右竖列
publicvoidshowLLine(intstart,intend,intplayerPos1,intplayerPos2){
//输出地图的左竖列
publicvoidshowMap(intplayerPos1,intplayerPos2){
//显示对战地图
4、定义测试类Test:
classTest{
Mapmap=newMap();
map.createMap();
map.showMap(0,0);
三、程序代码:
importjava.util.*;
//Map类
String[]playerName=newString[2];
//初始化游戏的一局
publicvoidinit(){
map=newMap();
//生成地图
playerPos1=0;
//设置玩家1起始位置
playerPos2=0;
//设置玩家2起始位置
goAndStop[0]="
on"
;
//记录玩家1下一次走或停
goAndStop[1]="
//设置玩家2下一次走或停
//开始游戏
publicvoidstart(){
//初始化
init();
System.out.println("
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"
);
////"
//骑士飞行棋//"
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n"
\n~~~~~~~~~~~~~~~~~~~两人对战~~~~~~~~~~~~~~~~~~~"
\n请选择角色:
1.戴高乐2.艾森豪威尔3.麦克阿瑟4.巴顿"
Scannerinput=newScanner(System.in);
System.out.print("
请玩家1选择角色:
"
introle1=input.nextInt();
introle2;
do{
请玩家2选择角色:
role2=input.nextInt();
//双方选择角色代号
}while(role2==role1);
//不允许角色重复
setRole(1,role1);
//设置玩家1代表的角色
setRole(2,role2);
//设置玩家2代表的角色
play();
//开始两人对战
/*设置对战角色
*no玩家次序1:
玩家12:
玩家2
*role角色代号
*/
publicvoidsetRole(intno,introle){
switch(role){
case1:
playerName[no-1]="
戴高乐"
break;
case2:
艾森豪威尔"
case3:
麦克阿瑟"
case4:
巴顿"
default:
//两人对战玩法
publicvoidplay(){
\n\n\n\n"
System.out.print("
\n\n****************************************************\n"
GameStart\n"
****************************************************\n\n"
//显示对战双方士兵样式
^_^"
+playerName[0]+"
的士兵:
A"
+playerName[1]+"
B\n"
//显示对战地图
\n图例:
+"
■暂停¤
幸运轮盘★地雷〓时空隧道∷普通\n"
map.showMap(playerPos1,playerPos2);
//游戏开始
intstep;
//存储骰子数目
while(playerPos1<
99&
&
playerPos2<
99){//有任何一方走到终点,跳出循环
//轮流掷骰子
if(goAndStop[0].equals("
)){
//玩家1掷骰子
step=throwShifter
(1);
//掷骰子
\n-----------------"
//显示结果信息
骰子数:
+step);
playerPos1=getCurPos(1,playerPos1,step);
//计算这一次移动后的当前位置
\n您当前位置:
+playerPos1);
对方当前位置:
"
+playerPos2);
-----------------\n"
//显示当前地图
if(playerPos1==99){//如果走到终点
//退出
}else{
\n"
停掷一次!
//显示此次暂停信息
//设置下次可掷状态
if(goAndStop[1].equals("
//玩家2掷骰子
step=throwShifter
(2);
playerPos2=getCurPos(2,playerPos2,step);
if(playerPos2==99){//如果走到终点
//游戏结束
****************************************************\n"
GameOver\n"
judge();
/*掷骰子
*no玩家次序
*returnstep掷出的骰子数目
publicintthrowShifter(intno){
intstep=0;
\n\n"
+playerName[no-1]+"
请您按任意字母键后回车启动掷骰子:
Stringanswer=input.next();
step=(int)(Math.random()*10)%6+1;
//产生一个1~6的数字,即掷的骰子数目
returnstep;
/*计算玩家此次移动后的当前位置
*position移动前位置
*step掷的骰子数目
*returnposition移动后的位置
publicintgetCurPos(intno,intposition,intstep){
position=position+step;
//第一次移动后的位置
if(position>
=99){
return99;
switch(map.map[position]){//根据地图中的关卡代号进行判断
case0:
//走到普通格
if(no==1&
playerPos2==position){//玩家1与对方骑兵相遇
//踩到对方,对方回到起点
:
-D哈哈哈哈...踩到了!
if(no==2&
playerPos1==position){//玩家2与对方骑兵相遇
\n◆◇◆◇◆欢迎进入幸运轮盘◆◇◆◇◆"
请选择一种运气:
1.交换位置2.轰炸"
=============================\n"
intchoice=input.nextInt();
inttemp;
switch(choice){
if(no==1){
temp=position;
position=playerPos2;
playerPos2=temp;
}elseif(no==2){
position=playerPos1;
playerPos1=temp;
6){
playerPos2=playerPos2-6;
playerPos1=playerPos1-6;
//System.out.println("
~)"
幸福的我都要哭了..."
//踩到地雷
position=position-6;
//踩到地雷退6步
~:
-("
踩到地雷,气死了..."
//下一次暂停一次
goAndStop[no-1]="
off"
//设置下次暂停掷骰子
~~>
_<
~~要停战一局了。
position=position+10;
//进入时空隧道,加走10步
|-P"
进入时空隧道,真爽!
//返回此次掷骰子后玩家的位置坐标
if(position<
0){
return0;
}elseif(position>
99){
returnposition;
//显示对战结果
publicvoidjudge(){
if(playerPos1>
playerPos2){
\n恭喜"
将军!
您获胜了!
//packages1java.xmal1;
/*生成地图:
*关卡代号为:
1:
幸运轮盘2:
地雷3:
暂停4:
时空隧道0:
普通
publicvoidcreateMap(){
inti=0;
//在对战地图上设置幸运轮盘
for(i=0;
i<
luckyTurn.length;
i++){
map[luckyTurn[i]]=1;
//在对战地图上设置地雷
landMine.length;
map[landMine[i]]=2;
//在对战地图上设置暂停
pause.length;
map[pause[i]]=3;
//在对战地图上设置时空隧道
timeTunnel.length;
map[timeTunnel[i]]=4;
/*显示地图关卡对应的图形
*i地图当前位置的关卡代号
*index当前地图位置编号
*playerPos1玩家1的当前位置
*playerPos2玩家2的当前位置
*return地图当前位置的对应图片
publicStringgetGraph(inti,intindex,intplayerPos1,intplayerPos2){
Stringgraph="
if(index==playerPos1&
index==playerPos2){
graph="
@@"
}elseif(index==playerPos1){
//graph="
♀"
A"
}elseif(index==playerPos2){
♂"
B"
switch(i){
¤
//地雷
★"
grap