题目:二十一点游戏是玩家要取得比庄家(电脑)更大的点数总和,但点数超过二十一点即为输牌。(不要大王、小王)A算1点,J、Q、K算10点,其余按牌面值计点数。为简化起见,游戏有两方,一方为Dealer(庄家)和一个方Player(玩家),都发明牌, Dealer(庄家)要牌过程由程序自动实现。
游戏能够判断玩家输赢。详细规则: (1)开始时每人发两张牌,凡点数不足二十一点,可选择继续要牌。 (2)两方轮流要牌,假设Player(玩家)先要牌。电脑要牌原则是不超过17点则继续要牌。 (3)两方都不要牌后,比点数大小,判断输赢。并显示两方牌手的牌。 (4)学生可适当增加功能。
第一个函数,判断列表值是否爆点
def Check(lists):
sum = 0
for lis in lists:
sum += lis
if sum > 21:
return False
else:
return True
第二模块,返回列表各项之和
def Sum(lists):
sum = 0
for i in lists:
sum += i
return sum
第三模块,主体。
import random
Dealer = []
Player = []
for i in range(2):
Dealer.append(random.randint(1,10))
Player.append(random.randint(1,10))
for i in range(3):
print("您的手牌为:")
print(Player)
yn = input('是否继续要牌')
if yn == '是' :
Player.append(random.randint(1,10))
if Check(Player):
Dealer.append(random.randint(1,10))
if Check(Dealer):
print('庄家要牌!')
else:
print("你赢了!您得手牌为:")
print(Player)
print("庄家爆点,手牌为:")
print(Dealer)
break
else:
print("你输了!您得手牌为:")
print(Player)
print("庄家手牌为:")
print(Dealer)
break
else:
while 1 :
sum = Sum(Dealer)
if sum < 17:
print("庄家继续要牌:")
Dealer.append(random.randint(1,10))
if Check(Dealer):
print("庄家手牌为:")
print(Dealer)
else:
print("你赢了!您得手牌为:")
print(Player)
print("庄家爆点,手牌为:")
print(Dealer)
break
else:
if Check(Dealer):
PlayerSum = Sum(Player)
DealerSum = Sum(Dealer)
if PlayerSum > DealerSum:
print("你赢了!您得手牌为:")
print(Player)
print("庄家手牌为:")
print(Dealer)
break
else:
print("你输了!您得手牌为:")
print(Player)
print("庄家手牌为:")
print(Dealer)
break
else:
print("你赢了!您得手牌为:")
print(Player)
print("庄家爆点,手牌为:")
print(Dealer)
break
break
|