Pazaak是来自《星球大战》世界的纸牌游戏。它与BlackJack相似,两名玩家互相争夺,试图在不超过20名的情况下达到20名。每个玩家都有自己的四张牌的“副牌”,可以用来修改得分。
排行榜
截至2015年6月17日格林尼治标准时间16:40
编辑:Neptor被取消作弊资格。分数将尽快修复。
- NEPTR:〜424,000
- 辛辛那提小子(Cincinnati Kid):〜422,000
- 内斯特:〜408,000
- 奥斯丁力量:〜405,000
- 巴斯蒂拉:〜248,000
- 愚蠢的谨慎玩家:〜107,000
- 傻大胆的玩家:〜87,000
模拟帕扎克杯季后赛
将尽快更新。
第一回合-内斯特vs巴斯蒂拉&奥斯汀·鲍尔斯vs辛辛那提小子
第二轮-内斯特vs奥斯汀·鲍尔斯&辛辛那提小子vs巴斯蒂拉
机械学
游戏是依次进行的。从主(房屋)副牌中拿出一张牌。娱乐场甲板可容纳40张牌:1到10的四份副本。发牌后,他们可以选择结束自己的回合并在下一回合接收新牌,保持其当前值,或者从侧甲板和站在新的价值上。玩家一决定他们想做什么之后,玩家二重复该过程。
一旦两个玩家都走了,手就被评估了。如果一个玩家被炸开了(超过20个),则另一名玩家将获胜,前提是他们也没有被炸开。如果一位玩家选择站立,而另一位玩家的手牌价值更高,则另一位玩家将获胜。如果两个玩家都选择站立,则手牌价值较高的玩家将获胜。如果出现平局,则任何玩家都不会赢。
如果不满足获胜条件,比赛将重复进行。如果玩家选择结束回合,则他们将收到一张新卡并且可以做出新选择。如果他们选择站起来,或者从侧甲板打出了一张纸牌,他们将不会获得新的纸牌,也无法选择新的动作。
这样继续游戏,直到一名玩家赢得比赛。游戏以五组中的三组中的最佳状态进行。
为什么选择“简单” Pazaak?
在《星球大战》世界中,Pazaak参与赌博。虽然包含这样的系统会为游戏增加更多的动态性,但是对于首次参加KoTH比赛来说,这有点复杂。
“真实” Pazaak侧甲板也由玩家自己提供,可以包括许多不同的牌选择,例如负牌,正负牌,翻牌,双牌和决胜局牌。这些也将使游戏变得更有趣,但是将需要一个赌博界面,并且将需要更多的竞争对手。在这个简单的Pazaak游戏中,每个玩家都拥有相同的侧甲板:从1到5的两个副本,从中随机选择四个。
根据游戏的成功程度,我可能会努力开发一个高级版本,在该版本中可以进行赌博和自定义侧甲板。
玩家们
该游戏的玩家将是您设计的机器人。每个漫游器都需要扩展Player类,导入Mechanics包并驻留在player包中,如下所示:
package Players;
import java.util.Collection;
import Mechanics.*;
public class DemoPlayer extends Player {
public DemoPlayer() {
name = "Your Name Here";
}
public void getResponse(int wins[], boolean isPlayerOne,
Collection<Card> yourHand, Collection<Card> opponentHand,
Collection<Card> yourSideDeck, int opponentSideDeckCount,
Action opponentAction, boolean opponentDidPlay) {
action = null;
cardToPlay = null;
}
}
每次回合,控制器都会为您的机器人调用getResponse方法,除非您的机器人先前表示希望站立。getResponse方法可以设置两个属性:动作和要玩的牌。动作可以是以下之一:
- 结束:结束回合并在下一回合绘制一张新牌。
- STAND:保持当前手值。不会抽卡。
- 播放:从侧甲板播放一张牌,然后站立。
如果您将操作设置为PLAY,则玩牌显然很重要。它需要一个Card对象。如果您传递给它的Card对象在侧甲板中不存在,则您的机器人将改为STAND。
机器人每转会收到的参数为:
- 包含每个玩家获胜者的数组。wins [0]是玩家1的,wins 1是玩家2的(int [])
- 您的机器人是否是玩家一号(布尔值)
- 到目前为止已收集到的卡片的集合(集合)
- 到目前为止已经收集了您的对手的卡牌集合(集合)
- 侧甲板中的卡片集合(集合)
- 对手方副牌剩余的纸牌数(整数)
- 对手最后一次做出的动作(动作)[注意:这将是END或STAND,从不播放]
- 对手是否打过牌(布尔值)
机器人规则
您的机器人只能使用通过getResponse方法提供给他们的信息。他们不应尝试与任何其他班级互动。他们可能会写入单个文件来存储各轮之间的数据。它们可以根据需要具有任何自定义方法,属性等。它们应该在合理的时间内运行(如果程序运行实际上不是瞬时的,那么我会发现有些问题)。
如果您在代码中发现了某种形式的利用,您将因“投入工作”而获得回报。如果我首先注意到该漏洞,将对其进行修复,您将不会获得任何回报。
演示版
控制器不需要编写机器人,因为本文已经解释了所有内容。但是,如果您想测试,可以在这里找到:https : //github.com/PhantomJedi759/simplepazaak 包括两个基本的机器人。双方都不应对“智能”对手保持一致,因为他们只能在END和STAND之间进行选择。这是他们所做的一个示例运行:
New Game!
The standings are 0 to 0
Dumb Bold Player's Hand: []
Dumb Bold Player's new Hand: [2]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: []
Dumb Cautious Player's new Hand: [8]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2]
Dumb Bold Player's new Hand: [2, 8]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8]
Dumb Cautious Player's new Hand: [8, 3]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2, 8]
Dumb Bold Player's new Hand: [2, 8, 7]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8, 3]
Dumb Cautious Player's new Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player's Hand: [2, 8, 7]
Dumb Bold Player's new Hand: [2, 8, 7, 6]
Dumb Bold Player has chosen to STAND
Dumb Cautious Player's Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player has bombed out! Dumb Cautious Player wins!
因为这些机器人完全依靠抽签的运气,所以他们的输赢率可能会大不相同。看看技能如何对抗游戏的运气将会很有趣。
这应该是您需要的一切!去建立一些机器人!
澄清规则
主甲板有40张牌:4x1-10每手开始时会重新洗牌。
玩家的侧甲板有4张牌,从2x1-5中随机选择。侧甲板在双手之间保持。
在游戏中玩牌时,最好的五分之三。根据赢得的总局数,然后再根据总手数,对机器人进行评分。
处理匹配后,每个玩家将不得不与其他每个玩家进行100,000场比赛。
在Pazaak杯中,淘汰赛类型的回合将缩小最佳Pazaak机器人的身份。每对机器人将在100,000场比赛中,七场比赛中最好的四场比赛。赢得四分的人将上升到下一个对手的阶梯上,而失败者将继续争夺排名。这种游戏方式是最公平的,因为机器人无法“赢得农场”某些对手,以弥补对其他人缺乏能力。Pazaak杯赛将于7月3日(星期五)举行,条件是至少要提交8个机器人程序。获胜者将获得“正确答案”状态和Advanced Pazaak的开始奖金,希望能在Pazaak杯举行的同一时间准备好。