Python小游戏——抓青蛙

主要用到Pygame库,用于处理游戏中的图形、音频、事件等。
其他主要用到Python的游戏循环、随机数生成和鼠标事件处理。

python游戏源码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import pygame
import random

pygame.init()

window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('抓青蛙游戏')

white = (255, 255, 255)
black = (0, 0, 0)
green = (0, 128, 0)

mole_radius = 20
mole_x = random.randint(mole_radius, window_width - mole_radius)
mole_y = random.randint(mole_radius + 100, window_height - mole_radius)
ear_radius = 5

score = 0
clock = pygame.time.Clock()
spawn_timer = 0
spawn_delay = 1500 # 1.5秒

# 显示得分
def show_score():
font = pygame.font.SysFont(None, 36)
score_text = font.render(f'Score: {score}', True, black)
window.blit(score_text, (10, 10))

# 绘制青蛙
def draw_mole():
pygame.draw.circle(window, green, (mole_x, mole_y), mole_radius)
pygame.draw.circle(window, black, (mole_x - mole_radius//2, mole_y - mole_radius//2 - ear_radius), ear_radius)
pygame.draw.circle(window, black, (mole_x + mole_radius//2, mole_y - mole_radius//2 - ear_radius), ear_radius)

# 显示青蛙
def show_objects():
window.fill(white)
draw_mole()
pygame.draw.circle(window, black, pygame.mouse.get_pos(), 20)
show_score()
pygame.display.update()

# 绘制锤子
def draw_hammer(position):
pygame.draw.circle(window, hammer_color, position, hammer_radius, 3)

# 主循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

spawn_timer += clock.get_time()
if spawn_timer >= spawn_delay:
mole_x = random.randint(mole_radius, window_width - mole_radius)
mole_y = random.randint(mole_radius + 100, window_height - mole_radius)
spawn_timer = 0

mouse_x, mouse_y = pygame.mouse.get_pos()
if pygame.mouse.get_pressed()[0]:
if (mole_x - mouse_x)**2 + (mole_y - mouse_y)**2 <= mole_radius**2:
score += 1
mole_x = random.randint(mole_radius, window_width - mole_radius)
mole_y = random.randint(mole_radius + 100, window_height - mole_radius)

show_objects()
clock.tick(60)

pygame.quit()