@@ 两人重合时
A 玩家1
B 玩家2
¤ 幸运轮盘
★ 地雷
■ 暂停
〓 时空隧道
∷ 普通格
地图样式
∷∷∷∷∷★¤∷∷■∷∷∷★∷∷∷★∷∷〓∷∷¤∷〓∷■∷∷∷
∷
∷
★
∷
∷★〓∷∷■∷∷∷∷∷∷∷∷∷★∷∷∷∷〓∷∷∷∷¤∷★∷∷∷
∷
∷
∷
¤∷∷〓∷∷∷∷∷∷∷★∷∷¤∷∷∷∷〓∷〓∷∷■★∷∷∷∷∷
游戏规则说明:
如果两玩家重合输出@@在同一位置–》将此位置的字符替换为@@
也就是说将每次都需判断是否在同一位置
不在同一位置那么输出代号—》将此位置的字符替换成代号
类: 规则(裁判)
玩家
玩家属性:位于地图中的位置
玩家动作:
地图
地图用数组储存
测试类
Map类:
package com.yc.demo1;
public class Map {
private char temp1;
private char temp2;
private char []map={'∷','∷','∷','∷','∷','★','¤','∷','∷','■','∷','∷','∷','★','∷','∷','∷'//17
,'★','∷','∷','〓','∷','∷','¤','∷','〓','∷','■','∷','∷','∷','∷','∷','★','∷','∷',//36
'★','〓','∷','∷','■','∷','∷','∷','∷','∷','∷','∷','∷','∷','★','∷','∷','∷','∷','〓',//56
'∷','∷','∷','∷','¤','∷','★','∷','∷','∷','∷','∷','∷','¤','∷','∷','〓','∷','∷','∷',//76
'∷','∷','∷','∷','★','∷','∷','¤','∷','∷','∷','∷','〓','∷','〓','∷','∷','■','★','∷',//100
'∷','∷','∷','∷'};
public char[] getMap() {
return map;
}
//输出地图
public void showMap(Player p1,Player p2){
//输出棋子位置
if(p1.getPosition()==p2.getPosition()){
temp1=map[p1.getPosition()];
temp2=map[p2.getPosition()];
map[p1.getPosition()]='@';
}else{
temp1=map[p1.getPosition()];
map[p1.getPosition()]='A';
temp2=map[p2.getPosition()];
map[p2.getPosition()]='B';
}
//输出棋盘
for(int i=0;i<31;i++){
System.out.print(map[i]);
}
System.out.println();
for(int i=31;i<35;i++){
for(int j=0;j<91;j++){
System.out.print(" ");
}
System.out.println(map[i]);
}
for(int i=35;i<65;i++){
System.out.print(map[(map.length-i)+2]);
}
for(int i=65;i<70;i++){
System.out.println(map[i]);
}
System.out.print(map[69]);
for(int i=70;i<100;i++){
System.out.print(map[i]);
}
//还原棋盘
map[p1.getPosition()]=temp1;
map[p2.getPosition()]=temp2;
}
}
Player类:
package com.yc.demo1;
import java.util.Scanner;;
public class Player {
private int position=0;
private String name;
private String coad;
private Player player;
public Player() {
}
public Player(int position) {
this.position = position;
}
public Player(int position, Player player) {
super();
this.position = position;
this.player = player;
}
//获取的方法
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCoad() {
return coad;
}
public void setCoad(String coad) {
this.coad = coad;
}
//获取玩家名
public Player playName(Player player,int j){
Scanner sc=new Scanner(System.in);
int i;
do{
System.out.println("请选择角色:1.钱夫人 2.大老千 3.阿土伯 4.贝哥");
System.out.print("请玩家"+j+"选择角色:");
i=sc.nextInt();
switch(i){
case 1:
player.name="钱夫人";
break;
case 2:
player.name="大老千";
break;
case 3:
player.name="阿土伯";
break;
case 4:
player.name="贝哥";
break;
default:
System.out.println(" 您输入的参数有误,请重新输入");
break;
}
}while(i>4||i<0);
return player;
}
}
Rule类:
package com.yc.demo1;
import java.util.Scanner;
import java.util.Random;
public class Rule {
public void StartGame(){
System.out.println("***************************************");
System.out.println("// //");
System.out.println("// 大富翁 //");
System.out.println("// //");
System.out.println("// //");
System.out.println("***************************************");
System.out.println();
System.out.println();
System.out.println();
System.out.println("~~~~~~~~~~~~~~~双人对战~~~~~~~~~~~~~~~~~~");
Player p1=new Player();
Player p2=new Player();
p1.setCoad("A");
p2.setCoad("B");
Map m1=new Map();
choiceRole(p1,p2);
System.out.println();
System.out.println();
System.out.println();
gameStart(p1,p2,m1);
}
//选择角色
public void choiceRole(Player p1,Player p2){
do{
p1.playName(p1, 1);
p2.playName(p2, 2);
}while(p1.getName()==p2.getName());
}
//正式开始游戏
public void gameStart(Player p1,Player p2,Map m1){
System.out.println("***************************************");
System.out.println(" GAME START ");
System.out.println("***************************************");
System.out.println("^_^"+p1.getName()+"您的代号为:"+p1.getCoad());
System.out.println("^_^"+p2.getName()+"您的代号为:"+p2.getCoad());
System.out.println();
System.out.println("图例:■暂停 ¤幸运轮盘 ★地雷 〓时空隧道 ∷普通");
m1.showMap(p1,p2);
System.out.println();
dice(p1,p2,m1);
}
//掷骰子
public void dice(Player p1,Player p2,Map m1){
Scanner sc=new Scanner(System.in);
Random rd=new Random();
do{
if(m1.getMap()[p1.getPosition()]!='■'){ //此if判断句为“暂停”特殊事件
System.out.println(p1.getName()+",请您按任意键启动掷骰子:");
sc.nextLine();
int point=rd.nextInt(6)+1;
p1.setPosition(p1.getPosition()+point);
System.out.println("---------------");
System.out.println("骰子数:"+point);
System.out.println();
specialEvents(p1,p2,m1);
if(p1.getPosition()<99){
System.out.println(p1.getName()+"当前的位置 :"+p1.getPosition());
System.out.println(p2.getName()+"当前的位置:"+p2.getPosition());
}else{
p1.setPosition(99);
System.out.println(p1.getName()+"当前的位置 :"+(p1.getPosition()+1));
System.out.println(p2.getName()+"当前的位置:"+p2.getPosition());
}
System.out.println("---------------");
m1.showMap(p1,p2);
System.out.println();
if(true==win(p1,p2)){
System.out.println("***************************************");
System.out.println(" GAME OVER ");
System.out.println("***************************************");
System.out.println("恭喜"+p1.getName()+"获胜了!");
return;
}
}
if(m1.getMap()[p2.getPosition()]!='■'){ //此if判断句为“暂停”特殊事件
System.out.println(p2.getName()+"请您按任意键启动掷骰子:");
sc.nextLine();
int point1=rd.nextInt(6)+1;
p2.setPosition(p2.getPosition()+point1);
System.out.println("---------------");
System.out.println("骰子数:"+point1);
System.out.println();
specialEvents(p1,p2,m1);
if(p2.getPosition()<99){
System.out.println(p2.getName()+"当前的位置 :"+p2.getPosition());
System.out.println(p1.getName()+"当前的位置:"+p1.getPosition());
}else{
p2.setPosition(99);
System.out.println(p2.getName()+"当前的位置 :"+(p2.getPosition()+1));
System.out.println(p1.getName()+"当前的位置:"+p1.getPosition());
}
System.out.println("---------------");
m1.showMap(p1,p2);
System.out.println();
if(win(p1,p2)==true){
System.out.println("***************************************");
System.out.println(" GAME OVER ");
System.out.println("***************************************");
System.out.println("恭喜"+p2.getName()+"获胜了!");
return;
}
}
}while(p1.getPosition()<=99||p2.getPosition()<=99);
}
//判断是否胜利
public boolean win(Player p1,Player p2){
if(p1.getPosition()>=99||p2.getPosition()>=99){
return true;
}
return false;
}
//特殊事件
public void specialEvents(Player p1,Player p2,Map m1){
Scanner sc=new Scanner(System.in);
//幸运转盘
if(m1.getMap()[p1.getPosition()]=='¤'||m1.getMap()[p2.getPosition()]=='¤'){
int choice = 0;
do{
System.out.println("◇◆◇◆◇◆◇◆欢迎进入幸运键盘◇◆◇◆◇◆◇◆");
System.out.println("\t请选择一种运气:");
System.out.println("1.交换位置\t\t2.轰炸");
System.out.println("⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅⬅➡➡➡➡➡➡➡➡➡➡➡");
choice=sc.nextInt();
switch(choice){
case 1://交换位置
int temp3=p2.getPosition();
p2.setPosition(p1.getPosition());
p1.setPosition(temp3);;
break;
case 2://轰炸
if(m1.getMap()[p1.getPosition()]=='¤'){
if(p2.getPosition()-6<0){
p2.setPosition(0);
}else{
p2.setPosition(p2.getPosition()-6);
}
}else if(m1.getMap()[p2.getPosition()]=='¤'){
if((p1.getPosition()-6)<0){
p1.setPosition(0);
}else{
p1.setPosition(p1.getPosition()-6);
}
}
break;
default:
System.out.println("您输入的参数有误,请重新输入...");
break;
}
}while(choice!=1&&choice!=2);
}
//地雷
if(m1.getMap()[p1.getPosition()]=='★'||m1.getMap()[p2.getPosition()]=='★'){
System.out.println("呀!踩到了地雷,真可怜...退后六格吧...");
if(m1.getMap()[p1.getPosition()]=='★'){
if((p1.getPosition()-6)<0){
p1.setPosition(0);
}else{
p1.setPosition(p1.getPosition()-6);
}
}
if(m1.getMap()[p2.getPosition()]=='★'){
if((p2.getPosition()-6)<0){
p2.setPosition(0);
}else{
p2.setPosition(p2.getPosition()-6);
}
}
}
//时空隧道
if(m1.getMap()[p1.getPosition()]=='〓'||m1.getMap()[p2.getPosition()]=='〓'){
System.out.println("哇!进入了时空隧道,真好运...前进10格吧...");
if(m1.getMap()[p1.getPosition()]=='〓'){
if((p1.getPosition()+10)>99){
p1.setPosition(99);
}else{
p1.setPosition(p1.getPosition()+10);
}
}
if(m1.getMap()[p2.getPosition()]=='〓'){
if((p2.getPosition()+10)>99){
p2.setPosition(99);
}else{
p2.setPosition(p2.getPosition()+10);
}
}
}
}
}
测试类:
package com.yc.demo1;
public class Test01 {
public static void main(String []args){
Rule r1=new Rule();
r1.StartGame();
}
}