BETA

pygameでお手軽ゲーム開発

投稿日:2020-04-15
最終更新:2020-04-17

矢印キーでケーキを取るゲームを作った

初めてゲームを作ってみた!
プレイヤーを矢印キーで操作してカップケーキを取りに行くゲームです

カップケーキのマスに行くと左上のスコアが加算、カップケーキは他のマスに移動
ゲーム開始から20秒後にスコアを表示して終了

背景画像はこちら

プレイヤー、カップケーキは「いらすとや」からダウンロードしました

import pygame  
from pygame.locals import *  
import sys  
from collections import namedtuple  
import time  

def main():  
    # 画面サイズ  
    screen_size = namedtuple('screen_size', 'width height')  
    screen_size = screen_size(width=300, height=400)  

    # スコアの位置  
    pos_score = [10, 10]  

    # プレイヤーの位置  
    pos_player = [150, 345]  

    # ケーキの位置  
    pos_cake = [250, 50]  

    pygame.init()  

    # 既定のウィンドウ、32bit  
    pygame.display.set_mode(screen_size, 0, 32)  
    pygame.display.set_caption('cupcake')  
    screen = pygame.display.get_surface()  

    # 背景画像  
    bg = pygame.image.load('board.png').convert_alpha()  
    # 透過度  
    rect_bg = bg.get_rect()  

    # スコア  
    score = 0  

    # プレイヤー  
    player = pygame.image.load('valentinesday_heart_girl.png').convert_alpha()  
    rect_player = player.get_rect()  
    rect_player.center = pos_player  

    # カップケーキ  
    cake = pygame.image.load('sweets_cupcake.png').convert_alpha()  
    rect_cake = cake.get_rect()  
    rect_cake.center = pos_cake#   

    # タイマースタート  
    start_time = time.time()  

    while(1):  
        # プレイヤーの移動  
        pressed_key = pygame.key.get_pressed()  
        # ←  
        if pressed_key[K_LEFT]:  
            pos_player[0] -= 100  
        # →  
        if pressed_key[K_RIGHT]:  
            pos_player[0] += 100  

        # ↑  
        if pressed_key[K_UP]:  
            pos_player[1] -= 100  

        # ↓  
        if pressed_key[K_DOWN]:  
            pos_player[1] += 100  

        # 画面の端だったら動かない  
        if pos_player[0] < 10:  
            pos_player[0] += 100  

        if pos_player[0] > 250:  
            pos_player[0] -= 100  

        if pos_player[1] < 10:  
            pos_player[1] += 100  

        if pos_player[1] > 350:  
            pos_player[1] -= 100  

        rect_player.center = pos_player  

        # プレイヤーがケーキにたどり着いたらケーキは移動  
        if rect_player.colliderect(rect_cake):  

            # スコア加点  
            score += 100  
            pos_cake[0] += 100  
            pos_cake[1] -= 100  

            # 画面の端だったら反対側に移動  
            pos_cake[0] = pos_cake[0] % 300  
            pos_cake[1] = pos_cake[1] % 400  
            rect_cake.center = pos_cake  

        # 画面更新間隔  
        pygame.time.wait(100)  

        screen.fill((0, 0, 0, 0))  
        # 背景描画  
        screen.blit(bg, rect_bg)  
        # スコア描画  
        sysfont = pygame.font.SysFont(None, 20)  
        rect_score = sysfont.render('SCORE:' + str(score), True, (160,100,65))  
        screen.blit(rect_score, pos_score)  
        # ケーキ描画  
        screen.blit(cake, rect_cake)  
        # プレイヤー描画  
        screen.blit(player, rect_player)  

        # タイムアウト  
        current_time = time.time()  
        if (current_time - start_time) >= 20:  
            start_flg = False  
            pos_msg = [50, 150]  
            font_msg = pygame.font.SysFont(None, 50)  
            rect_msg = font_msg.render('SCORE:' + str(score), True, (160,100,65))  

            screen.fill((255, 250, 165, 0))  
            screen.blit(rect_msg, pos_msg)  

        pygame.display.update()  

        for event in pygame.event.get():  
            # 閉じるボタン押下  
            if event.type == QUIT:  
                pygame.quit()  
                sys.exit()  

if __name__ == '__main__':  
    main()  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

だいたい急に挑戦してゴールにたどり着かずに飽きる日々です

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう