壁のあたり判定をつけたいのですがflgだけ確認でき、値が代入されません。
解決方法、こうしたほうがいい点ありましたらお願いします
python
1import pygame 2from pygame.locals import * 3import sys 4import os 5SCR_HEIGHT = 480.0 6SCR_WIDTH = 640.0 7SCR_RECT = (int(SCR_WIDTH), int(SCR_HEIGHT)) 8 9PLAYER_IMG = [[0 for i in range(3)] for j in range(4)] 10IMG_NAME = ["player_down","player_left","player_right","player_up"] 11 12class test_play: 13 def __init__(self): 14 pygame.init() 15 screen = pygame.display.set_mode(SCR_RECT) 16 pygame.display.set_caption("テスト画面") 17 18 #画像 19 for j in range(4): 20 for i in range(3): 21 PLAYER_IMG[j][i] = pygame.image.load("image/"+IMG_NAME[j]+"_"+str(i)+".png").convert_alpha() 22 print("image/"+IMG_NAME[j]+"_"+str(i)+".png==>success") 23 #グループ作成 24 self.all = pygame.sprite.RenderUpdates() 25 Player.containers = self.all 26 Player() 27 clock = pygame.time.Clock() 28 while True: 29 clock.tick(60) 30 self.update() 31 self.draw(screen) 32 pygame.display.update() 33 self.key_handl() 34 35 def key_handl(self): 36 for event in pygame.event.get(): 37 if event.type == QUIT: 38 pygame.quit() 39 sys.exit() 40 if event.type == KEYDOWN: 41 if event.key == K_ESCAPE: 42 pygame.quit() 43 sys.exit() 44 def update(self): 45 self.all.update() 46 def draw(self, screen): 47 screen.fill((0,0,0)) 48 self.all.draw(screen) 49 50class Player(pygame.sprite.Sprite): 51 MOVE_SPEED = 5.0 52 53 def __init__(self): 54 pygame.sprite.Sprite.__init__(self, self.containers) 55 self.image = PLAYER_IMG[0][0] 56 self.rect = self.image.get_rect() 57 #小数点 58 self.x = float(self.rect.x) 59 self.y = float(self.rect.y) 60 self.move_x = 0.0 61 self.move_y = 0.0 62 self.walk = 0 63 64 def update(self): 65 key_handl = pygame.key.get_pressed() 66 print(self.rect) 67 #アクション 68 if key_handl[K_LEFT]: 69 self.image = PLAYER_IMG[1][int(self.walk)] 70 self.move_x = -self.MOVE_SPEED 71 elif key_handl[K_RIGHT]: 72 self.image = PLAYER_IMG[2][int(self.walk)] 73 self.move_x = self.MOVE_SPEED 74 else: 75 self.move_x = 0.0 76 if key_handl[K_UP]: 77 self.image = PLAYER_IMG[3][int(self.walk)] 78 self.move_y = -self.MOVE_SPEED 79 elif key_handl[K_DOWN]: 80 self.image = PLAYER_IMG[0][int(self.walk)] 81 self.move_y = self.MOVE_SPEED 82 83 else: 84 self.move_y = 0.0 85 86 if self.walk < 2: 87 self.walk += 0.2 88 else: 89 self.walk = 0 90 91 if self.rect.x < 0: 92 print("flg") 93 self.rect.x = 0.0 94 elif self.rect.x > SCR_WIDTH: 95 self.rect.x = SCR_WIDTH 96 if self.rect.y < 0: 97 self.rect.y = 0.0 98 elif self.rect.y > SCR_HEIGHT: 99 self.rect.y = SCR_HEIGHT 100 self.x += self.move_x 101 self.y += self.move_y 102 #intへ整形 103 self.rect.x = int(self.x) 104 self.rect.y = int(self.y) 105 106 107 108if __name__ == "__main__": 109 test_play()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。