矢印キーでケーキを取るゲームを作った
初めてゲームを作ってみた! プレイヤーを矢印キーで操作してカップケーキを取りに行くゲームです
カップケーキのマスに行くと左上のスコアが加算、カップケーキは他のマスに移動 ゲーム開始から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()