java读取控制台输入之掷骰子

今天看了关于读取控制台输入的内容,使用System.in就可以实现读取控制台的输入,也就是键盘输入。有一个注意点,键盘输入的内容先是存在数组中,要把数组中的内容转换为字符串。

定义数组:

byte[] b = new byte[1024];

int n= System.in.read(b)

String s = new String(b,0,n)

掷骰子——控制台小游戏:要求:玩家初始有1000金钱,妹子输入压大还是压小,以及下注金额,随机三个骰子的点数,如果和小于等于9,则开小,否则开大,玩家猜对,奖励下注的金额,否则扣除相同的金额。

public static void main(String[] args) {
		int money = 1000;//初始金钱数量
		int diceNum = 0 ;//掷出的骰子的数值和
		int type = 0;//玩家押的大小
		int cMoney = 0;//当前下注金额
		boolean success;//胜负
		//游戏过程
		while(true){
			System.out.println("请押大小(1代表大,2代表小):");
			type = readKeyboard();
			//校验
			if(!checkType(type)){
				System.out.println("输入非法,请重新输入!");
				continue;
			}
			//输入下注金额
			while(true){
					System.out.println("你当前的金钱数量是"+money+"请下注:");
					cMoney = readKeyboard();
					//校验
					if(!checkCMoney(money,cMoney)){
						System.out.println("输入非法,请重新输入!");
						continue;
					}else{
						break;
					}
			}
			//掷骰子
			diceNum = doDice();
			//判断胜负
			success = isSuccess(type,diceNum);
			//金钱变化
			money = changeMoney(money,success,cMoney);
			//游戏结束
			if(isEnd(money)){
				System.out.println("你输了,bye!");
				break;
			}
		}
	}
	/**
	 * 读取用户输入
	 * @return 玩家输入的是整数,如果格式非法则返回0
	 */
	public static int readKeyboard(){
		try{
			//缓冲区数组
			byte[] b = new byte[1024];
			//读取用户输入到数组b中,
			//读取的字节数量为n
			int n = System.in.read(b);
			//转换为整数
			String s = new String(b,0,n-2);
			int num = Integer.parseInt(s);
			return num;
		}catch(Exception e){}
		return 0;
	}
	/**
	 * 押的类型校验
	 * @param type 类型
	 * @return true 代表符合要求,false代表不符合
	 */
	public static boolean checkType(int type){
		if(type == 1||type == 2){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * 校验下注金额是否合法
	 * @param money 玩家金钱数
	 * @param cMoney 下注金额
	 * @param true 代表符合要求,false代表不符合要求
	 */
	public static boolean checkCMoney(int money,int cMoney){
		if(cMoney<=0){
			return false;
		}else if(cMoney <=money){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * 掷骰子
	 * @return 骰子的数值之和
	 */
	public static int doDice(){
		int n = (int)(Math.random()*6)+1;
		int n1 = (int)(Math.random()*6)+1;
		int n2 = (int)(Math.random()*6)+1;
		//输出随机结果
		System.out.println("庄家开:"+n + n1 + n2);
		return n+n1+n2;
	}
	/**
	 * 胜负判断
	 * @param type 用户输入类型
	 * @param diceNum 骰子点数
	 * @param true代表赢,false代表输
	 */
	public static boolean isSuccess(int type,int diceNum){
		//计算庄家类型
		int bankerType = 0;
		if(diceNum<=9){
			bankerType = 2;
			System.out.println("庄家开小!");
		}else{
			bankerType = 1;
			System.out.println("庄家开大!");
		}
		if(bankerType == type){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * 金钱变化
	 * @param money 用户钱数
	 * @param success 胜负
	 * @param cMoney 下注金额
	 * @return 变化以后的金钱
	 */
	public static int changeMoney(int money,boolean success,int cMoney){
		if(success){
			money+=cMoney;
		}else{
			money-=cMoney;
		}
		System.out.println("剩余金额:"+money);
		return money;
	}
	/**
	 * 判断游戏是否结束
	 * @param money 玩家金钱
	 * @param true 代表结束
	 */
	public static boolean isEnd(int money){
		return money<=0;
	}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值