Python物件導向練習-烏龜吃魚

Python物件導向練習-烏龜吃魚

題目要求

首先放上題目要求:

遊戲程式設計:按以下要求定義一個烏龜類和魚類並嘗試編寫遊戲

假設遊戲場景為範圍(x,y)為0<=x<=10,0<=y<=10
遊戲生成1只烏龜和10條魚
它們的移動方向均隨機
烏龜的最大移動能力為2(它可以隨機選擇1還是2移動),魚兒的最大移動能力是1
當移動到場景邊緣,自動向反方向移動
烏龜初始化體力為100(上限)
烏龜每移動一次,體力消耗1
當烏龜和魚座標重疊,烏龜吃掉魚,烏龜體力增加20
魚暫不計算體力
當烏龜體力值為0(掛掉)或者魚兒的數量為0遊戲結束

場景圖

程式碼實現

import random
#烏龜類
class Turtle:
def __init__(self):
self.power=100 #體力
#烏龜座標
self.x=random.randint(0,10)
self.y=random.randint(0,10)
#烏龜移動的方法:移動方向均隨機 第四條
def move(self):
#計算移動後的新位置(只有四種可能)
new_x=self.x random.choice([1,2,-1,-2])
new_y=self.y random.choice([1,2,-1,-2])
#判斷移動後是否超出邊界
if new_x<0:
self.x=0-new_x
elif new_x>10:
self.x=10-(new_x-10)
else:
#不越界則移動烏龜的位置
self.x=new_x                
if new_y<0:
self.y=0-new_y
elif new_y>10:
self.y=10-(new_y-10)
else:
#不越界則移動烏龜的位置
self.y=new_y
self.power-=1 #烏龜每移動一次,體力消耗1           
def eat(self):
self.power =20 #烏龜吃掉魚,烏龜體力增加20
if self.power>100:
self.power=100 #烏龜體力100(上限)
#魚類
class Fish:
def __init__(self):
#魚座標
self.x=random.randint(0,10)
self.y=random.randint(0,10)             
def move(self):
#計算移動後的新位置(只有四種可能)
new_x=self.x random.choice([1,-1])
new_y=self.y random.choice([1,-1])
#判斷移動後是否超出邊界
if new_x<0:
self.x=0-new_x
elif new_x>10:
self.x=10-(new_x-10)
else:
#不越界則移動魚的位置
self.x=new_x                
if new_y<0:
self.y=0-new_y
elif new_y>10:
self.y=10-(new_y-10)
else:
#不越界則移動魚的位置
self.y=new_y       
#開始測試資料
tur=Turtle() #生成1只烏龜
fish=[] #生成10條魚
for item in range(10):
fish.append(Fish()) #把生成的魚放到魚缸裡
#判斷遊戲是否結束:當烏龜體力值為0(掛掉)或者魚兒的數量為0遊戲結束  
if tur.power<0 or len(fish)==0:
print("Game Over ~")
#遊戲開始
#首先烏龜邁出第一步
# print(tur.x,tur.y) #烏龜移動前   
tur.move()
# print(tur.x,tur.y) #烏龜移動後
for item in fish:
item.move()
if item.x==tur.x and item.y==tur.y:
tur.eat()
fish.remove(item)
print("死了一隻魚")
print("烏龜最新體力值為 %d"%tur.power)