質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

5179閲覧

キャラクターをスクリーン内で動かすゲームを作りたいが、画面が更新されず、キャラクターの残像が残ってしまう。(pygame)

rc9ni9w

総合スコア0

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/01/15 11:07

前提

初めての質問です。
ウインドウ内にキャラクターを表示させ、キー操作に応じて動かすプログラムを作成中です。

キャラクター表示、キー操作に応じて動くところまではできていますが、
前の画像がずっと残ったままで、動いた軌跡がそのまま画像として残り、
残像みたいになってしまいます。

実現したいこと

残像が残らないよう画面を更新したい(キャラクターを動かしたい)。

発生している問題・エラーメッセージ

エラーにはならないです。

該当のソースコード

python

1import pygame, time 2import sys 3from pygame.locals import * 4 5window = pygame.display.set_mode((800, 600)) 6 7def main(): 8 quit = False 9 pygame.init() 10 window.fill((pygame.Color("BLACK"))) 11 12 y_ground = window.get_height() - 100 13 14 x = 145 15 y = y_ground 16 17 player_stand = pygame.image.load("assets/p1_stand.png").convert_alpha() 18 player_stand = pygame.transform.scale(player_stand, (50, 70)) 19 20 player_right = [ 21 22 pygame.image.load("assets//p1_walk/PNG//p1_walk01.png").convert_alpha(), 23 pygame.image.load("assets//p1_walk/PNG//p1_walk02.png").convert_alpha(), 24 pygame.image.load("assets//p1_walk/PNG//p1_walk03.png").convert_alpha(), 25 pygame.image.load("assets//p1_walk/PNG//p1_walk04.png").convert_alpha(), 26 pygame.image.load("assets//p1_walk/PNG//p1_walk05.png").convert_alpha(), 27 pygame.image.load("assets//p1_walk/PNG//p1_walk06.png").convert_alpha(), 28 pygame.image.load("assets//p1_walk/PNG//p1_walk07.png").convert_alpha(), 29 pygame.image.load("assets//p1_walk/PNG//p1_walk08.png").convert_alpha(), 30 pygame.image.load("assets//p1_walk/PNG//p1_walk09.png").convert_alpha(), 31 pygame.image.load("assets//p1_walk/PNG//p1_walk10.png").convert_alpha(), 32 pygame.image.load("assets//p1_walk/PNG//p1_walk11.png").convert_alpha() 33 ] 34 35 player_right = [pygame.transform.scale(image,(50,70)) 36 for image in player_right] 37 38 player_left = [pygame.transform.flip(image, True, False) 39 for image in player_right ] 40 41 player_jump = pygame.image.load("assets/p1_jump.png").convert_alpha() 42 player_jump = pygame.transform.scale(player_jump,(50,70)) 43 44 player_jump_frame = 0 45 46 player_landing = pygame.image.load("assets/p1_duck.png").convert_alpha() 47 player_landing = pygame.transform.scale(player_landing,(50,70)) 48 49 player_right_frame = 0 50 player_left_frame = 0 51 52 keyspressed = pygame.key.get_pressed() 53 54 window.blit(player_stand,(x,y)) 55 56 57 while not quit: 58 key = pygame.key.get_pressed() 59 60 if key[pygame.K_RIGHT]: 61 x = x + 50 62 direction = "right" 63 64 elif(key[pygame.K_LEFT]): 65 x = x - 50 66 direction = "left" 67 68 elif(key[pygame.K_UP]): 69 if y == y_ground: 70 player_jump_frame = 10 71 72 elif(key[pygame.K_DOWN]): 73 y = y + 10 74 direction = "landing" 75 76 elif sum(keyspressed) == 0: 77 direction = "standing" 78 79 if player_jump_frame > 0: 80 y = y - 10 81 direction = "jump" 82 player_jump_frame = player_jump_frame - 1 83 84 elif y < y_ground: 85 direction = "landing" 86 y = y + 10 87 88 89 if direction == "right": 90 window.blit(player_right[player_right_frame], (x,y)) 91 player_right_frame = (player_right_frame + 1) % len(player_right) 92 93 elif direction == "left": 94 window.blit(player_left[player_left_frame], (x,y)) 95 player_left_frame = (player_left_frame + 1) % len(player_left) 96 97 elif direction == "jump": 98 window.blit(player_jump, (x,y)) 99 100 elif direction == "landing": 101 window.blit(player_landing, (x,y)) 102 103 clock.tick(15) 104 pygame.display.update() 105 106 for event in pygame.event.get(): 107 if event.type == QUIT: 108 quit = True 109 110 111if __name__ == "__main__": 112 width, height = 800, 600 113 pygame.init() 114 pygame.mixer.init() 115 window = pygame.display.set_mode((width, height)) 116 clock = pygame.time.Clock() 117 main() 118 pygame.quit()

試したこと

pygame.display.update()
の位置を変えるなどを試みましたが、うまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問