题目:趣味百题之斗地主
扑克牌是一种非常大众化的游戏,在计算机中有很多与扑克牌有关的游戏。例如,在Windows操作系统下自带的纸牌、红心大战等。在扑克牌类的游戏中,往往都需要执行洗牌操作,就是将一副牌完全打乱,使其排列没有规律。
要求:
1.54张扑克牌发个3个玩家,农民17张,地主20张。
2.自动生成一幅扑克牌组;洗牌;发牌到玩家手中;将玩家手中扑克牌按花色大小整理好。**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
'''
趣味百题-发扑克牌-斗地主
请编程实现发扑克牌
Version: 0.1
Author: jasn
Date: 2020-01-01
主要知识点:random的用法,类的定义和调用
主要功能点:用Python的类实现斗地主的初始化、洗牌、发牌、抢地主、理牌、花色对应。代码如下
'''
import random
class doudizhu:
#定义54张牌
def __init__( self ):
self .a = []
for i in range ( 54 ):
self .a.append(i)
#洗牌
def xipai( self ):
random.shuffle( self .a) #洗牌
n = random.randint( 1 , 54 )
b = self .a[:n] # 从n的位置切牌
c = self .a[n:]
self .a = b + c
#发牌
def fapai( self ):
self .user1 = self .a[ 0 : - 3 : 3 ] #玩家1,获得牌的顺序为 0,3,6,9...
self .user2 = self .a[ 1 : - 3 : 3 ] #玩家2,获得牌的顺序为 1,4,7,10...
self .user3 = self .a[ 2 : - 3 : 3 ] #玩家3,获得牌的顺序为 2,5,8,11...
self .user4 = self .a[ - 3 :] #底牌 ,顺序为51,52,53
#抢地主
def qiangdizhu( self ):
i = random.randint( 1 , 3 )
self .dizhu = i #定义一个地主的实例
if i = = 1 :
self .user1 + = self .user4
if i = = 2 :
self .user2 + = self .user4
if i = = 3 :
self .user3 + = self .user4
#码牌
def mapai( self ):
self .user1.sort(reverse = True ) ##从小到大码牌
self .user2.sort(reverse = True )
self .user3.sort(reverse = True )
#牌序和花色一一对应
def yingshe( self ):
huase = [( 0 , '方片3' ), ( 1 , '梅花3' ), ( 2 , '红桃3' ), ( 3 , '黑桃3' ),
( 4 , '方片4' ), ( 5 , '梅花4' ), ( 6 , '红桃4' ), ( 7 , '黑桃4' ),
( 8 , '方片5' ), ( 9 , '梅花5' ), ( 10 , '红桃5' ), ( 11 , '黑桃5' ),
( 12 , '方片6' ), ( 13 , '梅花6' ), ( 14 , '红桃6' ), ( 15 , '黑桃6' ),
( 16 , '方片7' ), ( 17 , '梅花7' ), ( 18 , '红桃7' ), ( 19 , '黑桃7' ),
( 20 , '方片8' ), ( 21 , '梅花8' ), ( 22 , '红桃8' ), ( 23 , '黑桃8' ),
( 24 , '方片9' ), ( 25 , '梅花9' ), ( 26 , '红桃9' ), ( 27 , '黑桃9' ),
( 28 , '方片10' ), ( 29 , '梅花10' ), ( 30 , '红桃10' ), ( 31 , '黑桃10' ),
( 32 , '方片J' ), ( 33 , '梅花J' ), ( 34 , '红桃J' ), ( 35 , '黑桃J' ),
( 36 , '方片Q' ), ( 37 , '梅花Q' ), ( 38 , '红桃Q' ), ( 39 , '黑桃Q' ),
( 40 , '方片K' ), ( 41 , '梅花K' ), ( 42 , '红桃K' ), ( 43 , '黑桃K' ),
( 44 , '方片A' ), ( 45 , '梅花A' ), ( 46 , '红桃A' ), ( 47 , '黑桃A' ),
( 48 , '方片2' ), ( 49 , '梅花2' ), ( 50 , '红桃2' ), ( 51 , '黑桃2' ),
( 52 , 'BlackJoker' ), ( 53 , 'RedJoker' )]
zdpai = dict (huase)
paiuser1 = ''
for i in range ( len ( self .user1)):
paiuser1 + = zdpai[ self .user1[i]] + ' ' #以字符串的形式将牌储存起来
paiuser2 = ''
for i in range ( len ( self .user2)):
paiuser2 + = zdpai[ self .user2[i]] + ' '
paiuser3 = ''
for i in range ( len ( self .user3)):
paiuser3 + = zdpai[ self .user3[i]] + ' '
paiuser4 = ''
for i in range ( len ( self .user4)):
paiuser4 + = zdpai[ self .user4[i]] + ' '
self .user1 = paiuser1 #把花色对应好的牌的序列重新赋给三个玩家的实例属性
self .user2 = paiuser2
self .user3 = paiuser3
self .user4 = paiuser4
if __name__ = = '__main__' :
Player = doudizhu() #将类辅助给playes,方便调用
Player.xipai()
Player.fapai()
Player.qiangdizhu()
Player.mapai()
Player.yingshe()
print ( '本局地主是:玩家{}' . format (Player.dizhu))
print ( '底牌:' ,Player.user4)
print ( '玩家一:' ,Player.user1)
print ( '玩家二:' ,Player.user2)
print ( '玩家三:' ,Player.user3)
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_42444693/article/details/103849958