Python之面向对象编程设计案例

 根据业务需求抽象出你要定义的类,根据业务需求分析每个对象的职责,然后在类中定义职责所对应的函数或者方法。

eg:    每次游戏有两个人,每人三颗骰子(dice),估计点数的个数。
         分析: 有多少个类?每个类中有多少个对象?

# -*- coding: utf-8 -*-
import random

class Game:

    def __init__(self,player1,player2):
        self.player1 = player1
        self.player2 = player2
        print("游戏初始化完成,可以开始")

    def start_game(self):
        self.player1.cast()
        self.player2.cast()
        print(self.player1)
        print(self.player2)


    def get_win(self):
        self.player1.guess_dice()
        self.player2.guess_dice()
        # 判断谁赢了

class Player:

    def __init__(self,name,sex,*dice):
        self.name = name
        self.sex = sex
        self.dices = dice # 表示该玩家拥有的骰子列表(元祖)

    def __str__(self):
        play_dice_count_list = [self.dices[0].count,
                                self.dices[1].count,
                                self.dices[2].count]
        return "姓名为:%s,点数信息为:%s" % (self.name, str(play_dice_count_list))

    # 玩家抛骰子
    def cast(self):
        for dice in self.dices:
            dice.move()

    def guess_dice(self):
        return (4,2)

class Dice:

    def __init__(self):
        self.count = 0

    def move(self):
        self.count = random.randint(1,6)  # 左闭右闭型

d1=Dice()
d2=Dice()
d3=Dice()
d4=Dice()
d5=Dice()
d6=Dice()

p1 = Player("player1","男",d1,d2,d3)
p2 = Player("player2","女",d4,d5,d6)

for i in range(1,6):
    print("第%d次游戏的情况 -------"%i)
    game=Game(p1,p2)
    game.start_game()

猜你喜欢

转载自blog.csdn.net/baidu_29571167/article/details/83025414