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