写一个大鱼吃小鱼的python程序
时间: 2024-05-12 18:20:50 浏览: 98
这里有一个简单的大鱼吃小鱼的Python程序示例,使用了Python中的面向对象编程:
```python
import random
class Fish:
def __init__(self, x, y):
self.x = x
self.y = y
def move(self):
self.x += random.randint(-1, 1)
self.y += random.randint(-1, 1)
self.x = 0 if self.x < 0 else 10 if self.x > 10 else self.x
self.y = 0 if self.y < 0 else 10 if self.y > 10 else self.y
def eat(self, other):
if self.x == other.x and self.y == other.y:
return True
return False
class Shark(Fish):
def __init__(self, x, y):
super().__init__(x, y)
self.size = 10
def eat(self, other):
if isinstance(other, Fish) and self.size > other.size:
return super().eat(other)
return False
def move(self):
super().move()
self.size += 1
fishes = []
for i in range(10):
fishes.append(Fish(random.randint(1, 9), random.randint(1, 9)))
shark = Shark(5, 5)
for i in range(10):
for fish in fishes:
if shark.eat(fish):
fishes.remove(fish)
print("Shark ate a fish!")
shark.move()
for fish in fishes:
fish.move()
```
这个程序中,有两个类:`Fish`和`Shark`。`Fish`类代表小鱼,`Shark`类代表大鱼。它们都有`move`方法来随机移动,和`eat`方法来判断能否吃掉其他的鱼。
`Shark`类重写了`eat`方法,只有当被吃的鱼是`Fish`类的实例且体积比自己小,才能被吃掉。同时,每次移动时,`Shark`的体积会增加1。
在主程序中,首先创建了10个随机位置的小鱼和一个初始位置为(5, 5)的大鱼。然后循环10次,每次循环中,大鱼会尝试吃掉所有小鱼,小鱼和大鱼都会移动一次。如果有小鱼被吃掉了,会输出一条信息。
阅读全文