java学习做的一个简单的骑士飞行棋游戏!
来源:互联网 发布:福昕阅读器mac中文版 编辑:程序博客网 时间:2024/05/16 07:45
学习java大概10天的样子写的,写了一下午,晚上还调了好久的BUg,实现很简单,扩充性差,但是做出来的时候去很高兴,希望发在这里印证自己的学习,督促自己,也希望能交到跟多的朋友交流学习,得到大家的指点!
/游戏类/
Maps map = new Maps();
Roles role = new Roles();
/*初始化游戏*/
public void initialize()
{
role.initializ();
}
/*游戏登陆界面*/
public void beganInterface()
{
System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
System.out.println("// //\t");
System.out.println("// //\t");
System.out.println("// 骑士飞行棋 //\t");
System.out.println("// //\t");
System.out.println("// //\t");
System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n");
System.out.println("……………………………………………………………………两 人 对 战………………………………………………………………………………………………");
//Roles role = new Roles();
Scanner input = new Scanner(System.in);
System.out.println("请选择角色:1.戴高乐 2.艾神豪威尔 3.麦克阿瑟 4.巴顿");
System.out.print("请选玩家1择角色:");
int one = input.nextInt();
boolean isRight = true;
System.out.println();
int two ;
do
{
System.out.print("请选玩家2择角色:");
two = input.nextInt();
if(two==one)
{
System.out.println("玩家已存在,请从新选择!");
isRight = false;
}
else
{
isRight = true;
}
}while(!isRight);
switch(one)
{
case 1:
role.roleNames[0] = "戴高乐";
break;
case 2:
role.roleNames[0] = "艾神豪威尔";
break;
case 3:
role.roleNames[0] = "麦克阿瑟";
break;
case 4:
role.roleNames[0] = "巴顿";
break;
}
switch( two)
{
case 1:
role.roleNames[1] = "戴高乐";
break;
case 2:
role.roleNames[1] = "艾神豪威尔";
break;
case 3:
role.roleNames[1] = "麦克阿瑟";
break;
case 4:
role.roleNames[1] = "巴顿";
break;
}
//System.out.println(role.roleNames[0]+role.roleNames[1]);
}
/*开始游戏*/
public void playGame()
{
System.out.println("*******************************************************************************\n");
System.out.println(" GAME START \n");
System.out.println("*******************************************************************************\n\n");
System.out.println("☆"+role.roleNames[0]+"的士兵:A");
System.out.println("☆"+role.roleNames[1]+"的士兵:B");
System.out.println("\n\n");
System.out.println("图列:∷.普通 ¤.地雷 〓.时空隧道 ■.暂停 ★.幸运轮盘\n\n ");
map.showMap(0, 0);
}
/*开始游戏*/
public void playing()
{
boolean isTurnOne =true;//记录谁抛色子
do
{
if(role.indexs[0]<99&&role.indexs[1]<99)
{
do
{
if(isTurnOne&&role.onOrPauses[0])
{
setDice(0);
isTurnOne =false;
role.onOrPauses[1]= true;
}
else if(!isTurnOne&&role.onOrPauses[1])
{
setDice(1);
isTurnOne =true;
role.onOrPauses[1]= true;
}
else if(isTurnOne&&!role.onOrPauses[0])
{
setDice(1);
isTurnOne =true;
role.onOrPauses[0]= true;
}
else if(isTurnOne&&!role.onOrPauses[1])
{
setDice(0);
isTurnOne =false;
role.onOrPauses[1]= true;
}
}while(isTurnOne);
}
else if(role.indexs[0]>=99&&role.indexs[1]<=99)
{
System.out.println(role.roleNames[0]+"到达终点,获得胜利,游戏结束!");
break;
}
else if(role.indexs[1]>=99&&role.indexs[0]<=99)
{
System.out.println(role.roleNames[1]+"到达终点,获得胜利,游戏结束!");
break;
}
else
{
System.out.print(role.indexs[0]+" "+role.roleNames[1]+"你们都到达终点,游戏结束,)");
break;
}
}while(true);
}
/*投色字后判断位置*/
public void setDice(int i)
{
System.out.print(role.roleNames[i]+"请入任意字母后回车启动:");
Scanner input = new Scanner(System.in);
String sc = input.next();
System.out.println("\n\n");
if(sc!=null)
{
role.indexs[i]+=(int)(Math.random()*10);
role.counts[i]++;
switch(role.indexs[i])
{
case 9:
case 27:
case 60:
case 93:
System.out.println("悲剧啊,你要暂停一次");
role.onOrPauses[i]=false;
break;
case 6:
case 23:
case 40:
case 55:
case 69:
case 83:
boolean isRight = true;
do
{
System.out.print("你运气真好,给你两种选择:1.和对方骑兵交换位置 2.轰炸对方骑兵,对方骑兵被炸退6步:");
String num = input.next();
if(num.equals("1"))
{
int tep = role.indexs[i];
role.indexs[i] = role.indexs[1-i];
role.indexs[1-i] = tep;
isRight = true;
}
else if(num.equals("2"))
{
if(role.indexs[1-i]>=6)
{ role.indexs[1-i] = role.indexs[1-i]-6;
}
else
{
role.indexs[1-i]=0;
}
isRight = true;
}
else
{
System.out.println("输入错误请重新输入!");
}
}while(!isRight);
break;
case 20:
case 25:
case 45:
case 63:
case 72:
case 88:
case 90:
role.counts[i]+=10;
System.out.println("运气真好,碰到时光隧道了!");
break;
case 5:
case 13:
case 17:
case 33:
case 50:
case 64:
case 80:
case 94:
if( role.indexs[i]>=6)
{role.indexs[i]-=6;}
else
{
role.indexs[i]=0;
}
System.out.println("运气真差,踩到地雷了!");
break;
default:
if(role.indexs[i]==role.indexs[1-i])
{
System.out.println("哈哈,踩到了!");
role.indexs[i] = role.indexs[1-i];
role.indexs[1-i] = 0;
}
break;
}
System.out.println("--------------------------------------------------------");
System.out.println("骰子数:"+role.counts[i]+"\n\n");
System.out.println(role.roleNames[i]+"的当前位置:"+role.indexs[i]);
System.out.println("对方的当前位置:"+role.indexs[1-i]);
map.showMap(role.indexs[i],role.indexs[1-i] );
}
}
}
/地图类/
public class Maps {
//1.∷2.■3.☻4.〓5.☠
int[] imgLables = 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()
{
/* 读入幸运轮盘 */
for (int i = 0; i < luckyTurn.length; i++)
{
imgLables[luckyTurn[i]] = 3;
}
/* 读入地雷位置 */
for (int i = 0; i < landMine.length; i++)
{
imgLables[landMine[i]] = 5;
}
/* 读入暂停 */
for (int i = 0; i < pause.length; i++)
{
imgLables[pause[i]] = 2;
}
/* 读入时光隧道 */
for (int i = 0; i < timeTunnel.length; i++)
{
imgLables[timeTunnel[i]] = 4;
}
/* 普通 */
for (int i = 0; i < imgLables.length; i++)
{
if (imgLables[i] == 0)
{
imgLables[i] = 1;
}
}
}
/**
* 显示地图关卡对应的图形
*
* @param i
* 地图当前位置的关卡代号
* @param index
* 当前地图位置编号
* @param playerPos1
* 玩家1 的当前位置
* @param playerPos2
* 玩家2 的当前位置
* @return 地图当前位置的图形
* 1.代表玩家在地图上,0代表不在
*/
public String getGraph(int i, int index, int playerPos1, int playerPos2)
{
String graph = "";
if ( playerPos1==index&&playerPos2==index)
{ //两个玩家都位于地图当前位置index
graph = "@@";
}
else if (playerPos1==index)
{ //玩家 1 位于地图当前位置
graph = "A";
}
else if (playerPos2==index)
{ //玩家 2 位于地图当前位置
graph = "B";
}
else
{
switch (i)
{
//关卡代号为1时:graph = "¤";
//关卡代号为2时:graph = "★";
//关卡代号为3时:graph = "■";
//关卡代号为4时:graph = "〓";
//其他:graph = "∷";
case 1:
graph = "∷";
break;
case 2:
graph = "■";
break;
case 3:
graph = "¤";
break;
case 4:
graph = "〓";
break;
case 5:
graph = "★";
break;
}
}
return graph;
}
public void showMap(int playerPos1, int playerPos2 )
{
createMap();
showLine(0,30,playerPos1, playerPos2);
showRightColumm(31, 34,playerPos1 , playerPos2);
showMiddleLine(35, 65,playerPos1 , playerPos2 );
showLeftColumm(66,68,playerPos1, playerPos2);
showLine(69,99,0,0);
}
public void showLine(int start,int end,int playerPos1, int playerPos2)
{
for(int k=start;k<=end;k++)
{
System.out.print(getGraph(imgLables[k],k, playerPos1,playerPos2));
}
System.out.println();
}
public void showMiddleLine(int start,int end,int playerPos1, int playerPos2)
{
for(int k=end;k>=start;k--)
{
System.out.print(getGraph(imgLables[k],k, playerPos1,playerPos2));
}
System.out.println();
}
public void showRightColumm(int start,int end,int playerPos1, int playerPos2)
{
for(int c = start;c<=end;c++)
{
for(int i = 0;i<=29;i++)
{
System.out.print(" ");
}
System.out.print(getGraph(imgLables[c],c, playerPos1,playerPos2));
System.out.println();
}
}
public void showLeftColumm(int start,int end,int playerPos1, int playerPos2)
{
for(int c = start;c<=end;c++)
{
System.out.print(getGraph(imgLables[c],c, playerPos1,playerPos2));
for(int i = 0;i<=29;i++)
{
System.out.print(" ");
}
System.out.println();
}
}
}
//
public class Roles {
int[] indexs = new int[2];//记录角色在地图上的位置
boolean[] onOrPauses = new boolean[2];//记录角色是可以投骰子还是暂停
String[] roleNames = new String[2];//记录角色名字
int [] counts = new int[2];//记录角色投的次数
/*初始化角色*/
public void initializ()
{
indexs[0]= 0;
indexs[1]= 0;
onOrPauses [0] = true;
onOrPauses [1] = true;
roleNames[0] = "";
roleNames[1] = "";
counts [0] = 0;
counts [1] = 0;
}
/*储存角色信息*/
public void storeRoleInf(int[] rindexs,boolean[] status,String[] rnames)
{
indexs = rindexs;
onOrPauses = status;
roleNames = rnames;
}
}
/测试类/
public class Test {
public static void main(String[] wzq)
{
Game b = new Game();
b.initialize();
b.beganInterface();
b.playGame();
b.playing();
}
}
- java学习做的一个简单的骑士飞行棋游戏!
- 骑士飞行棋游戏
- 【黑马程序员】一个简单的小游戏——骑士飞行棋
- 黑马程序员——骑士飞行棋(我的第一个游戏程序)
- C#学习编写的飞行棋游戏
- 我的Java阶段项目1 - 骑士飞行棋[两人对战][固定地图版]
- 我的Java阶段项目1 - 骑士飞行棋[两人对战][随机地图版]
- CocosCreator学习1:做一个简单的游戏
- 黑马程序员 和骑士飞行棋有关的想法
- 黑马程序员_骑士飞行棋学习
- 自己早期做的一个基于j2me的飞行射击类游戏
- 做一个简单的游戏服务器
- 做一个简单的塔防游戏
- 做一个简单的打飞碟游戏
- 做一个简单的射靶游戏
- 一个最最简单的飞行射击游戏(J2ME)的大体框架介绍
- 骑士飞行棋
- 骑士飞行棋
- openSession和getCurrentSession的区别 thred jta
- 项目开发
- UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
- Exercises 2-2
- getAttribute和getParameter的区别详解
- java学习做的一个简单的骑士飞行棋游戏!
- c++名字空间
- 单例模式
- 整数划分(转给自己看)
- win32常用函数-1
- HDFS的recoverLease和recoverBlock的过程分析
- 迁移到SQL Server 2008兼容性问题的一个示例
- 在java语言中调用储存过程
- 第二十九章 参数的元数据信息