📅  最后修改于: 2023-12-03 15:12:57.327000             🧑  作者: Mango
黑杰克(Blackjack)是一款最广为人知的纸牌游戏之一,也称为21点(21 Points)。玩家与庄家比较点数大小,以21点为目标,若点数超过21点则称为爆了(Busted),若点数相等则为平局(Push),其它情况有胜有负。这款游戏起源于法国,发展至今已经有几个世纪的历史。
在黑杰克中,初始时庄家会发两张牌给玩家,玩家也可以通过要牌(Hit)来逐渐增加自己手中的牌,直到不要牌(Stand)或者爆了。庄家也可以要牌,但需要满足一定的规则。最终,比较双方的点数大小,点数更大的一方获胜。
点数大小的计算方法如下:
要想获胜还需要关注以下几点:
玩家如何要牌?
玩家如果认为手牌点数小,可以选择要牌,要到符合要求的点数为止。要牌不加超过点数21
庄家如何要牌?
如果庄家的手牌点数在17以上,那么他就必须停止要牌;否则,他就必须继续要牌。庄家爆了则玩家获胜。
其他规则
程序员可以用以下编程语言实现黑杰克游戏:
Python 代码示例:
import random
cardList = list(range(1, 11)) * 4 + [10] * 4 * 3
random.shuffle(cardList)
playerCards = [cardList.pop() for _ in range(2)]
dealerCards = [cardList.pop(), -1]
while True:
print(f'playerCards:{playerCards} sum:{sum(playerCards)}')
while input('Want another hit(Y/N)?') == 'Y':
playerCards.append(cardList.pop())
print(f'playerCards:{playerCards} sum:{sum(playerCards)}')
if sum(playerCards) >= 21:
break
if sum(playerCards) > 21:
print('Busted!')
elif sum(playerCards) == 21:
print('Blackjack!')
else:
while sum(dealerCards) < 17:
dealerCards.append(cardList.pop())
print(f'playerCards:{playerCards} sum:{sum(playerCards)}')
print(f'dealerCards:{dealerCards} sum:{sum(dealerCards)}')
if sum(dealerCards) > 21:
print('Dealer busted, player wins!')
elif sum(dealerCards) > sum(playerCards):
print('Dealer wins!')
elif sum(dealerCards) < sum(playerCards):
print('Player wins!')
else:
print('Push! No winner!')
if input('Play again(Y/N)?') == 'N':
break
返回的代码片段按照markdown标注如下:
```python
import random
#...