pygame遊戲程式設計:按以下要求定義乙個烏龜類和魚類並嘗試編寫遊戲
假設遊戲場景為範圍(x,y)為0<=x<=10,0<=y<=10
遊戲生成1只烏龜和10條魚
它們的移動方向均隨機
烏龜的最大移動能力為2(它可以隨機選擇1還是2移動),魚兒的最大移動能力是1
當移動到場景邊緣,自動向反方向移動
烏龜初始化體力為100(上限)
烏龜每移動一次,體力消耗1
當烏龜和魚座標重疊,烏龜吃掉魚,烏龜體力增加20
魚暫不計算體力
當烏龜體力值為0(掛掉)或者魚兒的數量為0遊戲結束
import random
class turtle(object):
# 建構函式什麼時候執行? =---*****建立物件時執行
def __init__(self): # self指的是例項化的物件;
# 烏龜的屬性: x,y軸座標和體力值
# 烏龜的x軸, 範圍1,10
self.x = random.randint(1, 10)
self.y = random.randint(1, 10)
# 烏龜初始化體力為100
self.power = 100
# 類的方法:
def move(self):
# 烏龜的最大移動能力為2,[-2, -1, 0, 1, 2]
move_skill = [-2, -1, 0, 1, 2]
# 計算出烏龜的新座標(10, 12)
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)
# 烏龜每移動一次,體力消耗1
self.power -= 1
def is_vaild(self, value):
"""判斷傳進來的x軸座標或者y軸座標是否合法?
1). 如果合法, 直接返回傳進來的值;
2). value<=0; *****> abs(value);
3). value > 10 *****=> 10-(value-10);
:param value:
:return:
"""if 1 <= value <= 10:
return value
elif value < 1:
return abs(value)
else:
return 10 - (value - 10)
def eat(self):
"""當烏龜和魚座標重疊,烏龜吃掉魚,烏龜體力增加20
:return:
"""self.power += 20
class fish(object):
# 建構函式什麼時候執行? =---*****建立物件時執行
def __init__(self):
# 魚的屬性: x, y軸座標
# 魚的x軸, 範圍1,10
self.x = random.randint(1, 10)
self.y = random.randint(1, 10)
# 類的方法:
def move(self):
# 魚的最大移動能力為1,[ -1, 0, 1]
move_skill = [-1, 0, 1]
# 計算出魚的新座標(10, 12)
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):
"""判斷傳進來的x軸座標或者y軸座標是否合法?
1). 如果合法, 直接返回傳進來的值;
2). value<=0; *****> abs(value);
3). value > 10 *****=> 10-(value-10);
:param value:
:return:
"""if 1 <= value <= 10:
return value
elif value < 1:
return abs(value)
else:
return 10 - (value - 10)
def main():
# 建立乙個烏龜;
turtle = turtle()
print(turtle.x, turtle.y)
# for迴圈建立10個魚
# fishs =
# for i in range(10):
# 建立10個魚物件;
fishs = [fish() for i in range(10)]
# 遊戲開始
while true:
# 判斷遊戲是否結束?( 當烏龜體力值為0(掛掉)或者魚兒的數量為0遊戲結束)
if turtle.power <= 0:
print("烏龜沒有體力了, game over......")
break
elif len(fishs) == 0:
print("魚被吃光, game over......")
break
else:
# 遊戲沒有結束. 烏龜和魚隨機移動
flag=0
turtle.move()
# 魚移動
for fish in fishs:
fish.move()
# 判斷魚是否被烏龜吃掉?
# 當烏龜和魚座標重疊,烏龜吃掉魚,烏龜體力增加20
if turtle.x == fish.x and turtle.y == fish.y:
flag=1
turtle.eat()
# 刪除被烏龜吃掉的魚
fishs.remove(fish)
print("魚被烏龜吃掉, 還剩%d條魚....." % (len(fishs)))
print("烏龜的最新體力為%s" % (turtle.power))
# 烏龜跟10個魚都比較結束後, 沒有發現吃到乙個魚, 才執行, 跟for是一塊的;
if flag==0 :else
print("烏龜沒有吃到魚,最新體力為%s" % (turtle.power))
# pygame
if __name__ == "__main__":
print("遊戲開始".center(30, "*"))
main()
python學習筆記 烏龜吃魚小遊戲
遊戲規則 1.遊戲背景為10 10 2.遊戲會自動生成1個烏龜和10條魚 3.它們移動方向隨機 4.烏龜最大移動能力為2 2,1,1,2 5.魚最大移動能力為1 1,1 6.當移動到場景邊界,自動反方向移動 7.烏龜初始化體能為100 200為上限 每移動一次消耗體能1 8.當烏龜和魚的座標重合,代...
魚c筆記 Python物件導向程式設計
ooa 物件導向分析 oop 物件導向程式設計 ood 物件導向設計 關於self python的self相當於c 的this指標。由同乙個類可以生成無數的物件,當乙個物件的方法被呼叫的時候,物件會將自身作為第乙個引數傳遞給self引數,接受到這個self引數時,python就知道是哪個物件在呼叫方...
python 物件導向 python是物件導向嗎
python是一種物件導向 解釋型計算機程式語言,由guido van rossum於1989年底發明,第乙個公開發行版發行於1991年,python 源 同樣遵循 gpl gnu general public license 協議。python語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...