如何跨多个文件向sprite图像正确添加键输入?

2024-07-05 11:04:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我创造这个来移动一个精灵。我在一个不同的文件中将sprite images cordinates设置为(spritex,300)。运行程序并按向右或向左箭头时,没有移动。在打印函数中,spritex的值会改变

我已经通过添加打印功能检查程序是否正在读取按键。我的程序设置错了吗?你知道吗


----移动功能文件

import pygame
import os, sys
from itertools import *
from oryxsprites import *
from oryxdisplay import *
spritex = 300
screen = pygame.display.set_mode((640, 640))

def movementsprite():   

    global spritex

    keys = pygame.key.get_pressed()

    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False

    if keys[pygame.K_RIGHT]:
              spritex += 10
              print spritex

    elif keys[pygame.K_LEFT]:              
              spritex -= 10
              print spritex

------显示功能文件----------------

import pygame
import itertools
from oryxsprites import *
from McharMovement import *
screen = pygame.display.set_mode((640, 640))
spritex = 300
def backgroundmain():
    movementsprite()

    backdrop = pygame.Rect(0, 0, 640, 640) 
    screen.fill((50,50,50))
    playingfeildwidth = (32, 608)
    playingfeildheight = (32, 608)

screen.blit(warrior1, (spritex, 320))

pygame.display.flip()

----------主文件----------------

import pygame
import os, sys
from itertools import *
from oryxsprites import *
from oryxdisplay import *
from McharMovement import *
running = True

while running:

    backgroundmain()
    pygame.display.set_caption('OryxGame')
    pygame.display.set_icon(grasstile)


    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False
             pygame.quit()

Tags: 文件fromimport功能eventgetdisplaykeys
2条回答

将代码更改为:

spritex = 100

def movementsprite():
    global spritex  #I added this line
    keys = pygame.key.get_pressed()
    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False

    if keys[pygame.K_RIGHT]:
              spritex += 10
              print spritex

    elif keys[pygame.K_LEFT]:              
              spritex -= 10

那应该很管用

如果精灵仍然没有移动,那么现在的问题是调用函数来移动它。你怎么移动它?您需要从内部调用移动函数def movementsprite():

如果要从另一个文件调用movement函数,请使用

from other_file import movement_func

甚至

from other_file import *

更新: 只需将return语句添加到移动函数return spritex

然后在Display函数中,调用movement函数时,将行更改为 spritex=movementfunction()

这将改变文件之间spritex的值。你不必使spritex在你的移动功能的顶部全球。你知道吗

希望我能帮忙!:)

从外观上看,spritex变量超出范围。您需要使它对movementsprite()函数可用。你知道吗

global放在变量声明前面可以解决这个问题

相关问题 更多 >