– 采用 100 格小型游戏棋盘
游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡
普通
地雷
暂停
时空隧道
幸运轮盘(提供两种运气:交换位置和轰炸)

棋盘上的关卡只在骑兵第一次移动遇到时有效

• 根据需求分析对象
– 对战地图类( Map )

功能:在控制台显示棋盘,并显示当前玩家在棋盘中所处的位置

– 游戏类( Game )

功能:实现游戏初始化设置、展示游戏开始界面以及角色设置、控制游戏进度、实现游戏规则、以及游戏结束后结果评判

– 测试类( StartGame )

功能:启动游戏

构造地图类

package come.igeek;

public class Map {
int[] map = new int[100];
public void init(){

int[] luckyTurn = {6, 23, 40, 55, 69, 83}; //幸运轮盘        1
int[] landMine = {5, 13, 17, 33, 38, 50, 64, 80, 94};   //地雷位置 2
int[] pause = {9, 27, 60, 93};         //暂停                        3
int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90};   //时空隧道    4

for(int i=0;i<luckyTurn.length;i++){
int index =luckyTurn[i];
map[index]=1;
}
for(int i=0;i<landMine.length;i++){
int index =landMine[i];
map[index]=2;
}
for(int i=0;i<pause.length;i++){
int index=pause[i];
map[index]=3;
}
for(int i=0;i<timeTunnel.length;i++){
int index=timeTunnel[i];
map[index]=4;
}
showMap(0,0);
}
public void drawLine(int begin,int end){//上下
for( int i=begin;i<=end;i++){
System.out.print(getGraphics(map[i]));
}
System.out.println();
}
public void drawLine(int begin,int end,int aPos,int bPos){//上下重载
for( int i=begin;i<=end;i++){
System.out.print(getGraphics(map[i],i,aPos,bPos));
}
System.out.println();
}
public void drawRight(int begin,int end){//右边
for(int i=begin;i<=end;i++){
for(int j=1;j<=109;j++){System.out.print(" ");}//打空格
System.out.println(getGraphics(map[i]));
}

}
public void drawRight(int begin,int end,int aPos,int bPos){//右边重载
for(int i=begin;i<=end;i++){
for(int j=1;j<=109;j++){System.out.print(" ");}
System.out.println(getGraphics(map[i],i,aPos,bPos));
}

}
public void drawMiddleLine(int begin,int end){//中间
for(int i=end;i>=begin;i--){
System.out.print(getGraphics(map[i]));
}
System.out.println();
}
public void drawMiddleLine(int begin,int end,int aPos,int bPos){//中间重载
for(int i=end;i>=begin;i--){
System.out.print(getGraphics(map[i],i,aPos,bPos));
}
System.out.println();
}
public void drawLeft(int begin,int end){//左边
for(int i=begin;i<=end;i++){
System.out.println(getGraphics(map[i]));
}
}
public void drawLeft(int begin,int end,int aPos,int bPos){//左边重载
for(int i=begin;i<=end;i++){
System.out.println(getGraphics(map[i],i,aPos,bPos));
}
}
public void showMap(int aPos,int bPos){//地图显示

drawLine(0, 30,aPos,bPos);
drawRight(31, 34,aPos,bPos);
drawMiddleLine(35, 65,aPos,bPos);
drawLeft(66, 69,aPos,bPos);
drawLine(70, 99,aPos,bPos);
}
public String  getGraphics(int flag){//数字换成图像
String icon=null;
if(flag==0){icon="∷";}
else if(flag==1){icon="¤";}
else if(flag==2){icon="★";}
else if(flag==3){icon="■";}
else{ return icon="〓";}
return icon;
}
/**

* @param flag   当前格子表示
* @param index当前格子下标
* @param aPos A的位置
* @param bPos B的位置
* @return
*/
public String getGraphics(int flag,int index,int aPos,int bPos){//数字换图像重写
String icon=null;
if(index==aPos&&index==bPos){
icon="@@";
}else if(index==aPos){
icon="A";
}else if(index== bPos){
icon="B";
}else{
icon=getGraphics(flag);
}
return icon;
}

}

构造玩家类

package come.igeek;

import java.util.Random;

public class Player {
private String name;
private int point;//位置
private boolean isPause=false;//是否暂停,默认不暂停

public Player(){

}
public Player(String name, int point, boolean isPause) {
super();
this.name = name;
this.point = point;
this.isPause = isPause;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getPoint() {
return point;
}

public void setPoint(int point) {
this.point = point;
}

public boolean isPause() {
return isPause;
}

public void setPause(boolean isPause) {
this.isPause = isPause;
}

//掷色子
public int play(){
Random m=new Random();
int num=m.nextInt(6)+1;
return num;
}

}

构造游戏类

package come.igeek;

import java.util.Scanner;

public class Game {
//两个玩家
Player[] player =new Player[2];
//一张地图
Map map;

//游戏初始化
public void init(){
//选角色
Scanner in = new Scanner(System.in);
for(int i=0;i<player.length;i++){
System.out.println("请玩家1选择角色:1.孙悟空;  2.猪八戒; 3.白龙马:");
int choose=in.nextInt();

player[i]=new Player();
player[i].setName(getName(choose));
}

//显示地图
map=new Map();
map.init();
//开始游戏
start();
}
//根据用户选择得到对应的角色名称
public String getName(int choose){
String name=null;
switch(choose){
case 1:
name="孙悟空";
break;
case 2:
name="猪八戒";
break;
case 3:
name="白龙马";
break;
}
return name;
}

//游戏开始
public void start(){
Scanner in = new Scanner(System.in);
//玩家循环掷筛子
while(player[0].getPoint()<99&&player[1].getPoint()<99){
//A和B轮流掷
for(int i=0;i<player.length;i++){
//player[i]是玩家A或者B
if(player[i].isPause()){
System.out.println(player[i].getName()+"暂停一轮");
player[i].setPause(false);
continue;
}
System.out.print("请玩家"+player[i].getName()+"掷骰子:");
in.nextLine();
int n=player[i].play();
System.out.println("点数为:"+n);
if(player[i].getPoint()+n>=99){
System.out.println(player[i].getName()+"获胜");
return;
}
//改变位置
player[i].setPoint(player[i].getPoint()+n);

//判断当前是否踩到关卡
int pos=player[i].getPoint();
int flag=map.map[pos];
switch(flag){
case 0:
common(i);
break;
case 1:
luckyTurn(i);
break;
case 2:
landMine(i);
break;
case 3:
pause(i);
break;
case 4:
timeTunnel(i);
}

//重绘地图
map.showMap(player[0].getPoint(),player[1].getPoint());
}
}
}

public void common(int i){//前进到普通格处理,i为当前玩家
if(player[0].getPoint()==player[1].getPoint()){
if(i==0){System.out.println(player[1].getName()+"被踢回原点");player[1].setPoint(0);}
else{System.out.println(player[0].getName()+"被踢回原点");player[0].setPoint(0);}
}
}
public void luckyTurn(int i){//幸运轮盘,交换或轰炸(退六)
Scanner in = new Scanner(System.in);
System.out.println("恭喜遇到幸运轮盘,选择功能 1-与对方交换位置 2-轰炸对方");
int choose=in.nextInt();
switch(choose){
case 1:
if(i==1){
int change=player[1].getPoint();
player[1].setPoint(player[0].getPoint());
player[0].setPoint(change);
}else{
int change=player[0].getPoint();
player[0].setPoint(player[1].getPoint());
player[1].setPoint(change);
}
break;
case 2:
if(i==0){
if(player[1].getPoint()<6)player[1].setPoint(0);else player[1].setPoint(player[1].getPoint()-6);
}
else {
if(player[0].getPoint()<6)player[0].setPoint(0);else player[0].setPoint(player[0].getPoint()-6);
}
break;
default:
System.out.println("默认选择轰炸");
if(i==0){
if(player[1].getPoint()<6)player[1].setPoint(0);else player[1].setPoint(player[1].getPoint()-6);
}
else {
if(player[0].getPoint()<6)player[0].setPoint(0);else player[0].setPoint(player[0].getPoint()-6);
}
}
}
public void landMine(int i){//踩地雷(退六)
System.out.println(player[i].getName()+"踩到地雷,后退六步");
if(player[i].getPoint()<6)
{player[i].setPoint(0);}
else
{player[i].setPoint(player[i].getPoint()-6);}
}
public void pause(int i){//暂停一圈
player[i].setPause(true);
}
public void timeTunnel(int i){//时空隧道(进十)
System.out.println(player[i].getName()+"进入时空隧道,前进十步");
player[i].setPoint(player[i].getPoint()+10);
}

}

主函数测试类

package come.igeek;

public class test {

public static void main(String[] args) {
Game game=new Game();
game.init();
}

}

Java编写的(骑士)飞行棋相关推荐

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

