我对我的编程技能越来越有信心,所以我决定重新开始之前开始的纸牌游戏。这个程序的重点是现在我对程序流程、变量、条件等有了很好的掌握,我想加深我对OOP的理解
所以我需要一些关于面向对象设计的建议
我的纸牌游戏将有5个类:
我想知道让Dealer类成为一个接口是否合适的OOP。所有玩家都应该能够扮演庄家的角色,但不用说,每轮牌只有一个庄家。即使在任何给定回合中8个玩家对象中有7个不会使用它们实现的方法,而且在当时不被视为庄家,是否可以让Player类实现庄家可以执行的方法(例如DealGame())?或者是不是更好的做法是让DealGame()方法属于Deck类并调用甲板来处理游戏?很抱歉,如果这是一个愚蠢的问题,但我对OOP的原则有点粗略,希望得到一些建议,以学会第一次就正确地做这件事。
我也想过让庄家扩展玩家,但我认为这是错误的,因为我需要玩家在飞行中扮演庄家的角色,而不是以不可改变的方式被声明为庄家对象。在这种情况下——如果庄家扩展了玩家——我想我需要声明游戏中的所有玩家都是庄家。
所以基本上我问:
庄家并不是一种特殊类型的玩家。这只是玩家的一个实例,每次都有特殊的责任。我认为你在正确的轨道上,但是你可能想要为你正在玩的特定游戏创建一个类。
假设你正在写一个扑克游戏。在这种情况下,荷官偶尔会影响游戏的顺序(取决于风格)。但如果你在玩战争,庄家只是一个分发牌的人,你真的不在乎。在这种情况下,“谁是荷官”和“荷官应该如何处理游戏”的概念是游戏本身的责任,而不是玩家的责任。
这真的很大程度上取决于程序是如何工作的,你期望每个职业能做什么,以及每个物品的生命周期是如何工作的(例如,一个玩家能否在后面的回合中成为庄家)。
我从你写的东西中得到的第一印象是,你需要一个基类“人”,“玩家”和“荷官”从中继承,但这只是一个猜测,处理有限的信息。
你有很好的方法,但仍有一些工作要做:)。所有的课都很好,但是Delaer不行。
第一,如果一个玩家是发牌人,第二个是发牌者,我看不到扩展类或接口的意义。
事实上,一开始,我不会让任何球员成为荷官,这会让事情变得复杂。
最简单和最好的方法是创建5 .游戏。游戏有甲板和所有的球员,它的工作类似于经销商。它等待玩家的反应,该出牌时就出牌,等等。
如果你真的想让玩家成为经销商,那会更复杂:)。嗯,你也需要游戏类,因为<code>游戏</code>必须决定谁开始作为庄家,它应该取消或给予玩家庄家的权利(我不明白这有什么意义,但如果你想…:)。
如何做到这一点?Game
有玩家经销商
变量。如果应该有类似ynsterDealer(Player player)
的方法。然后您需要某种接口来在Game
和Player
之间进行通信。如果您希望Player
对Game
具有所有责任,您可以使用访客模式
。(它允许经销商
“潜入”游戏实例并执行任何公共方法可以执行的操作)。
否则,您可以让<code>游戏并使用返回值进行操作。它允许验证输入…然而,如果我是对的,扑克中的有效输入总是只有一个,所以我看不到任何区别,如果<code>游戏
我看到的唯一原因是,如果<code>庄家
我正在尝试创建一个MVC模式的回合制卡牌游戏。我对正确的设计有些怀疑。 我创建了一个由这些类组成的模型: 卡(使用套装) 套牌(40张牌,抽取牌法,剩余牌数) 表 套装(enum) 玩家(手牌,人名,手牌数,收藏牌我想) 游戏模型(引用了Deck、Table,并在构造函数中包含两个玩家) 我将在用户按下“新游戏”按钮时创建两个Player对象和GameModel(计算机和Player)。这样做对吗
我试图用Java实现纸牌游戏“Skat” 规则: 有32张卡片。每张牌在游戏中只存在一次。 颜色有:梅花、黑桃、红心、钻石 价值观是:王牌,国王,王后,杰克,十,九,八,七 那些牌被洗牌了。有三名球员 第一轮:每位玩家有3张牌。然后将两张卡片放入Skat。 第二轮:每位玩家再获赠4张牌。 第三轮:每位玩家再获得3张牌。 期望输出:每个玩家的牌都被展示(每张牌都应该存在一次) 我的产量:钻石七(32
我尝试在Java实施纸牌游戏“滑冰” 规则: 有32张牌。每张牌在游戏中只存在一次。 颜色是:梅花、黑桃、红心、钻石 这些值是:王牌、国王、王后、杰克、十、九、八、七 那些牌被洗牌了。有三个队员 第一回合:每位玩家获赠3张牌。然后将2张牌放入滑板中。 第二回合:每名玩家再获4张牌。 第三回合:每名玩家再获3张牌。 想要的输出:露出的每个玩家的牌(每张牌都要存在一次) 我的输出:钻石七(32次) 我
问题内容: 我正在尝试创建一个对OOP友好的Java BlackJack游戏,以增进我的知识。 我碰壁了,我只是不知道该问题。想知道是否有人可以指出我的问题。 另外,在搜索了与此相关的主题之后,我发现人们一次又一次地说使用枚举会更有益,因为建议初学者这样做?还是我暂时应该坚持使用String数组。 谢谢。 我的代码: 编辑:目前我从println发出的输出是:[Card @ addbf1,Card
本文向大家介绍C语言实现纸牌计算24点小游戏,包括了C语言实现纸牌计算24点小游戏的使用技巧和注意事项,需要的朋友参考一下 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的。程序主要功能已完成,目前还有部分细节未处理,待完成ing...对于代码中的错误,恳请批评指正。 游戏描述: A-10:分别代表数字 1-10
本文向大家介绍C++扑克牌的洗牌发牌游戏设计,包括了C++扑克牌的洗牌发牌游戏设计的使用技巧和注意事项,需要的朋友参考一下 笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏。具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌。然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等。 笔者在学习他人设计的基础上,完成了自己的程序设计。这里将源程序分享给大家。