微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何对图像进行拖放?

如何解决如何对图像进行拖放?

所以我正在制作一个带有可移动棋子的棋盘。我已经创建了棋盘的碎片,并渲染了这些碎片。我正在使用字典来获取碎片或碎片 IMAGES = {} 的图像。所以现在我必须为字典中的每个国际象棋图像创建一个精灵。我已经在这里完成了:

import pygame as py
import ChessEngine

py.init()
WIDTH = 512
HEIGHT = 512
DIMENSION = 8
SQ_SIZE = 512 // DIMENSION
screen = py.display.set_mode((WIDTH,HEIGHT))
MAX_FPS = 60

def loadImages():
    pieces = ['wp','wR','wN','wB','wK','wQ','bp','bR','bN','bB','bK','bQ']
    for piece in pieces:
        IMAGES[piece] = py.transform.scale(py.image.load("images/" + piece + ".png"),(SQ_SIZE,SQ_SIZE))
    # Note we can access an image by saying "IMAGES['wp']'


class DragInDrop(py.sprite.Sprite):
    def __init__(self,image,initpos):
        py.sprite.Sprite.__init__(self)
        self.pos = initpos
        self.image,self.rect = image
        self.button = (0,0)
        self.selected = 0
        self.mouSEOver = False
        self.focused = False

    def rollover(self):
        mpos = py.mouse.get_pos()
        if self.rect.collidepoint(mpos):
            self.mouSEOver = True
        else:
            self.mouSEOver = False

    def update(self):
        self.button = py.mouse.get_pressed()
        mpos = py.mouse.get_pos()
        self.selected = self.rect.collidepoint(mpos)
        if self.mouSEOver:
            if self.button == (1,0):
                pos = py.mouse.get_pos()
                self.rect.midtop = pos


def main():
    running = True
    loadImages()
    py.mouse.set_visible(True)
    gs = ChessEngine.GameState()
    allsprites = py.sprite.RenderPlain(IMAGES)
    i = DragInDrop
    while running:
        for e in py.event.get():
            if e.type == py.QUIT:
                running = False
            if e.type == py.MOUSEBUTTONDOWN:
                for i in IMAGES:
                    i.rollover()
        allsprites.update()
        allsprites.draw(screen)
        drawGameState(screen,gs)
        py.display.update()

一个导入:import ChessEngine 仅用于我执行所有国际象棋移动和国际象棋规则的地方。所以没什么重要的。

现在每当我尝试运行此代码时,它都会弹出:

RecursionError: maximum recursion depth exceeded while calling a Python object

现在我不知道这对精灵意味着什么,但我想做的就是通过字典在板上移动这些图像。我不能给每个图像一个坐标,因为每个国际象棋位置都有不同的位置。我不知道我做错了什么。如果我必须实现其他任何东西,我不知道会是什么。现在,除了使用 pygame 之外,还有其他加载这些图像的方式吗,我不知道。

感谢您的帮助,如果您需要更多信息或代码,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。