# 预置内容,请勿改动 a = {"01新疆碎片": (225, 231), "02西藏碎片": (244, 457), "03内蒙古碎片": (623, 203), "04青海碎片": (383, 396), "05四川碎片": (491, 521), "06黑龙江碎片": (861, 122), "07甘肃碎片": (472, 358), "08云南碎片": (457, 621), "09广西碎片": (580, 656), "10湖南碎片": (640, 584), "11陕西碎片": (586, 415), "12河北碎片": (718, 330), "13吉林碎片": (859, 228), "14湖北碎片": (654, 506), "15广东碎片": (678, 677), "16贵州碎片": (549, 593), "17河南碎片": (672, 446), "18江西碎片": (724, 584), "19山东碎片": (758, 392), "20山西碎片": (650, 369), "21辽宁碎片": (805, 284), "22安徽碎片": (740, 487), "23福建碎片": (766, 609), "24江苏碎片": (770, 462), "25浙江碎片": (793, 538), "26重庆碎片": (573, 525), "27宁夏碎片": (548, 375), "28台湾碎片": (824, 652), "29海南碎片": (610, 753), "30北京碎片": (715, 310), "31天津碎片": (730, 326), "32上海碎片": (818, 495)} # 省份文件名称和对应的正确位置 #基类 pygame pgzero import pgzrun import os import random # 导入操作系统和随机数库 # 设置窗口 WIDTH = 1000 HEIGHT = 800 # 设置窗口标题 TITLE = '中国地图我来拼' # 初始值设置 s_piece = None # 当前被选择的碎片 s_name = None # 当前被选择的碎片名字 count = 0 # 记录游戏中正确放置的碎片数量 time = 120 # 游戏限时 game_over = False # 标志游戏是否结束 # 加载碎片 pieces = [] # 遍历指定文件夹中的所有文件 for filename in os.listdir('images'): if filename[-6:] == '碎片.png': # 只处理以碎片.png结尾的文件 img = Actor(filename[:-4], (random.randint(0, WIDTH), random.randint(0, HEIGHT))) pieces.append([img, filename[:-4], False]) # 添加所有碎片和碎片信息到列表 # 加载游戏结束画面 win_img = Actor("成功", (WIDTH // 2, HEIGHT // 2)) lose_img = Actor("失败", (WIDTH // 2, HEIGHT // 2)) # 刷新屏幕 def draw(): screen.blit('中国地图背景',(0,0)) # 绘制背景 # 绘制每个碎片 for piece in pieces: piece[0].draw() # 显示剩余时间 screen.draw.text(f"Time: {time}", (40, 20), fontsize=40, color="white") # 如果游戏结束,显示胜利或失败的图片 if time == 0: lose_img.draw() if count == len(a): win_img.draw() # 鼠标按下事件 def on_mouse_down(pos): global s_piece, s_name if not game_over: for piece, name, placed in pieces: if piece.collidepoint(pos) and not placed: # 检查是否点击到未正确放置的碎片 s_piece = piece # 记录选择的碎片 s_name = name # 记录碎片名称 break # 鼠标移动事件 def on_mouse_move(pos): if s_piece != None and 0 0: if count < len(a): time -= 1 # 每秒减少一个时间单位 else: game_over = True # 游戏结束 # 每隔 1 秒调用更新时间的函数 clock.schedule_interval(update_time, 1) # 启动游戏 pgzrun.go()