Java编写的(骑士)飞行棋
棋盘上的关卡只在骑兵第一次移动遇到时有效
功能:在控制台显示棋盘,并显示当前玩家在棋盘中所处的位置
功能:实现游戏初始化设置、展示游戏开始界面以及角色设置、控制游戏进度、实现游戏规则、以及游戏结束后结果评判
功能:启动游戏
构造地图类
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编写的(骑士)飞行棋相关推荐
- java飞行棋项目_java小项目 类与 对象 骑士飞行棋代码
/**主体方法 import java.util.Random; import java.util.Scanner; public class Game { public Map map; Scann ...
- 北大青鸟Accp5.0 S1 Java项目——骑士飞行棋
经过一个多月的学习终于学完了使用Java语言理解程序逻辑课程,花了一周的时间写完了项目案例--骑士飞行棋.为了方便大家的交流学习,先将代码上传,欢迎大家批评指正.注:我把Game类的play方法中'开 ...
- C语言编写小游戏——骑士飞行棋
/* Author Mr.Long* Date 2015年12月2日17:33:17 */ #include<iostream> #include<string> #inclu ...
- 面向过程之骑士飞行棋
1.前言总序 还记得我们小时候完的那种飞行棋吗?你们都玩过吗?反正我是玩过,嘿嘿,那种飞行棋可以有多个用户参与,然后有一个塑料或者纸质的棋盘,上面有很多规则,然后有一个筛子,用户可以摇动出现数字,然后 ...
- 骑士飞行棋 c语言代码,骑士飞行棋源代码.doc
骑士飞行棋源代码 骑士飞行棋源代码using System;using System.Collections.Generic;using System.Linq;using System.Text; ...
- 骑士飞行棋 C#代码详解
最近看见一个骑士飞行棋的小游戏代码,感觉这个代码中将大多数C#的基础知识都运用到了,是一个新手检验学习成果的有效方法,特此将这个代码整理一遍.这是一个控制台程序.这是代码下载地址,代码中的注释非常详细 ...
- 看视频学编程之骑士飞行棋—自己做(单机版)
------- Windows Phone 7手机开发..Net培训.期待与您交流! ------- 这里就不多做说明了,很简单的一个小游戏-飞行棋,控制台输出的有点丑,不过逻辑才是最重要的 有兴趣的 ...
- 黑马程序员 骑士飞行棋
------- Windows Phone 7手机开发..Net培训.期待与您交流! ------- 游戏说明: 有一个100格的棋盘(当然也可以自定义200甚至300格),玩家A和玩家B互掷骰子,根 ...
- 【黑马程序员】9. 骑士飞行棋
---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 本项目使用的是面向过程的程序设计思 ...
最新文章
- 机器学习中的数学 人工智能深度学习技术丛书
- 【科普】不同行业的常见数据分析的指标是什么?
- EXP的flashback_scn和flashback_time
- 访问CrmService遇到HTTP status 401 Unauthorized的问题
- 最全 JavaScript Array 方法 详解
- 网络安全公司 Proficio 获1200万美元融资
- Spring Boot 细节挖掘(全局异常处理)
- 面试容易问的 JavaScript 知识点,你知道几个?
- python random模块中的指令_python中random模块的使用
- codereviw得到的一些经验
- 计算机字体库被删了,win7系统下word字体库不想要的字体如何删除
- itools 苹果录屏大师 java_itools录屏大师
- ubuntu linux修改ip地址命令,永久修改ubuntu系统MAC和IP地址的方法命令
- 录视频时帧数越高越好么?
- 推荐系统:石器与青铜时代
- 再见SNDA,在离职之后
- 你怎么保存微博中喜欢的视频
- 亮度键消失、亮度键失灵且电脑亮度为最大 | 小米 | win11 | 解决办法最最最全合集
- 英文文本分类——电影评论情感判别
- window.onload的使用
热门文章
- 组网技术 | 远程telnet管理路由器
- Nginx错误日志配置
- 微信小程序的底部菜单栏实现和界面顶部显示
- Unity3D Texture to Sprite
- java32位玩我的世界卡_我的世界卡顿java这么优化_我的世界流畅运行我的世界方法_玩游戏网...
- [答疑]EA中画状态转换图如何画的,就是画的那种曲线
- 服务器IP绑定自己的域名-腾讯云
- 下载matlab安装包太慢_软件安装不上,可能是网速慢!Conda/R/pip/brew等国内镜像大全拿走不谢~~...
- 阿里3.10笔试第一题
- logback输出json格式日志并带traceId