简易大富翁游戏

题目:大富翁游戏——控制台界面

题目要求:

 @@ 两人重合时
 A 玩家1
 B 玩家2
 ¤ 幸运轮盘
 ★ 地雷
 ■ 暂停
 〓 时空隧道
 ∷ 普通格
地图样式

∷∷∷∷∷★¤∷∷■∷∷∷★∷∷∷★∷∷〓∷∷¤∷〓∷■∷∷∷
                          ∷
                         ∷
                         ★
                         ∷
∷★〓∷∷■∷∷∷∷∷∷∷∷∷★∷∷∷∷〓∷∷∷∷¤∷★∷∷∷



¤∷∷〓∷∷∷∷∷∷∷★∷∷¤∷∷∷∷〓∷〓∷∷■★∷∷∷∷∷

游戏规则说明:

  1. 双方重叠,则后来者将前面的一位打回到起点
  2. 幸运轮盘:
    两种玩法:
    (1). 交换位置
    (2). 轰炸, 将对方打回六格
  3. 踩到地雷,自己退六格
  4. 时空隧道: 前进10格
  5. 暂停:下次暂停一次.

分析:

如果两玩家重合输出@@在同一位置–》将此位置的字符替换为@@
也就是说将每次都需判断是否在同一位置
不在同一位置那么输出代号—》将此位置的字符替换成代号

类: 规则(裁判)
玩家
玩家属性:位于地图中的位置
玩家动作:
地图
地图用数组储存
测试类

代码

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();
	}
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值