美文网首页Android开发成长史
Android_开发_day10_扑克游戏

Android_开发_day10_扑克游戏

作者: 不要问我问就是百度 | 来源:发表于2019-08-10 09:12 被阅读6次

    Android_开发day10扑克游戏

    目的:

    通过写一些小游戏来增加学习中的乐趣,同时也是对前面学习的一些知识的一些整合。

    技术:

    <1> 单例设计模式:所谓的单例设计模式就是创造一个对象实例就可以在不同的地方去访问它,做到一改全改的效果方便程序的形成。单例设计模式首先不允许用户创建某个类的实例,可以将构造函数私有化,第二步在自己的类里面提供创建这个对象的方法。我们可以在类中用public static void 类名 对象名(对象名一般用default sharedInstance manage),这种创建单例式对象的方法叫做饿汉式。第二种创建单例对象的方法叫做懒汉式,即在外部需要它的时候才创建它,因此只要在类里提供创建它的方法即可。

    <2> 数组的引用:ArrayList<泛型>是一个动态可变数组,也是一个管理数组的类,它的里面装的是引用变量,可根据引用变量的多少来动态开辟内存,其实就是我们c语言阶段学的链表,而Java中有一个双链表的LinkedList<>。常用的方法有add(东西);get(0~数组长度);size();返回值就是数组的长度。

    技术如何使用:

    有了前面的几个类的基础后我们就可以将其整合,因此我们可以将游戏中心写成如下代码:

    public class GameCenter {
        public static void main(String[] args){
            int choice = 0;
            do {
                int num, basicBet;
                Utils.showWelcome();
                System.out.print("请输入玩家个数:");
                num = Utils.scanf();
                System.out.print("请规定本局底注:");
                basicBet = Utils.scanf();
                Person[] players = new Person[num];
                PlayerManager.initPlayers(players);//生成玩家
                while (true) {
                    System.out.println("请确认玩家信息:");
                    PlayerManager.showPlayers(players);//显示玩家
                    System.out.println("Loading……");
                    PlayerManager.distributePoker(players);
                    //manager.showPokers();//测试
                    System.out.print("( ");
                    PlayerManager.showPlayerPoker(players);//看一下玩家的牌
                    System.out.println("看不见我 )");
                    PlayerManager.gameStart(players, basicBet);//第一轮游戏开始
                    System.out.println("游戏结束,请选择:");
                    Utils.showMenu(1);
                    System.out.print("请选择:");
                    choice = Utils.scanf();
                    if (choice == 2 || choice == 4) {
                        break;
                    } else if (choice == 3) {
                        System.out.print("请输入底注:");
                        basicBet = Utils.scanf();
                        System.out.print("Success!");
                    }
                }
    
            }while (choice != 4);
        }
    }
    

    相对对于昨日添加了一个Utils类,目的是更好的输出到控制台,和从控制台输入。

    import java.util.Scanner;
    
    public class Utils {
        public static void showWelcome(){
            showStar();
            System.out.println("欢迎来到御坂斗地主");
            showStar();
        }
        public static void showStar(){
            System.out.println("*******************");
        }
        public static void showMenu(boolean i){
            if (!i) {
                System.out.println("1.看牌");
                System.out.println("2.下注");
                System.out.println("4.弃牌");
            }
            else {
                System.out.println("1.看牌");
                System.out.println("3.跟注");
                System.out.println("4.弃牌");
            }
        }
        public static int scanf(){
            int num;
            Scanner scanner = new Scanner(System.in);
            num = scanner.nextInt();
            return num;
        }
        public static void showMenu(int i){
            System.out.println("1.再来一局");
            System.out.println("2.从头开始");
            System.out.println("3.修改底注");
            System.out.println("4.退出游戏");
        }
    }
    

    实际使用效果:

    {E4023612-CA3B-459C-87FB-C35DD9EA1095}.png.jpg {7C7547CF-D671-4A7D-B185-252D8A0E8B32}.png.jpg {C29894F8-55B4-4F12-A95C-2DF48E092C4F}.png.jpg

    总结:

    这个Demo如果能完整写完的话就能够体会到了面对对象的编程思想与面向过程的编程思想的差别。

    相关文章

      网友评论

        本文标题:Android_开发_day10_扑克游戏

        本文链接:https://www.haomeiwen.com/subject/eatcjctx.html