本人创造了一个叫《哪吒拼图》的小游戏。在这个游戏中,一张完整的图形被切割成4块,然后打乱了顺序,通过单击鼠标去把它们拼成一张完整的图。下面的代码演示的是其原理,读者可以根据这个源代码自己开发一个完整的拼图小游戏。
下面是部分代码预览:
"""
哪吒拼图核心源代码.py
方块类Block的定义模块,splitimage.py图像均分源代码模块在下面。
"""
import os
from time import sleep
from splitimage import *
from random import shuffle
from tkinter import messagebox
from turtle import Turtle,Screen
class Block(Turtle):
"""方块类,一个方块就是一张切好的图片的封装。当新建一个方块时,
initcors属性会记住它的应该呆的坐标,而coordinates[i]则是随
机的一个坐标,两个坐标是不同的。 image就是它的外形。
它的action方法是单击它后的响应,check_all_picture是检测每张
图片有没有归位。
"""
switching = False
clicked = [] # 记录被第一个被单击的角色的列表
images = [] # 类变量,记录所有的方块
success_flag = False # 过关标志
def __init__(self,image,coordinates,index,i):
"""image:外形图,coordinates:坐标表,
index:初始坐标索引,i:起始坐标索引
"""
Turtle.__init__(self,shape = image)
self.initcors = coordinates[index] # 初始坐标,归位后的坐标
self.penup() # 抬笔
self.onclick(self.action) # 单击绑定action
Block.images.append(self) # 添加到图像列表中
self.goto(coordinates[i]) # 定位到打乱了的位置
def action(self,x,y):
"""单击方块时的动作,基本原理,首先记住第一次单击的方块。
,等第二次单击时,就能交换它们的坐标了。
"""
@staticmethod
def check_all_picture():
"""检测每个方块是否归位"""
if __name__ == "__main__":
cors = [(100,100),(-100,-100),(-100,100),(100,-100)]
screen = Screen()
screen.delay(20)
screen.bgcolor("gray")
redblock = Block('square',cors,0,3)
redblock.shapesize(8,8)
redblock.color("red")
orangeblock = Block('square',cors,1,2)
orangeblock.shapesize(8,8)
orangeblock.color("orange")
yellowblock = Block('square',cors,2,0)
yellowblock.shapesize(8,8)
yellowblock.color("yellow")
greenblock = Block('square',cors,3,1)
greenblock.shapesize(8,8)
greenblock.color("green")
如需要查看完整源代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

