Python练习:自定义类
题目1
请编写一个文字游戏程序
玩家扮演 一位领主,要去 都城 参选 国王。 但是路途上有7座森林,每座森林里面可能会碰到一个妖怪: 鹰妖 和 狼妖。
所以你需要雇佣战士对付它们,可以雇佣 弓箭兵 或者 斧头兵
弓箭兵、 斧头兵、 狼妖、鹰妖 具有如下特征
游戏运行流程如下:
- 产生森林和妖怪
程序随机为7座森林分别产生 鹰妖或者狼妖。
然后在屏幕上打印出7座森林里面的妖怪 分别是什么。
注意,只显示10秒钟就会消失(这就是游戏考验玩家的记忆力,暂时可以用 打印20个换行 翻屏实现)。
- 雇佣战士
玩家有 1000
灵石,让玩家根据自己记忆的 妖怪种类和数量,选择 雇佣 多少个 弓箭兵 和 斧头兵。
每雇佣一个士兵,给他起一个名字。
- 然后开始征途,要通过7座森林,系统不会提示你森林里面是什么妖怪(玩家凭记忆回想),每座森林只能派出一个战士 去 消灭里面的 妖怪, 让玩家选择派出哪个战士。
如果 战士 生命值 损耗完,这个战士就死亡了,如果战士死亡,就得派出另外一名战士杀死妖怪。
每次通过森林后,玩家可以选择是否用灵石给 战士补养;
如果选择补养,消耗1个灵石可以为生命值加1,但是不可能超过最大生命值
这个游戏最后,一定要通过7座森林,才算通关,并且系统显示玩家剩余灵石。
最后 剩余灵石 越多越好,越有机会当选国王。
补充练习
VIP实战班学员请联系老师获取补充练习,并做阶段学习交流
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
题目1-答案
注意:本题只给出部分参考代码,请读者自行完成后面的部分。
VIP实战班学员
联系老师提交作业,并且和老师交流答题思路。
from random import randint
import time,sys
# 玩家
class Player:
def __init__(self,stoneNumber):
self.stoneNumber = stoneNumber # 灵石数量
self.warriors = {} # 拥有的战士,包括弓箭兵和斧头兵
# 战士
class Warrior:
# 初始化参数是生命值
def __init__(self, strength):
self.strength = strength
# 用灵石疗伤
def healing(self, stoneCount):
# 如果已经到达最大生命值,灵石不起作用,浪费了
if self.strength == self.maxStrength:
return
self.strength += stoneCount
# 不能超过最大生命值
if self.strength > self.maxStrength:
self.strength = self.maxStrength
# 弓箭兵 是 战士的子类
class Archer(Warrior):
# 种类名称
typeName = '弓箭兵'
# 雇佣价 100灵石,属于静态属性
price = 100
# 最大生命值 ,属于静态属性
maxStrength = 100
# 初始化参数是生命值, 名字
def __init__(self, name, strength = maxStrength):
Warrior.__init__(self, strength)
self.name = name
# 和妖怪战斗
def fightWithMonster(self,monster):
if monster.typeName== '鹰妖':
self.strength -= 20
elif monster.typeName== '狼妖':
self.strength -= 80
else:
print('未知类型的妖怪!!!')
# 斧头兵 是 战士的子类
class Axeman(Warrior):
# 种类名称
typeName = '斧头兵'
# 雇佣价 120灵石
price = 120
# 最大生命值
maxStrength = 120
# 初始化参数是生命值, 名字
def __init__(self, name, strength = maxStrength):
Warrior.__init__(self, strength)
self.name = name
# 和妖怪战斗
def fightWithMonster(self,monster):
if monster.typeName== '鹰妖':
self.strength -= 80
elif monster.typeName== '狼妖':
self.strength -= 20
else:
print('未知类型的妖怪!!!')
# 鹰妖
class Eagle():
typeName = '鹰妖'
# 狼妖
class Wolf():
typeName = '狼妖'
# 森林
class Forest():
def __init__(self,monster):
# 该森林里面的妖怪
self.monster = monster
print('''
***************************************
**** 游戏开始 ****
***************************************
'''
)
# 森林数量
forest_num = 7
# 森林 列表
forestList = []
# 为每座森林随机产生 鹰妖或者 狼妖
notification = '前方森林里的妖怪是:' # 显示在屏幕上的内容
for i in range(forest_num):
typeName = randint(0,1)
if typeName == 0:
forestList.append( Forest(Eagle()) )
else:
forestList.append( Forest(Wolf()) )
notification += \
f'第{i+1}座森林里面是 {forestList[i].monster.typeName} '
# 显示 妖怪信息
print(notification,end='')