照例每日一撸:
今天主要是用python实现摇色子的简单应用,养成面向对象的思维。
class Game: #游戏作为一个类
def __init__(self,player1,player2):
self.player1 = player1
self.player2 = player2
print("游戏开始")
def start(self):
self.player1.cast()
self.player2.cast()
print(self.player1) #调用下方__str__()方法实现打印信息
print(self.player2)
class Player: #玩家也是一个类
def __init__(self,name,sex,*dice):
self.name = name
self.sex = sex
self.dices = dice
def cast(self): #一个抛色子的方法
for dice in self.dices: #由于最后存储在一个元祖里,所以可以用循环遍历
dice.move()
def __str__(self): #一个可以实现print就能把内存地址,打印为可读的魔术方法
play_count_list = [self.dices[0].count,self.dices[1].count,self.dices[2].count]
return "姓名为%s,投掷筛子的点数为:%s"%(self.name,str(play_count_list)) #通过返回实现
def guess(self): #后期通过多线程实现
pass
class Dice: #筛子是另一个类
def __init__(self):
self.count = 0 #初始点数为0
def move(self): #运用随机数,给出一个(1,6)之间的数字,实现一个摇色子的方法
self.count = random.randint(1,6)
#6个筛子对象
d1 = Dice()
d2 = Dice()
d3 = Dice()
d4 = Dice()
d5 = Dice()
d6 = Dice()
#2个玩家
p1 = Player("马冬梅","女",d1,d2,d3)
p2 = Player("夏洛","男",d4,d5,d6)
#玩5次
for i in range(1,6):
print("第%s次游戏的情况如下:"%i)
game = Game(p1,p2)
game.start()
print
最终实现效果如下:
第1次游戏的情况如下:
游戏开始
姓名为马冬梅,投掷筛子的点数为:[6, 2, 1]
姓名为夏洛,投掷筛子的点数为:[2, 3, 6]
第2次游戏的情况如下:
游戏开始
姓名为马冬梅,投掷筛子的点数为:[1, 4, 3]
姓名为夏洛,投掷筛子的点数为:[5, 6, 2]
第3次游戏的情况如下:
游戏开始
姓名为马冬梅,投掷筛子的点数为:[2, 6, 3]
姓名为夏洛,投掷筛子的点数为:[3, 3, 1]
第4次游戏的情况如下:
游戏开始
姓名为马冬梅,投掷筛子的点数为:[6, 2, 5]
姓名为夏洛,投掷筛子的点数为:[3, 2, 6]
第5次游戏的情况如下:
游戏开始
姓名为马冬梅,投掷筛子的点数为:[3, 3, 5]
姓名为夏洛,投掷筛子的点数为:[5, 2, 6]