---
tags: python, 物件導向
---
# 貓抓老鼠
```python=
import random
import time
#===============主類別================#
class Animal(object):
"""
將貓和老鼠的共同特性抽象出來的類
"""
def __init__(self):
self.x = random.randint(1,10)
self.y = random.randint(1,10)
def move(self,move_skill):
new_x = self.x + random.choice(move_skill)
new_y = self.y + random.choice(move_skill)
self.x = self.is_vaild(new_x)
self.y = self.is_vaild(new_y)
def is_vaild(self,value):
if 1 <= value <= 10:
return value
elif value<1:
return abs(value)
elif value >10:
return 10-(value-10)
#==================貓類別=============#
class Cat(Animal):
def __init__(self):
super(Cat,self).__init__()
self.power=100
def move(self,move_skill= (-2,-1,0,1,2)):
super(Cat,self).move(move_skill)
self.power -= 1
def eat(self):
self.power += 20
# ===============老鼠類別 =============#
class Mouse(Animal):
def move(self,move_skill=(-1,0,1)):
super(Mouse,self).move(move_skill)
#=========================主程式=======================#
def main():
cat = Cat()
mouses = [Mouse() for i in range(10)]
while True:
if cat.power <= 0:
print('貓沒有體力了')
break
elif len(mouses) == 0:
print('老鼠被吃光了!')
break
else:
cat.move()
for mouse in mouses:
mouse.move()
if cat.x == mouse.x and cat.y == mouse.y:
cat.eat()
mouses.remove(mouse)
print('老鼠被貓吃了!')
print('貓當前體力值為:%d' %(cat.power))
else:
print('貓沒有吃到老鼠,貓體力值:%d' %(cat.power))
time.sleep(0.01)
#===================執行該程式===================#
if __name__ == '__main__':
print('遊戲開始!'.center(50,'*'))
main()
```