第一范文网 - 专业文章范例文档资料分享平台

python 拼图游戏代码

来源:用户分享 时间:2025/7/10 22:04:36 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

# -*- coding: utf-8 -*-

import simpleguitk as simplegui import random # 载入外部图像

baymax = simplegui.load_image(\# 定义常量 # 画布的尺寸 WIDTH = 600

HEIGHT = WIDTH + 100 # 图像块的边长

IMAGE_SIZE = WIDTH / 3 # 图像块坐标列表

all_coordinates = [[IMAGE_SIZE*0.5, IMAGE_SIZE*0.5], [IMAGE_SIZE*1.5, IMAGE_SIZE*0.5], [IMAGE_SIZE*2.5, IMAGE_SIZE*0.5], [IMAGE_SIZE*0.5, IMAGE_SIZE*1.5], [IMAGE_SIZE*1.5, IMAGE_SIZE*1.5], [IMAGE_SIZE*2.5, IMAGE_SIZE*1.5],

[IMAGE_SIZE*0.5, IMAGE_SIZE*2.5], [IMAGE_SIZE*1.5, IMAGE_SIZE*2.5], None] # 棋盘行列数 ROWS = 3 COLS = 3 # 移动步数 steps = 0

# 保存所有图像块的列表 board = [[None, None, None], [None, None, None], [None, None, None]] # 图像块类 class Square:

def __init__(self, coordinate): self.center = coordinate

def draw(self, canvas, board_pos):

canvas.draw_image(baymax, self.center, [IMAGE_SIZE,

IMAGE_SIZE],[(board_pos[1]+0.5)*IMAGE_SIZE, (board_pos[0]+0.5)*IMAGE_SIZE], [IMAGE_SIZE, IMAGE_SIZE]) # 初始化拼图板 def init_board():

# 打乱图像块坐标

random.shuffle(all_coordinates) # 填充拼图板

for i in range(ROWS): for j in range(COLS): idx = i * ROWS + j

square_center = all_coordinates[idx] if square_center is None: board[i][j] = None else:

board[i][j] = Square(square_center) # 重置游戏 def play_game(): global steps

steps = 0 init_board()

# 绘制游戏界面各元素 def draw(canvas): # 画黑框

canvas.draw_polygon([[0, 0], [WIDTH, 0], [WIDTH, WIDTH], [0, WIDTH]], 1, 'Black') # 画目标图像

canvas.draw_image(baymax, [WIDTH/2, WIDTH/2], [WIDTH, WIDTH], [50, WIDTH+50], [98, 98]) # 画步数

canvas.draw_text(\步数:\ # 画图像块

# 代码写在这里 for i in range(ROWS): for j in range(COLS):

if board[i][j] is not None:

board[i][j].draw(canvas, [i, j]) def mouseclick(pos): global steps

# 将点击位置换算成拼图板上的坐标 r = int(pos[1] // IMAGE_SIZE) c = int(pos[0] // IMAGE_SIZE)

if r < 3 and c < 3: # 点击位置在拼图板内才移动图片 if board[r][c] is None: # 点到空位置上什么也不移动 return else:

# 依次检查当前图像块的上,下,左,右是否有空位置,如果有就移动当前图像块 # 代码写在这里

current_square = board[r][c]

if r - 1 >= 0 and board[r-1][c] is None: # 判断上面 board[r][c] = None

board[r-1][c] = current_square steps += 1

elif c + 1 <= 2 and board[r][c+1] is None: # 判断右面 board[r][c] = None

board[r][c+1] = current_square steps += 1

elif r + 1 <= 2 and board[r+1][c] is None: # 判断下面 board[r][c] = None

board[r+1][c] = current_square steps += 1

elif c - 1 >= 0 and board[r][c-1] is None: # 判断左面 board[r][c] = None

board[r][c-1] = current_square steps += 1 # 创建框架

frame = simplegui.create_frame(\拼图\frame.set_canvas_background(\frame.set_draw_handler(draw)

frame.add_button(\重新开始\

# 注册鼠标事件

frame.set_mouseclick_handler(mouseclick) # 初始化游戏 play_game() # 启动框架 frame.start()

搜索更多关于: python 拼图游戏代码 的文档
python 拼图游戏代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c915ok9at1d03ypi6bth9_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top