學習面向對象之後,練習使用面向對象思想,實現代碼
# -*- coding: utf-8 -*-
# @File : 面向對象小遊戲.py
# 描述 : 人狗大戰
# @Time : 2020/6/3 16:27
# @Author : 崔
# @versions : 1.0
from random import randint
class Person:
def __init__(self, name, aggressivity, hp): # 姓名 攻擊力 生命值
self.name = name
self.aggressivity = aggressivity
self.hp = hp
def attack(self, dog):
atk = randint(0, self.aggressivity)
if dog.hp > atk:
dog.hp -= atk
print(f"{self.name}打了{dog.name}一下")
else:
dog.hp -= atk
print(f"{dog.name}死翹翹了")
class Dog:
def __init__(self, name, aggressivity, hp):
self.name = name
self.aggressivity = aggressivity
self.hp = hp
def attack(self, person):
atk = randint(0, self.aggressivity) # 隨機的攻擊力
if person.hp > atk:
person.hp -= atk
print(f"{self.name}咬了{person.name}一下")
else:
person.hp -= atk
print(f"{person.name}被咬死了")
person = [Person("張三", 9, 100), Person("李四", 9, 100), Person("王二", 9, 100)]
dogs = [Dog("豆豆", 20, 60), Dog("貝貝", 20, 90)]
while len(person) > 0 and len(dogs) > 0:
person[randint(0, len(person) - 1)].attack(dogs[randint(0, len(dogs) - 1)])
for i in range(len(dogs) - 1, -1, -1):
if dogs[i].hp <= 0:
dogs.pop(i) # 將已死的狗從列表中刪除
if len(dogs) <= 0:
break
dogs[randint(0, len(dogs) - 1)].attack(person[randint(0, len(person) - 1)])
for i in range(len(person) - 1, -1, -1):
if person[i].hp <= 0:
person.pop(i) # 將已死的人從列表中刪除
if len(person) > 0:
print("人獲得了勝利")
else:
print("狗獲得了勝利")
使用了隨機攻擊的方式,因此運行結果不一定相同