python:实现猴子接香蕉的游戏
时间: 2023-08-15 18:13:07 浏览: 252
猴子接香蕉是一款经典的益智游戏,玩家需要控制猴子去接到香蕉。下面是用 Python 实现猴子接香蕉游戏的代码示例。
首先,我们需要导入 Pygame 库,这是一个常用的游戏开发库。然后,我们需要定义一些变量,包括游戏窗口的大小、猴子和香蕉的图片等。
```python
import pygame
import random
# 定义窗口大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# 定义猴子和香蕉的图片
MONKEY_IMG = pygame.image.load("monkey.png")
BANANA_IMG = pygame.image.load("banana.png")
```
接下来,我们需要定义猴子和香蕉的类,以及它们的初始化方法和移动方法。
```python
class Monkey:
def __init__(self):
self.image = MONKEY_IMG
self.rect = self.image.get_rect()
self.rect.centerx = SCREEN_WIDTH // 2
self.rect.bottom = SCREEN_HEIGHT - 20
self.speed = 5
def move_left(self):
self.rect.x -= self.speed
if self.rect.left < 0:
self.rect.left = 0
def move_right(self):
self.rect.x += self.speed
if self.rect.right > SCREEN_WIDTH:
self.rect.right = SCREEN_WIDTH
class Banana:
def __init__(self):
self.image = BANANA_IMG
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, SCREEN_WIDTH - self.rect.width)
self.rect.y = -self.rect.height
self.speed = random.randint(3, 6)
def move(self):
self.rect.y += self.speed
if self.rect.top > SCREEN_HEIGHT:
self.rect.x = random.randint(0, SCREEN_WIDTH - self.rect.width)
self.rect.y = -self.rect.height
self.speed = random.randint(3, 6)
```
然后,我们需要定义游戏的主循环。在每一帧中,我们需要检测用户的输入,移动猴子和香蕉,检测是否发生碰撞,以及更新游戏窗口。
```python
def main():
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Monkey and Banana")
monkey = Monkey()
bananas = [Banana() for i in range(5)]
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
return
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
monkey.move_left()
elif keys[pygame.K_RIGHT]:
monkey.move_right()
for banana in bananas:
banana.move()
if banana.rect.colliderect(monkey.rect):
banana.rect.x = random.randint(0, SCREEN_WIDTH - banana.rect.width)
banana.rect.y = -banana.rect.height
banana.speed = random.randint(3, 6)
screen.fill((255, 255, 255))
screen.blit(monkey.image, monkey.rect)
for banana in bananas:
screen.blit(banana.image, banana.rect)
pygame.display.flip()
clock.tick(60)
if __name__ == "__main__":
main()
```
完整代码如下: