とりあたまの日々

アニメ、マンガ、その他趣味について書きます。

かわいそうですが

久しぶりにPythonに触れて、はじめてPygameを使用してゲームのようなものを作成してみた。

f:id:chik08:20210627152623g:plain

現れた熊を倒すゲーム。狙撃するとクリアとなる。

import pygame
from pygame.locals import *
import sys

# イベント処理
def kumaEvent():
   soundKenju = pygame.mixer.Sound("music/拳銃を撃つ.mp3")   #効果音の設定
   soundSogeki = pygame.mixer.Sound("music/狙撃銃発射.mp3")   #効果音の設定
   for event in pygame.event.get():
       # キーを押したとき
       if event.type == KEYDOWN:
          # Xキーで拳銃
          if event.key == K_x:
              soundKenju.play()
          # Yキーで狙撃
          if event.key == K_y:
              soundSogeki.play()
              return 1

def main():
    gamescene = 0
    pygame.init()                                   # Pygameの初期化
    screen = pygame.display.set_mode((800, 600))    # 大きさ800*600の画面を生成
    pygame.display.set_caption("Test")              # タイトルバーに表示する文字
    font = pygame.font.Font(None, 75)               # フォントの設定(75px)

    # くま画像の取得
    kuma = pygame.image.load("images/animal_kowai_kuma.png").convert_alpha()
    rect_kuma = kuma.get_rect()
    rect_kuma.center = (410, 280) # 画像の初期位置

    # 背景画像の取得
    bg = pygame.image.load("images/128423758641716219145_BG32a.jpg").convert_alpha()
    rect_bg = bg.get_rect()

    while gamescene == 0:
        screen.fill((0,0,0))  # 画面を黒色に塗りつぶし

        textTitle = font.render("The Bear", True, (255,255,255))   # 描画する文字列の設定
        screen.blit(textTitle, [220, 140])# 文字列の表示位置
        textStart = font.render("PUSH SPACE", True, (255,255,255))   # 描画する文字列の設定
        screen.blit(textStart, [220, 370])# 文字列の表示位置
        pygame.display.update()     # 画面を更新

        for event in pygame.event.get():
          # キーを押したとき
          if event.type == KEYDOWN:
              # SPACEキーでメイン画面
              if event.key == K_SPACE:
                  gamescene = 1

    while gamescene == 1:
        screen.blit(bg, rect_bg)    # 背景画像の描画
        screen.blit(kuma, rect_kuma)    # くま画像の描画
        pygame.display.update()     # 画面を更新

        clear = kumaEvent()
        if clear == 1:
            gamescene = 2

    while gamescene == 2:
        screen.fill((0,0,0))  # 画面を黒色に塗りつぶし

        textClear = font.render("Clear!", True, (255,255,255))   # 描画する文字列の設定
        screen.blit(textClear, [300, 280])# 文字列の表示位置
        pygame.display.update()     # 画面を更新

        for event in pygame.event.get():
           # 閉じるボタンが押されたら終了
           if event.type == QUIT:
               pygame.quit()
               sys.exit()

if __name__ == "__main__":
    main()


画像、効果音素材は以下から取得した。
・いらすとや
・きまぐれアフター
・効果音ラボ

思いのほか画面遷移の実装に苦戦した。また、Pythonの文法をすっかり忘れていたため、エラー対処に時間を費やした。

作り終わって気付いたのだが、以前(やればできるかね - とりあたまの日々)作成したような動きのあるものではないため、立ち絵のみで何とも面白味のないものになった。

最近はGo言語に触れている。しかしながら、Pythonも改めて時間があるときに勉強しようと思った。