実現したいこと
画像を3つ読み込んでおり、それらを上下左右・スペースキーで動かしたいです
前提
Pygameを独学中です。
ネットやテキストからのいろんなサンプルコードを
自分なりに書き直したりして学習をしています。
今回はもともとはmainループに入っていたコードを
def move_charaとして関数にしようともくろんでいます。
画像の表示はできましたがキーを押しても動かないので
どこが間違っているかご指摘いただけるとありがたいです。
どうぞよろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージは表示されません。
該当のソースコード
import pygame from pygame.locals import * import sys #画像の読み込み im_1 = pygame.image.load('resize_cat_exotic_shorthair.png') im_2 = pygame.image.load("re_cheshire_neko.png") im_3 = pygame.image.load("re_mouse.png") #各種初期値を設定 flg_turn = False last_key = pygame.K_LEFT jump_status = 0 jump_timer = 0 jump_up = 0 #固定値を設定 SURFACE_WIDTH = 1200 SURFACE_HEIGHT = 676 def chara_move(key): global last_key, flg_turn, jump_status, jump_up if key[pygame.K_LEFT] == 1: px -= 20 if px <0: px = 1200 if last_key == pygame.K_RIGHT: flg_turn =True last_key = pygame.K_LEFT if key[pygame.K_RIGHT] == 1: px += 20 if px > 1200: px = 0 if last_key == pygame.K_LEFT: flg_turn = True last_key = pygame.K_RIGHT if kye[pygame.K_DOWN] == 1: py += 20 if py > 676: py = 0 if last_key == pygame.K_SPACE: flg_turn = True last_key = pygame.K_DOWN if key[pygame.K_SPACE] and jump_status < 2: jump_status = 1 jump_up += 2 if jump_up < 16: jump_up = 16 elif jump_up > 36: jump_up = 36 if key[pygame.K_SPACE] == 0 and jump_status == 1: jump_status = 2 if jump_status == 2: py -= jump_up jump_up -= 1 if py > 500: py = 500 jump_status = 0 if jump_status == 0: surface.blit(im_1, (px, py)) elif jump_status == 1: surface.blit(im_2, (px, py)) elif jump_status == 2: surface.blit(im_3, (px, py)) def main(): global im_1, im_2, im_3, flg_turn pygame.init() pygame.display.set_caption("画像表示と動き") pygame.display.set_mode((SURFACE_WIDTH, SURFACE_HEIGHT), 0, 32) surface = pygame.display.get_surface() clock = pygame.time.Clock() while(1): for event in pygame.event.get(): if event.type ==QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: pygame.quit() sys.exit() pygame.display.update() surface.fill((224,255,255)) rect_1 = im_1.get_rect() rect_2 = im_2.get_rect() rect_3 = im_3.get_rect() surface.blit(im_1, (SURFACE_WIDTH / 4, SURFACE_HEIGHT / 2)) surface.blit(im_2, (SURFACE_WIDTH / 2, SURFACE_HEIGHT / 2)) surface.blit(im_3, (SURFACE_WIDTH / 3, SURFACE_HEIGHT / 8)) if flg_turn == True: im_1 = pygame.transform.flip(im_1, True, False) elif flg_turn == True: im_2 = pygame.transform.flip(im_2, True, False) flg_turn = False elif flg_turn == True: im_3 == pygame.trasnform.flip(im_3, True, False) flg_turn = False pygame.display.update() clock.tick(10) if __name__ == "__main__": main()
試したこと
①元コードを参照
②似た挙動をするpygameコードを参照
mainループ内ではなくキャラ画像だけ動かす関数を使っているプログラムもあったので
そのほうが見やすいと思い、参照していた①を書き換える作業をしていますが行き詰りました
補足情報(FW/ツールのバージョンなど)
OS: Windows 10
Python : 3.10.5
IDLEを使って書いています

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/10 08:11