    /**主体方法 import java.util.Random; import java.util.Scanner; public class Game { public Map map; Scann ...

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

    经过一个多月的学习终于学完了使用Java语言理解程序逻辑课程,花了一周的时间写完了项目案例--骑士飞行棋.为了方便大家的交流学习,先将代码上传,欢迎大家批评指正.注:我把Game类的play方法中'开 ...

  3. C语言编写小游戏——骑士飞行棋

    /* Author Mr.Long* Date 2015年12月2日17:33:17 */ #include<iostream> #include<string> #inclu ...

  4. 面向过程之骑士飞行棋

    1.前言总序 还记得我们小时候完的那种飞行棋吗?你们都玩过吗?反正我是玩过,嘿嘿,那种飞行棋可以有多个用户参与,然后有一个塑料或者纸质的棋盘,上面有很多规则,然后有一个筛子,用户可以摇动出现数字,然后 ...

  5. 骑士飞行棋 c语言代码,骑士飞行棋源代码.doc

    骑士飞行棋源代码 骑士飞行棋源代码using System;using System.Collections.Generic;using System.Linq;using System.Text; ...

  6. 骑士飞行棋 C#代码详解

    最近看见一个骑士飞行棋的小游戏代码,感觉这个代码中将大多数C#的基础知识都运用到了,是一个新手检验学习成果的有效方法,特此将这个代码整理一遍.这是一个控制台程序.这是代码下载地址,代码中的注释非常详细 ...

  7. 看视频学编程之骑士飞行棋—自己做(单机版)

    ------- Windows Phone 7手机开发..Net培训.期待与您交流! ------- 这里就不多做说明了,很简单的一个小游戏-飞行棋,控制台输出的有点丑,不过逻辑才是最重要的 有兴趣的 ...

  8. 黑马程序员 骑士飞行棋

    ------- Windows Phone 7手机开发..Net培训.期待与您交流! ------- 游戏说明: 有一个100格的棋盘(当然也可以自定义200甚至300格),玩家A和玩家B互掷骰子,根 ...

  9. 【黑马程序员】9. 骑士飞行棋

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 本项目使用的是面向过程的程序设计思 ...

最新文章

  1. 机器学习中的数学 人工智能深度学习技术丛书
  2. 【科普】不同行业的常见数据分析的指标是什么?
  3. EXP的flashback_scn和flashback_time
  4. 访问CrmService遇到HTTP status 401 Unauthorized的问题
  5. 最全 JavaScript Array 方法 详解
  6. 网络安全公司 Proficio 获1200万美元融资
  7. Spring Boot 细节挖掘(全局异常处理)
  8. 面试容易问的 JavaScript 知识点,你知道几个?
  9. python random模块中的指令_python中random模块的使用
  10. codereviw得到的一些经验
  11. 计算机字体库被删了,win7系统下word字体库不想要的字体如何删除
  12. itools 苹果录屏大师 java_itools录屏大师
  13. ubuntu linux修改ip地址命令,永久修改ubuntu系统MAC和IP地址的方法命令
  14. 录视频时帧数越高越好么?
  15. 推荐系统:石器与青铜时代
  16. 再见SNDA,在离职之后
  17. 你怎么保存微博中喜欢的视频
  18. 亮度键消失、亮度键失灵且电脑亮度为最大 | 小米 | win11 | 解决办法最最最全合集
  19. 英文文本分类——电影评论情感判别
  20. window.onload的使用

热门文章

  1. 组网技术 | 远程telnet管理路由器
  2. Nginx错误日志配置
  3. 微信小程序的底部菜单栏实现和界面顶部显示
  4. Unity3D Texture to Sprite
  5. java32位玩我的世界卡_我的世界卡顿java这么优化_我的世界流畅运行我的世界方法_玩游戏网...
  6. [答疑]EA中画状态转换图如何画的,就是画的那种曲线
  7. 服务器IP绑定自己的域名-腾讯云
  8. 下载matlab安装包太慢_软件安装不上,可能是网速慢!Conda/R/pip/brew等国内镜像大全拿走不谢~~...
  9. 阿里3.10笔试第一题
  10. logback输出json格式日志并带traceId