checkily 发表于 2018-2-23 17:39:58

乌龟吃鱼

自己写了大部分,就差吃鱼的没写好。参照了鱼兄的。
import random as r

class Turtle:

    def __init__(self):
      self.live=100
      self.x=r.randint(0,10)
      self.y=r.randint(0,10)
   
    def move(self):
      new_x=self.x+r.choice([-2,-1,1,2])
      new_y=self.y+r.choice([-2,-1,1,2])

      if new_x>10 :
            self.x=10-(new_x-10)
      elif new_x<0:
            self.x=abs(new_x)
      else:
            self.x=new_x
            
      if new_y>10:
            self.y=10-(new_y-10)
      elif new_y<0:
            self.y=abs(new_y)
      else:
            self.y=new_y
            
      self.live-=1
      return self.x,self.y

    def eat(self):
      self.live+=20
      if self.live>100:
            self.live=100
      
class Fish:

    def __init__(self):

      self.x=r.randint(0,10)
      self.y=r.randint(0,10)

    def move(self):
      new_x=self.x+r.choice([-1,1])
      new_y=self.y+r.choice([-1,1])

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

      return self.x,self.y

def gamestart():
      
    while True:      
      if turtle.live==0:
            print("乌龟饿死了,游戏结束")
            break
      if len(fishs)==0:
            print("鱼被吃光了,游戏结束")
            break

      turtle_pos=turtle.move()

      for each_fish in fishs:
            if each_fish.move()==turtle_pos:
                turtle.eat()
                fishs.remove(each_fish)
                print("吃掉了一条鱼,剩下%d条" % len(fishs))               
               
fishs=[]
turtle=Turtle()
for i in range(20):
    new_fish=Fish()
    fishs.append(new_fish)

gamestart()
页: [1]
查看完整版本: 乌龟吃鱼