博弈游戏

/*
博弈游戏
*/
import java.util.*;
class AgainstGame{
    static int  totalMoney;//全局
    static int  betNum;//全局
    public static void main(String [] args){
    Scanner input = new Scanner(System.in);
        totalMoney = 5000;//全局变量方法内初始化
        System.out.println("初始余额"+totalMoney);
        while(true){
            System.out.println("当前余额"+totalMoney);
            System.out.println("欢迎进入博弈游戏 1 进入游戏 2 退出游戏");
            int choose = input.nextInt();
            if(choose == 1){
                System.out.println("进入游戏");
                System.out.println("客官您好 请押大小 1 大 2 小");
                int choose1 = input.nextInt();
                int record = choiceRecord(choose1);//记录庄家押数
                if(record == -1){
                    System.out.println("输入有误 请重新输入");
                    continue;
                }
                //System.out.println("庄家选择的记录1大2小:"+record);
                moneyRecord();//庄家押钱
                rechargeChoice(); //充值前的选择
                int num = RandomNum();//电脑产生随机数
                System.out.println("Computer摇出来的骰子数为:"+num);
                isRight(num,record);//判读庄家输赢
                System.out.println("****************************************");

            }else if(choose == 2){
                System.out.println("退出游戏");
                break;
            }else{
                System.out.println("输入有误 请重新输入");
            }
        }

    }
    //记录庄家押的数
    public static int choiceRecord(int choose){
        int record = -1;
        if(choose == 1){
            System.out.println("你押的-->大");
            record = 1;
        }else if(choose == 2){
            System.out.println("你押的-->小");
            record = 2;
        }
        return record;
    }
    //记录庄家押的钱
    public static void moneyRecord(){
        System.out.println("未来尽在手中,请下注,买定离手(50的倍数并且不能超过1000)");
        Scanner input = new Scanner(System.in);

        while(true){
            betNum = input.nextInt();
            if(betNum%50!=0 || betNum>1000){
               System.out.println("你下注的金额不符合规定,重新输入");
               continue;
            }else{
                break;
            }
        }

    }
    //系统产生1~18的随机数
    //static double random()  返回带正号的double值,该值大于等于0.0且小于1.0。
    public static int RandomNum(){
        int num = (int)(Math.random()*18)+1;
        return num;
    }

    //充值前的选择
    public static void rechargeChoice(){
        Scanner input = new Scanner(System.in);
        while(true){
                    if(betNum > totalMoney){
                        System.out.println("客官,您的荷包瘪了,充点呗?1 前往饿狼充值 2 退出游戏");
                        int choose2 = input.nextInt();
                        if(choose2 == 1){
                            System.out.println("客官,您太敞亮了,请输入您的充值金额");
                            int money = 0;
                            money = input.nextInt();
                            recharge(money);
                        }else if(choose2 == 2){
                            System.out.println("退出游戏");
                            break;
                        }else{
                            System.out.println("你的输入有误 请重新输入");
                            continue;
                        }
                    }else{
                        break;
                    }
                }
    }
    //充值
    public static void recharge(int money){
        System.out.print("您充了\t"+money);
        totalMoney += money;
        System.out.println("\t余额为\t"+totalMoney);
    }

    //判断大小
    public static void isRight(int RandomNum, int record){
        int flag = 0;

        if(RandomNum>9 && RandomNum<=18){
            flag = 1;//大
        }else{
            flag = 2;//小
        }
        if(flag == record){
            System.out.println("庄家是大");
            System.out.println("真棒,您赢啦\t余额为"+(totalMoney+betNum));
            totalMoney = totalMoney+betNum;
        }else{
            System.out.println("庄家是小");
            System.out.println("抱歉,您输啦\t余额为"+(totalMoney-betNum));
            totalMoney = totalMoney-betNum;
        }

    }
}
时间: 2024-08-03 21:34:18

博弈游戏的相关文章

hihoCoder#: 博弈游戏&#183;Nim游戏

[题目链接]:click here~~ [题目大意]: #1163 : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob. Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏. 在这个游戏中,Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个石子. 每一次行动,Alice和Bob可以选择从一堆石子中取出任意数量的石子.至少取1颗,至多取出这一堆剩下的所有石

