1. 游戏编程:按以下要求定义一个乌龟类和鱼类并尝试编写游戏。

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

#我开始的代码——>怎么运行都是鱼儿被吃光了(呜呜呜 有没有大神帮我看看怎么回事)

import random


#创建乌龟类
class Tur:
      #属性 设置初始体力  以及初始坐标
      def __init__(self):
            self.power=100
            
            self.x=random.randint(0,10)
            self.y=random.randint(0,10)

      #上下左右四个方向的移动模块
      
      #向上移动 移动的同时 随机生成一步还是两步
      def move_up(self):
            distance=random.randint(1,2)
            if (self.y+distance)<=10 and (self.power-1)>=0:
                  self.y+=distance
                  self.x=self.x
                  self.power=self.power-1
                  return (self.x,self.y)
            else:
                  pass
      #向下移动
      def move_down(self):
            distance=random.randint(1,2)
            if (self.y-distance)>=0 and (self.power-1)>=0:
                  self.y-=distance
                  self.x=self.x
                  self.power=self.power-1
                  return (self.x,self.y)
            else:
                  pass
      #向左移动
      def move_left(self):
            distance=random.randint(1,2)
            if (self.x-distance)>=0 and (self.power-1)>=0:
                  self.x-=distance
                  self.y=self.y
                  self.power=self.power-1
                  return (self.x,self.y)
            else:
                  pass

      #向右移动
      def move_right(self):
            distance=random.randint(1,2)
            if (self.x+distance)<=10 and (self.power-1)>=0:
                  self.x+=distance
                  self.y=self.y
                  self.power=self.power-1
                  
                  return (self.x,self.y)
            else:
                  pass
      #定义随机移动函数
      def randomly(self):
            num=random.randint(1,4)
            
            if num==1:
                   self.move_up()
            elif num==2:
                  self.move_down()
            elif num==3:
                  self.move_left()
            else:
                  self.move_right()

      
      #建立吃鱼儿的函数
      def eat_fish(self):
            print('鱼儿被吃掉咯!\n')
            
            self.power+=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_up(self):
            if (self.y+1)<=10:
                  self.y+=1
                  self.x=self.x

                  return (self.x,self.y)
            else:
                  pass

      #向下移动
      def move_down(self):
            if (self.y-1)>=0:
                  self.y-=1
                  self.x=self.x

                  return (self.x,self.y)
            else:
                  pass
      #向左移动
      def move_left(self):
            if (self.x-1)>=0:
                  self.x-=1
                  self.y=self.y

                  return (self.x,self.y)
            else:
                  pass
      #向右移动
      def move_right(self):
            if (self.x+1)<=10:
                  self.x+=1
                  self.y=self.y

                  return (self.x,self.y)
            else:
                  pass

            
      #定义随机移动函数
      def randomly(self):
            num=random.randint(1,4)
            if num==1:
                   self.move_up()
            elif num==2:
                  self.move_down()
            elif num==3:
                  self.move_left()
            else:
                  self.move_right()

      
#建立对象 并游戏
def play_game():
      turtle=Tur()
      fish=[]
      
      for i in range(10):
            new_fish=Fish()
            fish.append(new_fish)
      
      count=10

      while True:
            if not turtle.power:
                  print('游戏结束,小污龟精力耗尽啦!')
                  break

            if count<=0:
                  print('游戏结束,鱼儿被吃光咯!')
                  break

            #小乌龟的位置
            pos=turtle.randomly()


            for each_fish in fish[:]:
                  if each_fish.randomly()==pos:
                        count-=1
                        turtle.eat_fish()
                        fish.remove(each_fish)

play_game()

#看完答案整合的代码 (其实跟参考答案差不多了咳咳)

import random


#创建乌龟类
class Tur:
      #属性 设置初始体力  以及初始坐标
      def __init__(self):
            self.power=100
            
            self.x=random.randint(0,10)
            self.y=random.randint(0,10)

      #上下左右四个方向的移动模块
      def move(self):
            #对x的移动
            new_x=self.x+random.choice([1,-1,2,-2])
            new_y=self.y+random.choice([1,-1,2,-2])

            if new_x<0:
                  self.x=self.x-(new_x-0)
            elif new_x>10:
                  self.x=self.x-(new_x-10)
            else:
                  self.x=new_x


            if new_y<0:
                  self.y=self.y-(new_y-0)
            elif new_y>10:
                  self.y=self.y-(new_y-10)
            else:
                  self.y=new_y

            self.power-=2
            return (self.x,self.y)
            
      
      #建立吃鱼儿的函数
      def eat_fish(self):
            print('鱼儿被吃掉咯!\n')
            
            self.power+=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):
            #对x的移动
            new_x=self.x+random.choice([1,-1])
            new_y=self.y+random.choice([1,-1])

            if new_x<0:
                  self.x=self.x-(new_x-0)
            elif new_x>10:
                  self.x=self.x-(new_x-10)
            else:
                  self.x=new_x


            if new_y<0:
                  self.y=self.y-(new_y-0)
            elif new_y>10:
                  self.y=self.y-(new_y-10)
            else:
                  self.y=new_y

            return (self.x,self.y)
            
#建立实例对象 并游戏
def play_game():
      turtle=Tur()
      fish=[]
      
      for i in range(10):
            new_fish=Fish()
            fish.append(new_fish)
      
      count=10

      while True:
            if not turtle.power:
                  print('游戏结束,小污龟精力耗尽啦!')
                  break

            if count<=0:
                  print('游戏结束,鱼儿被吃光咯!')
                  break

            #小乌龟的位置
            pos=turtle.move()


            for each_fish in fish[:]:
                  if each_fish.move()==pos:
                        count-=1
                        turtle.eat_fish()
                        fish.remove(each_fish)

play_game()
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值