我正在编写一个算法,提供一个tkinter程序作为输出(我希望我自己解释过),该程序通过拖动组合框、文本.进入一个空间并记住坐标。我决定用玩偶游戏来做这件事,(我从互联网上提取了这个程序的骨架,然后修改了它)。我遇到了几个问题:
这是我的代码:
import os,sys
import pygame as pg
pg.init()
a=0
b=0
c=200
d=200
event = pg.event.poll()
Sfondo = pg.image.load("Sfondo.jpg")
def DisegnaBackground (a,b):
Screen.blit(Sfondo,(a,b))
class Character:
def __init__(self,rect):
self.rect = pg.Rect(rect)
self.click = False
self.image = pg.image.load("ComboBox.png").convert()
Screen.blit(self.image, (c,d))
def update(self,surface):
if self.click:
self.rect.center = pg.mouse.get_pos()
surface.blit(self.image,self.rect)
def main(Surface,Player):
game_event_loop(Player)
DisegnaBackground (a,b)
Player.update(Surface)
def game_event_loop(Player):
for event in pg.event.get():
if event.type == pg.MOUSEBUTTONDOWN:
if Player.rect.collidepoint(event.pos):
Player.click = True
elif event.type == pg.MOUSEBUTTONUP:
Player.click = False
elif event.type == pg.QUIT:
pg.quit(); sys.exit()
if __name__ == "__main__":
os.environ['SDL_VIDEO_CENTERED'] = '1'
pg.init()
Screen = pg.display.set_mode((1500,800))
MyClock = pg.time.Clock()
MyPlayer = Character((0,0,200,24))
MyPlayer.rect.center = Screen.get_rect().center
while 1:
main(Screen,MyPlayer)
pg.display.update()
MyClock.tick(60)
print(event)发布于 2020-02-20 14:26:16
有几个问题。首先,确保不要混合全局变量和局部变量。尝试像这样重写这个函数:
def DisegnaBackground (surface, a, b):
surface.blit(Sfondo, (a, b))要使此操作正常,您还必须更新您的主服务器:
def main(Surface,Player):
game_event_loop(Player)
DisegnaBackground (Surface, a, b)
Player.update(Surface)最后,您不需要在创建之后立即显示您的字符,因此您可以将init函数保留为
def __init__(self,rect):
self.rect = pg.Rect(rect)
self.click = False
self.image = pg.image.load("ComboBox.png").convert()希望能帮上忙。
https://stackoverflow.com/questions/60320250
复制相似问题