Python类和对象编写一个小游戏【含注释】

定义一个鱼类和龟类并编写游戏

  • 假设游戏场景为范围(x, y)为0<=x<=10,0<=y<=10
  • 游戏生成1只乌龟和10条鱼
  • 它们的移动方向均随机
  • 乌龟的最大移动能力是2(Ta可以随机选择1还是2移动),鱼儿的最大移动能力是1
  • 当移动到场景边缘,自动向反方向移动
  • 乌龟初始化体力为100(上限)
  • 乌龟每移动一次,体力消耗1
  • 当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20
  • 鱼暂不计算体力
import random as r

old_x=[0,10]
old_y=[0,10]
class Turtle:
    def __init__(self):
        #每定义一个都要前面用self识别
        self.power=100
        #初始位置随机,(注意调用randint前有r)

        #????疑问为什么是old_x[1],new_x[1]
        #####解答:本人脑瓜子抽了,看列表索引值1代表10
        self.x=r.randint(old_x[0],old_x[1])
        self.y=r.randint(old_y[0],old_y[1])
    def move(self):
        #乌龟是移动1或2,随机移动,因此用列表定义比产生随机数简单
        #choice()从一个列表,元组或字符串返回一个随机项
        new_x=self.x+r.choice([-1,-2,1,2])
        new_y=self.y+r.choice([1,2,-1,-2])
        #横向移动不超过边界
        #关于为什么将old_x[0]和old_x[10]做边框而不是数值做边框的思考:这个游戏是定义在列表所在的存储空间内的,单纯的数值与列表的数值不是同一个存储空间
        if new_x>old_x[1]:
            self.x=old_x[1]-(new_x-old_x[1])
        elif new_xold_y[1]:
            self.y=old_y[1]-(new_y-old_y[1])
        elif new_y100:
            self.power=100

#鱼的移动与乌龟大致类似了
class Fish:
    #class要小写
     def __init__(self):
        self.x=r.randint(old_x[0],old_x[1])
        self.y=r.randint(old_y[0],old_y[1])
     def move(self):
        new_x=self.x+r.choice([-1,1])
        new_y=self.y+r.choice([1,-1,])
        if new_x>old_x[1]:
            self.x=old_x[1]-(new_x-old_x[1])
        elif new_xold_y[1]:
            self.y=old_y[1]-(new_y-old_y[1])
        elif new_y

你可能感兴趣的:(Python,python)