0
私はpygameの使い方を学び、同じスプライトで複数の画像を使用しようとしています。キーボードのボタンを押すと、スプライトの画像が変わります。私は、右矢印キーを押して、スプライトの画像を変更しようとするたびに、私はエラーを取得する:ここでpygameで同じスプライトの複数の画像を使用するにはどうすればよいですか?
Traceback (most recent call last):
File "C:\Users\theotheo36\workspace\NomadsPie\main.py", line 55, in <module>
game.execute()
File "C:\Users\theotheo36\workspace\NomadsPie\main.py", line 50, in execute
self.render()
File "C:\Users\theotheo36\workspace\NomadsPie\main.py", line 32, in render
self.all.draw(self.screen)
File "C:\Users\theotheo36\Downloads\WinPython-64bit-3.4.4.3Qt5\python-3.4.4.amd64\lib\site-packages\pygame\sprite.py", line 475, in draw
self.spritedict[spr] = surface_blit(spr.image, spr.rect)
TypeError: invalid destination position for blit
は私のコードです:
import pygame
from pygame.locals import *
class Camel(pygame.sprite.Sprite):
def __init__(self,x,y):
super().__init__()
self.faceleft=True
self.faceright=False
self.image=pygame.image.load('camel.png').convert()
self.rect=self.image.get_rect()
self.rect.x=x
self.rect.y=y
def look(self):
if self.faceleft==True:
self.image=pygame.image.load('camel.png').convert()
self.rect=self.image.get_rect()
elif self.faceright==True:
self.image=pygame.image.load('camelright.png').convert()
self.rect=self.image.get_rect
class Game(Camel):
def __init__(self):
pygame.init()
self.screen=pygame.display.set_mode((800,800))
self.all=pygame.sprite.Group()
self.camel=Camel(200,200)
self.all.add(self.camel)
self.running=True
def render(self):
self.screen.fill((255,255,255))
self.all.draw(self.screen)
pygame.display.update()
def events(self,event):
if event.type==pygame.QUIT:
self.running=False
if event.type==KEYDOWN:
if event.key==K_RIGHT:
self.camel.faceleft=False
self.camel.faceright=True
self.camel.look()
if event.key==K_LEFT:
self.camel.faceright=False
self.camel.faceleft=True
self.camel.look()
def collisons(self):
pass
def execute(self):
while (self.running):
self.render()
for event in pygame.event.get():
self.events(event)
game=Game()
game.execute()