本帖最后由 sunnychen 于 2024-4-9 11:26 编辑
通过Python 编写小游戏,让学习变得有趣。通过练习逐步掌握 Python 编程的基本概念和技能,也能给学习者带来成就感和乐趣。
在开发游戏时,主要用到Pygame库,用于处理游戏中的图形、音频、事件等。
抓青蛙游戏是一种有趣的反应游戏,主要用到Python的游戏循环、随机数生成和鼠标事件处理。
[Python] 纯文本查看 复制代码 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()
|