hiho一下 第四十五周 博弈游戏&#183;Nim游戏&#183;二 [ 博弈 ]

传送门 题目1 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面朝上,有的背面朝上,从左到右依次编号为1..N.现在两人轮流翻硬币,每次只能将一枚正面朝上的硬币翻过来,并且可以随自己的意愿,在一枚硬币翻转后决定要不要将该硬币左边的任意一枚硬币也翻一次(正面翻到背面或背面翻到正面).翻最后一枚正面向上的硬币的人获胜.同样的,这次游戏里面Alice仍然先手,两人均采

hiho一下 第四十四周 题目1 : 博弈游戏&#183;Nim游戏

题目1 : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob. Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏. 在这个游戏中,Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个石子. 每一次行动,Alice和Bob可以选择从一堆石子中取出任意数量的石子.至少取1颗,至多取出这一堆剩下的所有石子. Alice和Bob轮流行动,取走最后一个石子的人获得胜

hihoCoder - #1173 : 博弈游戏&#183;Nim游戏&#183;三

#1173 : 博弈游戏·Nim游戏·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在这一次游戏中Alice和Bob决定在原来的Nim游戏上增加一条规则:每一次行动时,不仅可以选择一堆取走任意数量的石子(至少取1颗,至多取出这一堆剩下的所有石子),还可以选择将一堆石子分成两堆石子,但并不取走石子.比如说有一堆石子为k个,当Alice或者Bob行动时,可以将这一堆石子分成两堆,分别为x,y.满足x+y=k,x,y>0.那么增加了这一条规则后,在Alice总先手的

博弈游戏&#183;Nim游戏&#183;二

题目1 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和Bob这一次准备玩一个关于硬币的游戏: N枚硬币排成一列,有的正面朝上,有的背面朝上,从左到右依次编号为1..N.现在两人轮流翻硬币,每次只能将一枚正面朝上的硬币翻过来,并且可以随自己的意愿,在一枚硬币翻转后决定要不要将该硬币左边的任意一枚硬币也翻一次(正面翻到背面或背面翻到正面).翻最后一枚正面向上的硬币的人获胜.同样的,这次游戏里面Alice仍然先手,两人均采取最优

蓝桥杯——说好的进阶之取数博弈游戏(动态规划实现)

今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个. 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完. 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢? 程序运行时,从标准输入获得数据,其格式如下: 先是一个整数n(n<100),表示接下来有n个整数.

博弈游戏汇总

1.巴什博弈 一堆石子,有n个,两个人轮流取,每次至少取1个,至多取m个,拿走最后一个石子的人获胜 假设一堆石子有  n=m+1  由于一次只能取m个,无论先手取多少个,后手总能拿走剩余的,这时一定是先手负 于是找到取胜规则: 一对石子  n=(m+1)*r+s 对于先手应该先取走s个,设后手取走k个,先手再取走  m+1-k    剩余的石子个数为  (m+1)(r-1)  以后保持这样的取法,先取者获胜 总之,就是要留给对手  m+1的倍数 可以归结为:   s=0时,后手胜 s<>0时,

取石子(博弈游戏)

问题:一共有N颗石子(或者其他乱七八糟的东西),每次最多取M颗最少取1颗,A,B轮流取,谁最后会获胜?(假设他们每次都取最优解). 先说结论: 假如A先取,N<M,A获胜:  N>M,若N能被(M + 1)整除时,A失败:   若N不能被(M + 1)整除时,A获胜: 假如B先取,(同上): 再说分析: 还是以A先手为例,N<M时A一次拿完(不可能给B留机会,前提就是每次取最优),不会给B留机会: N>M时,A要想赢,必须要在自己倒数第二次取完的时候还剩下(M + 1)颗石子(此时

#1163 : 博弈游戏&#183;Nim游戏

题目来自于hihocoder':http://hihocoder.com/problemset/problem/1163?sid=423214 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob. Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏. 在这个游戏中,Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个石子. 每一次行动,Alice和Bob可以选择从一堆石子中取出任意