実現したいこと
当たり判定から、落ちてくるリンゴをかごで受け止めたときに消したい
前提
Pygameでランダムに落ちてくる林檎をかごで受け止めるゲームのプログラムを作っています。
発生している問題・エラーメッセージ
エラーはありません。
該当のソースコード
Pygame
1import pygame 2import sys 3import random 4 5pygame.init() 6# 画面のサイズ 7WIDTH, HEIGHT = 800, 600 8screen = pygame.display.set_mode((WIDTH, HEIGHT)) 9pygame.display.set_caption("ランダムなリンゴが落ちるプログラム") 10 11# リンゴの初期位置 12apples = [] 13apple_speed = 5 14# かごの初期位置 15basket_x, basket_y = WIDTH//2, HEIGHT-50 16basket_speed = 10 # かごの移動速度 17# ゲームループ 18while True: 19 for event in pygame.event.get(): 20 if event.type == pygame.QUIT: 21 pygame.quit() 22 sys.exit() 23 24 # ランダムな位置にリンゴを追加 25 if random.random() < 0.02: # 2%の確率でリンゴを追加 26 apple_x = random.randint(0, WIDTH) 27 apples.append((apple_x, 0)) 28 29 # リンゴを下に移動 30 new_apples = [] 31 for apple_x, apple_y in apples: 32 apple_y += apple_speed 33 new_apples.append((apple_x, apple_y)) 34 apples = new_apples 35 # かごを左右に移動 36 keys = pygame.key.get_pressed() 37 if keys[pygame.K_LEFT]: 38 basket_x -= basket_speed 39 if keys[pygame.K_RIGHT]: 40 basket_x += basket_speed 41 42 # リンゴの座標(仮の値) 43 apple_x, apple_y = WIDTH//2, 100 44 45 apple_rect = pygame.Rect(apple_x, apple_y, 20, 20) 46 basket_rect = pygame.Rect(basket_x, basket_y, 50, 20) 47 48 if apple_rect.colliderect(basket_rect): 49 apple_x, apple_y = -100, -100 50 51 # 画面をクリア 52 screen.fill((255, 255, 255)) 53 54 # リンゴを描画 55 for apple_x, apple_y in apples: 56 pygame.draw.circle(screen, (255, 0, 0), (apple_x, int(apple_y)), 20) 57 # かごを描画 58 pygame.draw.rect(screen, (0, 0, 255), pygame.Rect(basket_x, basket_y, 50, 20)) 59 60 pygame.display.flip() 61 pygame.time.Clock().tick(60)
試したこと
リンゴの●とかごの■の当たり判定を書いてみたのですが、籠をすりぬけて、消えてくれません。kill()ではリンゴが、ウィンドウから消えないようです。マイナス(-)もしたけどダメでした。
補足情報(FW/ツールのバージョンなど)
Pygame2.1.2(Python3.10.4)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/02/21 09:18