pygameを使用したクラスのための単純なPythonゲームを作成しています。私は短い時間をコーディングしましたが、このプロジェクトまではグラフィックを使用していませんでした。私はすでに、プレイヤーからクリックされたポイントに移動する「火の玉」を作成しました。 私は戦士に取り組んでいます。彼は彼と一緒に旅する剣を持っています。私はまた、私が望むスラッシュルックの動きを持っています。スペースバーを押して剣の角度を変えてから、通常の位置に戻します。私が抱えている問題は、イメージ/オブジェクト(剣)が下の位置に描かれると、その位置にとどまるということです。元の画像は元の位置に戻りますが、私は誰かが正しい方向にポイントを持つことを望んでいた。これが私の最初のグラフィカルゲームです。私はこれが通常、オブジェクトがメインで描画されている行と何か関係があることを知っていますが、私はそれを少しでも幸せにしています。また、私がこれについて間違っていると言っても、何かを言いたいことはありません。 ご協力いただきありがとうございます。Pygameアニメーションオブジェクトが描画されない
クラスプレーヤー(pygame.sprite.Sprite):
def __init__(self, name):
pygame.sprite.Sprite.__init__(self)
self.name = name
self.level = 1
self.xp = 0
self.health = 100
self.power = 100
self.disc = 0
self.currentAtk = 1
def draw(self, screen):
screen.blit(self.image, (self.rect.x, self.rect.y))
def update(self):
key = pygame.key.get_pressed()
if key[K_SPACE]:
if self.disc == 1 and self.currentAtk == 1:
self.warsword.stab()
クラス剣(pygame.sprite.Sprite):
image = pygame.image.load('images\\sword.png')
def __init__(self, x1, y1, angle = -25, stabtime = 5):
pygame.sprite.Sprite.__init__(self)
self.angle = angle
self.image = pygame.transform.rotate(Sword.image, self.angle)
self.rect = self.image.get_rect()
self.rect.x, self.rect.y = x1, y1
self.stabtime = stabtime
self.repeat = 2
def update(self):
key = pygame.key.get_pressed()
if key[K_a] and self.rect.x >= 72:
self.rect.x -= 1
if key[K_d] and self.rect.x <= 572:
self.rect.x += 1
if key[K_w] and self.rect.y >= 154:
self.rect.y -= 1
if key[K_s] and self.rect.y <= 309:
self.rect.y += 1
def draw(self, screen, x, y):
screen.blit(self.image, (x, y))
def stab(self):
if self.angle != -90 and self.stabtime == 5:
self.angle = -90
self.rect.y += 15
if self.stabtime >= -5:
self.image = pygame.transform.rotate(self.image, self.angle)
else:
pygame.sprite.Sprite.update(self)
self.stabtime -= 1
クラスの戦士(プレーヤー):
image = pygame.image.load('images\\warrior.png')
SwordX = 0
SwordY = 0
def __init__(self, name, x, y):
super(Warrior, self).__init__(name)
self.disc = 1
self.image = Warrior.image
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
Warrior.SwordX = self.rect.x + 12
Warrior.SwordY = self.rect.y + 10
self.warsword = Sword(Warrior.SwordX, Warrior.SwordY)
atks.add(self.warsword)
def main():
chars = pygame.sprite.Group(())
screen = pygame.display.set_mode((640, 480))
a = Warrior('Fago', 250, 200)
chars.add(a)
screen = pygame.display.set_mode((640, 480))
while True:
chars.update()
atks.update()
screen.blit(pygame.image.load('images\\arena.png'), (0,0))
atks.draw(screen)
chars.draw(screen)
pygame.display.update()
CLOCK.tick(75)
pygame.event.pump()
メイン()
私はそれを(サイドノートと一緒に)高く評価しますが、私はいつ何がより良くできるのかを知りたいのです。私はそれを動作させるようにしましたが、私はこれを実装しようとしています、それはもっときれいであるようです。再度、感謝します! :) –