今天看了关于读取控制台输入的内容,使用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; }