以下是一个简单的Python Pygame绘图游戏示例:
import pygame
import random
# 初始化Pygame
pygame.init()
# 设置游戏窗口大小
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
WINDOW_SIZE = (WINDOW_WIDTH, WINDOW_HEIGHT)
# 创建游戏窗口
screen = pygame.display.set_mode(WINDOW_SIZE)
# 设置游戏标题
pygame.display.set_caption("绘图游戏")
# 设置颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# 设置字体
font = pygame.font.SysFont(None, 36)
# 设置计分
score = 0
# 退出游戏函数
def game_quit():
pygame.quit()
exit()
# 游戏循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_quit()
# 绘制背景
screen.fill(WHITE)
# 随机绘制图形
shape_num = random.randint(1, 3)
if shape_num == 1:
pygame.draw.circle(screen, BLUE, (random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)), random.randint(10, 50))
elif shape_num == 2:
pygame.draw.rect(screen, RED, (random.randint(0, WINDOW_WIDTH-100), random.randint(0, WINDOW_HEIGHT-50), 100, 50))
else:
pygame.draw.polygon(screen, GREEN, [(random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)), (random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)), (random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT))])
# 判断是否点击到图形
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
pos = pygame.mouse.get_pos()
if shape_num == 1:
if pygame.Rect(pos[0]-50, pos[1]-50, 100, 100).colliderect(pygame.draw.circle(screen, BLUE, (random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)), random.randint(10, 50))):
score += 10
elif shape_num == 2:
if pygame.Rect(pos[0], pos[1], 1, 1).colliderect(pygame.draw.rect(screen, RED, (random.randint(0, WINDOW_WIDTH-100), random.randint(0, WINDOW_HEIGHT-50), 100, 50))):
score += 20
else:
if pygame.Rect(pos[0], pos[1], 1, 1).colliderect(pygame.draw.polygon(screen, GREEN, [(random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)), (random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT)), (random.randint(0, WINDOW_WIDTH), random.randint(0, WINDOW_HEIGHT))])):
score += 30
# 显示当前得分
score_text = font.render("Score: %d" % score, True, BLACK)
screen.blit(score_text, (20, 20))
# 刷新屏幕
pygame.display.update()
运行代码后,将会出现一个800x600的绘图游戏窗口,每次随机绘制一个圆形、长方形或三角形,并在点击到图形时计分,判断点击到的方法为使用colliderect()检测点击位置和绘制出的图形是否相交。