类和对象的应用及简易版骰子游戏

题外话:

       在今天之前,我一直在用面向过程的思维去发现和解决问题,现在的面向对象的这种思维给了我很大的触动。上午还在和朋友在聊一个人自学遇到的问题以及困惑,没有老师带着学,也没有人去监督你学,所有的资料内容知识点都需要自己去摸索,一步一步,一点一点。没人会提醒你下一步会遇到怎样的坑,更没人会告诉你什么叫面向对象,所有的一切可能出现的结果都得靠自己的实践,然后从实践中分析出来为何会有如此的输出。遇到不懂的就百度,百度解决不了的就给大神留言,有时候,别人可以很轻松的看出你钻进牛角尖的问题。虽然一路磕磕绊绊,不过我不认输。

接下来谈谈面向对象最重要的两点:对象和类 (部分内容来自百度百科)

1、对象

对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

对象的状态和行为。

对象具有状态,一个对象用数据值来描述它的状态。

对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中

2、类

具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。

类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。

类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

接下是类和对象在筛子游戏中的应用:

#骰子游戏 每次两个人 每人三颗骰子 (dice) 估计点数的个数
#分析:有多少类 ? 每个类有多少个对象?
#3个类 游戏本身,骰子,玩家
#根据业务需求抽象出类 明白每个对象的职责
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.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 cast(self):
		for dice in self.dices:#dice临时变量  self.dices是对象的属性
			dice.move()
		
	
	def guess_dice(self):
		return (4,2)
		
	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))
		
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()

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

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

用随机数random模拟筛子的点数

猜你喜欢

转载自blog.csdn.net/qq_35208583/article/details/81908236