これは私のコードです:長方形が動いていないのはなぜですか?
import pygame
from pygame.locals import *
#define the player
class Player(pygame.sprite.Sprite):
def __init__(self):
super(Player, self).__init__()
self.surf = pygame.Surface((50, 25))
self.surf.fill((255,255,255))
self.rect = self.surf.get_rect()
def update(self, pressed_keys):
"""
if pressed_keys[K_UP]:
self.rect.move_ip(0, -5)
if pressed_keys[K_DOWN]:
self.rect.move_ip(0, 5)
"""
if pressed_keys[K_LEFT]:
self.rect.move_ip(-5, 0)
if pressed_keys[K_RIGHT]:
self.rect.move_ip(5, 0)
#keep player on the screen
if self.rect.left < 0:
self.rect.left = 0
elif self.rect.right > 400:
self.rect.right = 400
#initialization
pygame.init()
#create the screen object
screen = pygame.display.set_mode((400, 600))
#instantiate the player
player = Player()
running = True
#main loop
while running:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
running = False
elif event.type == QUIT:
running = False
#draw the player to the screen
screen.blit(player.surf, (200, 550))
pressed_keys = pygame.key.get_pressed()
player.update(pressed_keys)
#update the display
pygame.display.flip()
すべてが現れますが、私はエラーなしで私の矢印キーで四角形を示した移動することはできません..事前に感謝を助けて!また、pressed_keysが動作しているかどうかを確認するためにプリントを追加し、長方形を動かさずにプリントします。あなたがpygame
を使用していることを確認する
どうもありがとう:
はここにすべての私の提案、次のコードの完全な修正版です。すみません、プレイヤーの位置を設定するにはどうしたらいいですか?ありがとうございました。 – Entel
最初にスプライトの場所を設定するには、 'self.rect = self.surf.get_rect()'を 'self.rect = self.surf.get_rect(center =(100,100))'に置き換えてください。タプルを '(x、y)'に置き換え、 'center'引数を' topleft'、 'topright'、' 'top''、' bottom' ...に置き換えることができます。 ://www.pygame.org/docs/ref/rect.html#pygame.Rect。その後、 'self.rect.move(x、y)'を使ってスプライトを 'x'と' y'コードに移動することができます。 'self.rect.right = 10'または' self.rect.top = 100'の組み合わせのいずれか... – abccd
'pygame.key.get_pressed()を明示的に使用して、すべてのループでキー入力をチェックしないでください。あなたのコードは遅くなり、おそらく遅れてしまうでしょう - それはナンセンスです。コードを遅くすることはありません。 'pygame.key.get_pressed()'はキーの状態を取得する正しい方法です。あなたのコードでは、もはや連続した動きを得るためにキーを押したままにすることはできません。 「フレームレートを設定しすぎてRAMを消費しないようにする」 - それはナンセンスです。あなたのゲームが一定の速度で動くようにフレームレートを設定します。それはRAMとは関係ありません.... – sloth