• 技术文章 >Python技术 >Python基础教程

    怎么用python开发游戏?

    宋雪维宋雪维2020-11-25 17:46:22原创2357

    下载.jpg

    相信大家都玩过扑克牌,这个游戏休闲娱乐是很火爆的游戏了,一副扑克牌可以玩出多种花样,那你知道扑克游戏网站是怎么发牌的吗?想起小编刚开始打算学习python的时候,有很大一部分是想自己开发一些游戏,今天小编就带大家以发牌游戏为例,用python开发一款游戏。

    游戏介绍:四名牌手打牌,电脑随机將52张牌(不合大、小王)发给四名牌手,并在屏幕上显示每位牌手的牌。

    代码:

    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

    class Card():

      """ A playing card. """

      RANKS=["A","2","3","4","5","6","7","8","9","10","J","Q","K"] #牌面数字1-13

      SUITS=["梅","方","红","黑"]

    #梅为梅花,方为方钻,红为红心,黑为黑桃

      

      def __init__(self,rank,suit,face_up=True):

        self.rank=rank       #指的是牌面数字1-13

        self.suit=suit       #suit指的是花色

        self.is_face_up=face_up  #是否显示牌正面,True为正面,False为牌背面

      

      def __str__(self): #print()

        if self.is_face_up:

          rep=self.suit+self.rank #+" "+str(self.pic_order())

        else:

          rep="XX"

        return rep

      

      def flip(self):        #翻牌方法

        self.is_face_up=not self.is_face_up

      

      def pic_order(self):      #牌的顺序号

        if self.rank=="A":

          FaceNum=1

        elif self.rank=="J":

          FaceNum=11

        elif self.rank=="Q":

          FaceNum=12

        elif self.rank=="K":

          FaceNum=13

        else:

          FaceNum=int(self.rank)

        if self.suit=="梅":

          Suit=1

        elif self.suit=="方":

          Suit=2

        elif self.suit=="红":

          Suit=3

        else:

          Suit=4

        return (Suit-1)*13+FaceNum

    class Hand( ):

      """ A hand of playing cards. """

      def __init__(self):

        self.cards=[]

      def __str__(self):

        if self.cards:

          rep=""

          for card in self.cards:

            rep+=str(card)+"\t"

        else:

          rep="无牌"

        return rep

      def clear(self):

        self.cards=[]

      def add(self,card):

        self.cards.append(card)

      def give(self,card,other_hand):

        self.cards.remove(card)

        other_hand.add(card)

    class Poke(Hand):

      """ A deck of playing cards. """

      def populate(self):     #生成一副牌

        for suit in Card.SUITS:

          for rank in Card.RANKS:

            self.add(Card(rank,suit))

      def shuffle(self):      #洗牌

        import random

        random.shuffle(self.cards) #打乱牌的顺序

      def deal(self,hands,per_hand=13):

        for rounds in range(per_hand):

          for hand in hands:

      

            top_card=self.cards[0]

            self.cards.remove(top_card)

            hand.add(top_card)

    if __name__=="__main__":

      print("This is a module with classed for playing cards.")

      #四个玩家

      players=[Hand(),Hand(),Hand(),Hand()]

      poke1=Poke()

      poke1.populate()      #生成一副牌

      poke1.shuffle()       #洗牌

      poke1.deal(players,13)   #发给玩家每人13张

      #显示四位牌手的牌

      n=1

      for hand in players:

        print("牌手",n,end=":")

        print(hand)

        n=n+1

      input("\nPress the enter key to exit.")

    到了这一步,一款发牌游戏基本就算完成了,其实还是可以添加一点游戏背景音乐的,感兴趣的小伙伴们可以尝试下哦~更多python学习推荐:python学习网。





    专题推荐:python游戏
    上一篇:python返回函数和返回值的区别分析 下一篇:python中的format 函数是什么?如何使用?

    相关文章推荐

    • python游戏编程讲解之凯撒密码• python Helium库怎么实现Web自动化?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网