作者 by 超米 / 2024-11-25 / 暂无评论 / 20 个足迹
import simpleguitk as gui
import random
# 定义全局变量
all_image = [] # 所有16张图片的索引下标,两两重复
exposed = [] # 真表示对应的图片已经翻开
check_list = [] # 正在对比的两种图片
turns = 0
flag_image = [] # 16强球队的国旗图标
# 初始化全局变量的辅助函数
def new_game():
global all_image, exposed, check_list, turns
check_list = []
turns = 0
exposed = []
label.set_text("回合次数 = " + str(turns))
background_sound.rewind()
background_sound.play()
# 创建并打乱16张图片的索引下标
list_one = list(range(0, 8))
random.shuffle(list_one)
list_two = list(range(0, 8))
random.shuffle(list_two)
all_image = list_one + list_two
# 图片默认未翻开
for i in range(0, 16):
exposed.append(False)
# 鼠标点击事件的处理函数
def mouseclick(pos):
# 也是游戏逻辑的实现
global exposed, check_list, turns
row = pos[1] // 128 # 行
column = pos[0] // 128 # 列
i = row * 4 + column
if exposed[i] is False:
exposed[i] = True
check_list.append([all_image[i], i])
if len(check_list) > 2:
if check_list[-2][0] == check_list[-3][0]:
del check_list[-2]
del check_list[-2]
else:
exposed[check_list[-2][1]] = False
exposed[check_list[-3][1]] = False
del check_list[-2]
del check_list[-2]
turns += 1
label.set_text("回合次数 = " + str(turns))
# 每个图片的显示大小为128x128像素,8强共16张图片,16张图片显示为4行4列
def draw(canvas):
canvas.draw_image(background_image, [256, 256], [512, 512], [256, 256], [512, 512])
for i in range(0, 16):
row = i // 4
column = i % 4
if exposed[i] is False:
canvas.draw_image(logo_image, [256/2, 256/2], [256, 256], [64 + 128*column, 64 + 128*row], [128, 128])
else:
canvas.draw_image(flag_image[all_image[i]], [1024/2, 1024/2], [1024, 1024], [64 + 128*column, 64 + 128*row], [128, 128])
# 创建窗口
# 8强共16张图片,每个图片的显示大小为128x128像素
# 16张图片显示为4行4列,因此窗口的宽度为128x4=512像素,高度为128x4=512像素
frame = gui.create_frame("世界杯8强连连看", 512, 512)
frame.add_button("重新开始", new_game, 100)
label = frame.add_label("回合次数 = 0")
# 注册事件处理函数
frame.set_mouseclick_handler(mouseclick)
frame.set_draw_handler(draw)
# 读取图片
background_image = gui.load_image(
"http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/background.png")
logo_image = gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Logo.png")
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Argentina.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Belgium.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Brazil.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Colombia.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Costa-rica.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/France.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Germany.png"))
flag_image.append(
gui.load_image("http://202.201.225.74/video/PythonResoure/ProjectResource/images/project5/Netherlands.png"))
# 读取世界杯之歌
background_sound = gui.load_sound(
"http://202.201.225.74/video/PythonResoure/ProjectResource/sounds/project5/We_Are_One.ogg")
# 启动游戏
new_game()
frame.start()
独特见解