所以我一直在尝试使用python中的pygame创建一个拼图游戏。唯一的问题是,我在创建带有多个图像的面板时遇到了麻烦,我可以在屏幕上拖动这些图像(不需要像拼图一样连接图像,所以只是简单的拖放)。我正在从电脑的本地文件夹中加载图像。有人能帮帮我吗?
这就是我到目前为止所尝试的,但是图像从相同的位置开始,pygame将它们都识别为一个图像
import socket
import os
import shutil
import pygame
from pygame.locals import*
def dragdrop(path):
dirs = os.listdir(path)
def load_image(name, colorkey=None):
fullname=os.path.join("data", name)
try:
image=pygame.image.load(fullname)
except pygame.error, message:
print "Impossible de charger l'image:",name
raise SystemExit, message
image = image.convert()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0, 0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
class Ichrom(pygame.sprite.Sprite):
def __init__(self,image,initpos):
pygame.sprite.Sprite.__init__(self)
self.pos = initpos
self.image, self.rect=image
self.button=(0,0,0)#mouse buttons not pressed
self.selected = 0
self.mouseover=False
self.focused=False
print "init chrom at ",self.pos
def rollover(self):
"""Test if the mouse fly over the chromosome
self.mouseover==True if mouse flying over the chrom,
False if not"""
mpos=pygame.mouse.get_pos()#mouseposition
#test if mouse roll over the sprite
if self.rect.collidepoint(mpos):
self.mouseover=True
else:
self.mouseover=False
def update(self):
self.button=pygame.mouse.get_pressed()
mpos = pygame.mouse.get_pos()
self.selected=self.rect.collidepoint(mpos)
#the mouse flies over a chromosome
if (self.mouseover):
#print "mouse pos:",mpos
if self.button==(1,0,0): # )
pos = pygame.mouse.get_pos()
self.rect.midtop = pos
def main():
pygame.init()
screen = pygame.display.set_mode((1000,1000))
pygame.display.set_caption("Karyotyper")
pygame.mouse.set_visible(True)
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((0, 0, 0))
screen.blit(background,(0, 0))
pygame.display.flip()
"""i1=load_image('C:/Users/Yonatan/Desktop/House.png', -1)
i2=load_image('C:/Users/Yonatan/Desktop/US.jpeg', -1)
i3=load_image('C:UsersYonatanDesktopimgres.jpg', -1)
fuck= [i1, i2, i3]"""
img=[]
count=0
for i in dirs:
spr = Ichrom(load_image(path + "/" +i,-1),(count,count))
count = count+30
img.append(spr)
allsprites = pygame.sprite.RenderPlain((fck))
clock = pygame.time.Clock()
while 1:
clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
return
elif event.type == KEYDOWN and event.key == K_ESCAPE:
return
if event.type ==pygame.MOUSEBUTTONDOWN:
#need to be modified to handle a list of chromosomes
for i in fck:
i.rollover()
allsprites.update()
screen.blit(background,(0,0))
allsprites.draw(screen)
pygame.display.flip()
main()
将位置传递给精灵并将其存储在self.pos
中,但要绘制Sprite
,精灵组使用rect
属性:
From pygame.sprite.Group.draw()
:
将包含的精灵绘制到Surface参数。这使用雪碧。image属性用于源表面,以及Sprite。Rect for position.