ใ€Pygameใ€‘ใƒžใ‚ฆใ‚นใ‚ฏใƒชใƒƒใ‚ฏใงใƒ—ใƒฌใ‚คใƒคใƒผใ‚’็งปๅ‹•(้•ทๆŠผใ—ๅฏพๅฟœ็‰ˆ)

Pygameใ‚’็”จใ„ใฆใ€ใƒžใ‚ฆใ‚นใ‚ฏใƒชใƒƒใ‚ฏ(้•ทๆŠผใ—)ใงใ‚ญใƒฃใƒฉใ‚ฏใ‚ฟใƒผใ‚’็งปๅ‹•ใ™ใ‚‹ๆ–นๆณ•ใจใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใ‚’่งฃ่ชฌใ—ใพใ™ใ€‚

ใƒžใ‚ฆใ‚นใ‚ฏใƒชใƒƒใ‚ฏใงใƒ—ใƒฌใ‚คใƒคใƒผใ‚’็งปๅ‹•(้•ทๆŠผใ—ๅฏพๅฟœ็‰ˆ)

Pygameใงใฏใ€Œpygame.mouse.get_pressed()ใƒกใ‚ฝใƒƒใƒ‰ใ€ใงใƒžใ‚ฆใ‚นใ‚ฏใƒชใƒƒใ‚ฏใฎใ‚คใƒ™ใƒณใƒˆๅ‡ฆ็†ใ‚’ๅ–ๅพ—ใ—ใ€ใ€Œpygame.mouse.get_posใ€ใงใƒžใ‚ฆใ‚นใ‚ฏใƒชใƒƒใ‚ฏใ—ใŸใจใใฎๅบงๆจ™ใ‚’ๅ–ๅพ—ใงใใพใ™ใ€‚
ไปŠๅ›žใฏใ“ใ‚Œใ‚‰ใ‚’็”จใ„ใฆใ€ใƒžใ‚ฆใ‚นใงๅทฆใ‚ฏใƒชใƒƒใ‚ฏใ—ใŸไฝ็ฝฎใซใƒ—ใƒฌใ‚คใƒคใƒผใ‚’็งปๅ‹•ใ•ใ›ใพใ™ใ€‚ใพใŸใ€ๅทฆใ‚ฏใƒชใƒƒใ‚ฏใƒœใ‚ฟใƒณใ‚’ๆŠผใ—็ถšใ‘ใŸใจใใซใƒ—ใƒฌใ‚คใƒคใƒผใ‚‚็งปๅ‹•ใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

ๅ‹•็”ป่งฃ่ชฌ

ๆœฌใƒšใƒผใ‚ธใฎๅ†…ๅฎนใฏไปฅไธ‹ๅ‹•็”ปใง่งฃ่ชฌใ—ใฆใ„ใพใ™ใ€‚

ใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰

ใ‚ตใƒณใƒ—ใƒซใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใงใ™ใ€‚


ใ‚ณใƒผใƒ‰่งฃ่ชฌ

ไธŠ่จ˜ใ‚ณใƒผใƒ‰ใฎๅ„้ƒจๅˆ†ใซใคใ„ใฆ่งฃ่ชฌใ‚’ใ—ใพใ™ใ€‚

ใ‚คใƒณใƒใƒผใƒˆใจๅฎšๆ•ฐใฎๅฎš็พฉ

import sys
import pygame
from pygame.locals import *
  • ใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎ็ต‚ไบ†sys.exit()ใ‚’่กŒใ„ใŸใ„ใฎใงใ€sysใƒขใ‚ธใƒฅใƒผใƒซใ‚’ใ‚คใƒณใƒใƒผใƒˆใ—ใพใ™ใ€‚
  • pygameใ‚’ใ‚คใƒณใƒใƒผใƒˆใ—ใพใ™ใ€‚
  • pygame.localsใ‹ใ‚‰ใฏใ€Pygameใงไฝฟ็”จใ™ใ‚‹ๅฎšๆ•ฐใ‚’ใ‚คใƒณใƒใƒผใƒˆใ—ใพใ™ใ€‚
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 378
PLAYER_IMG_PATH = "/Users/github/sample/python/pygame/tutorial/player.png"
BACKGROUND_IMG_PATH = "/Users/github/sample/python/pygame/tutorial/background.png"
  • SCREEN_WIDTHใจSCREEN_HEIGHTใฏใ€ใ‚ฒใƒผใƒ ็”ป้ขใฎๅน…ใจ้ซ˜ใ•ใ‚’ๅฎš็พฉใ—ใฆใ„ใพใ™ใ€‚
  • PLAYER_IMG_PATHใจBACKGROUND_IMG_PATHใฏใ€ใƒ—ใƒฌใ‚คใƒคใƒผใจ่ƒŒๆ™ฏใฎ็”ปๅƒใƒ•ใ‚กใ‚คใƒซใฎใƒ‘ใ‚นใงใ™ใ€‚

ใƒกใ‚คใƒณ้–ขๆ•ฐ

def main():
    pygame.init()
    pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))  
    screen = pygame.display.get_surface()
  • pygame.init()ใฏใ€PygameใฎๅˆๆœŸๅŒ–ใ‚’่กŒใ„ใพใ™ใ€‚
  • pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))ใฏใ€ๆŒ‡ๅฎšใ—ใŸใ‚ตใ‚คใ‚บใฎใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใ‚’ไฝœๆˆใ—ใพใ™ใ€‚
  • pygame.display.get_surface()ใฏใ€ๆ็”ปๅฏพ่ฑกใฎใ‚ตใƒผใƒ•ใ‚งใ‚นใ‚’ๅ–ๅพ—ใ—ใพใ™ใ€‚

็”ปๅƒใฎ่ชญใฟ่พผใฟใจๅˆๆœŸ่จญๅฎš

    bg = pygame.image.load(BACKGROUND_IMG_PATH).convert_alpha()
    bg_rect = bg.get_rect()
    player = pygame.image.load(PLAYER_IMG_PATH).convert_alpha()
    player_rect = player.get_rect()
    player_rect.center = (330, 300)
  • pygame.image.load()ใง็”ปๅƒใ‚’่ชญใฟ่พผใฟใ€convert_alpha()ใง้€ๆ˜Žๅบฆใ‚’ๆ‰ฑใˆใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚
  • get_rect()ใง็”ปๅƒใฎ็Ÿฉๅฝข๏ผˆไฝ็ฝฎใจใ‚ตใ‚คใ‚บ๏ผ‰ใ‚’ๅ–ๅพ—ใ—ใพใ™ใ€‚
  • player_rect.centerใงใƒ—ใƒฌใ‚คใƒคใƒผใฎๅˆๆœŸไฝ็ฝฎใ‚’่จญๅฎšใ—ใพใ™ใ€‚

ใƒกใ‚คใƒณใƒซใƒผใƒ—

    running = True  # ใƒซใƒผใƒ—ๅ‡ฆ็†ใฎๅฎŸ่กŒใ‚’็ถ™็ถšใ™ใ‚‹ใƒ•ใƒฉใ‚ฐ

    while running:
        pygame.display.update()  
        pygame.time.wait(30)
        screen.fill((0, 0, 0, 0))
  • pygame.display.update()ใง็”ป้ขใ‚’ๆ›ดๆ–ฐใ—ใพใ™ใ€‚
  • pygame.time.wait(30)ใง30ใƒŸใƒช็ง’ๅพ…ๆฉŸใ—ใพใ™ใ€‚
  • screen.fill((0, 0, 0, 0))ใง็”ป้ขใ‚’ใ‚ฏใƒชใ‚ขใ—ใพใ™ใ€‚

ใƒžใ‚ฆใ‚นใ‚ฏใƒชใƒƒใ‚ฏใ‚คใƒ™ใƒณใƒˆใฎๅ‡ฆ็†

mouse_pressed = pygame.mouse.get_pressed()
if mouse_pressed[0]:
    player_rect.center = pygame.mouse.get_pos()
  • pygame.mouse.get_pressed()๏ผšใƒžใ‚ฆใ‚นใƒœใ‚ฟใƒณใฎ็Šถๆ…‹ใ‚’ๅ–ๅพ—ใ€‚
  • ๅทฆใ‚ฏใƒชใƒƒใ‚ฏใŒๆŠผใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใ€ใƒ—ใƒฌใ‚คใƒคใƒผใฎไฝ็ฝฎใ‚’ใƒžใ‚ฆใ‚นใฎไฝ็ฝฎใซๆ›ดๆ–ฐใ€‚

ใƒ—ใƒฌใ‚คใƒคใƒผใฎ็ฏ„ๅ›ฒๅˆถ้™

        # ๅทฆ็ซฏใฎxๅบงๆจ™ใŒ0ใ‚ˆใ‚Šๅฐใ•ใ‘ใ‚Œใฐ0ใซใ™ใ‚‹ 
        if player_rect.left < 0:
            player_rect.left = 0
        # ๅณ็ซฏใฎxๅบงๆจ™ใŒ็”ป้ขใฎๅน…ใ‚ˆใ‚Šๅคงใใ‘ใ‚Œใฐ็”ป้ขๅทฆ็ซฏใพใงใซใ™ใ‚‹
        if player_rect.right > SCREEN_WIDTH:
            player_rect.right = SCREEN_WIDTH
        # ไธŠ็ซฏใฎyๅบงๆจ™ใŒ0ใ‚ˆใ‚Šๅฐใ•ใ‘ใ‚Œใฐ0ใซใ™ใ‚‹ 
        if player_rect.top < 0:
            player_rect.top = 0
        # ไธ‹็ซฏใฎyๅบงๆจ™ใŒ็”ป้ขใฎ้ซ˜ใ•ใ‚ˆใ‚Šๅคงใใ‘ใ‚Œใฐ็”ป้ขไธ‹็ซฏใพใงใซใ™ใ‚‹
        if player_rect.bottom > SCREEN_HEIGHT:
            player_rect.bottom = SCREEN_HEIGHT 
  • ใƒ—ใƒฌใ‚คใƒคใƒผใŒ็”ป้ขๅค–ใซๅ‡บใชใ„ใ‚ˆใ†ใซใ€ไฝ็ฝฎ๏ผˆไธญๅฟƒๅบงๆจ™๏ผ‰ใ‚’ๅˆถ้™ใ—ใฆใ„ใพใ™ใ€‚

็”ปๅƒใฎๆ็”ป

        screen.blit(bg, bg_rect)
        screen.blit(player, player_rect)
  • screen.blit()ใง่ƒŒๆ™ฏใจใƒ—ใƒฌใ‚คใƒคใƒผใฎ็”ปๅƒใ‚’ใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใซๆ็”ปใ—ใพใ™ใ€‚

ใ‚คใƒ™ใƒณใƒˆๅ‡ฆ็†

for event in pygame.event.get():
    if event.type == QUIT:
        running = False
    if event.type == KEYDOWN:
        if event.key == K_ESCAPE:
            running = False
  • QUITใ‚คใƒ™ใƒณใƒˆใงใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใ‚’้–‰ใ˜ใ‚‹ใจwhileๆ–‡ใ‚’ๆŠœใ‘ใฆใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’็ต‚ไบ†ใ—ใพใ™ใ€‚
  • KEYDOWNใ‚คใƒ™ใƒณใƒˆใงใ‚ญใƒผใŒๆŠผใ•ใ‚ŒใŸใจใใฎๅ‡ฆ็†ใ‚’่กŒใ„ใพใ™ใ€‚Escใ‚ญใƒผใŒๆŠผใ•ใ‚ŒใŸใ‚‰whileๆ–‡ใ‚’ๆŠœใ‘ใฆใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’็ต‚ไบ†ใ—ใพใ™ใ€‚

Pygameใจใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎๅฎŸ่กŒใ‚’็ต‚ไบ†

    pygame.quit()
    sys.exit()
  • whileๆ–‡ใ‚’ๆŠœใ‘ใŸใ‚‰ใ€ใ“ใฎ้ƒจๅˆ†ใงPygameใจใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎๅฎŸ่กŒใ‚’็ต‚ไบ†ใ—ใพใ™ใ€‚

ใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎใ‚จใƒณใƒˆใƒชใƒผใƒใ‚คใƒณใƒˆ

if __name__ == "__main__":
    main()
  • ใ“ใฎ้ƒจๅˆ†ใงใ€ใ‚นใ‚ฏใƒชใƒ—ใƒˆใŒ็›ดๆŽฅๅฎŸ่กŒใ•ใ‚ŒใŸๅ ดๅˆใซmain()้–ขๆ•ฐใ‚’ๅ‘ผใณๅ‡บใ—ใพใ™ใ€‚

้–ข้€ฃใƒšใƒผใ‚ธ

Pygameใฎไฝฟใ„ๆ–นใซใคใ„ใฆใฏไปฅไธ‹ใƒšใƒผใ‚ธใง่งฃ่ชฌใ—ใฆใ„ใพใ™ใ€‚

ใ€Pygame่ถ…ๅ…ฅ้–€ใ€‘ไฝฟใ„ๆ–นใจใ‚ตใƒณใƒ—ใƒซใ‚ฒใƒผใƒ ใ‚’่งฃ่ชฌ
Pygameใง2Dใ‚ฒใƒผใƒ ใ‚’็ฐกๅ˜ใซๅˆถไฝœใ™ใ‚‹ๆ–นๆณ•ใ‚’ๅ…ฅ้–€่€…ๅ‘ใ‘ใซ่งฃ่ชฌใ—ใพใ™ใ€‚

Pythonๅ…จ่ˆฌใซใคใ„ใฆใฏไปฅไธ‹ใƒšใƒผใ‚ธใง่งฃ่ชฌใ—ใฆใ„ใพใ™ใ€‚

ใ€Python่ถ…ๅ…ฅ้–€ใ€‘ไฝฟใ„ๆ–นใจใ‚ตใƒณใƒ—ใƒซ้›†
Pythonใฎไฝฟใ„ๆ–นใซใคใ„ใฆใ€ๅŸบ็คŽๆ–‡ๆณ•ใ‹ใ‚‰ๅฟœ็”จไพ‹ใพใงๅ…ฅ้–€่€…ๅ‘ใ‘ใซ่งฃ่ชฌใ—ใพใ™ใ€‚
ใ“ใฎ่จ˜ไบ‹ใ‚’ๆ›ธใ„ใŸไบบ
่ฅฟไฝๆŠ€็ ”

Pythonไฝฟ็”จๆญด10ๅนดไปฅไธŠใ€‚็ ”็ฉถใ€ไป•ไบ‹ใ€่ถฃๅ‘ณใงใƒ‡ใƒผใ‚ฟๅˆ†ๆžใ‚„ไฝœๆฅญ่‡ชๅ‹•ๅŒ–ใชใฉใซๆดป็”จใ—ใฆใใŸใƒŽใ‚ฆใƒใ‚ฆใ‚’ๆƒ…ๅ ฑ็™บไฟกใ—ใฆใ„ใพใ™ใ€‚
่ฉณใ—ใ„ใƒ—ใƒญใƒ•ใ‚ฃใƒผใƒซใ‚„ใŠๅ•ๅˆใ›ใฏใ“ใกใ‚‰ใฎใƒšใƒผใ‚ธใพใงใ€‚
โ‡“Youtubeใ‚„X๏ผˆๆ—งTwitter๏ผ‰ใงใ‚‚ๆƒ…ๅ ฑ็™บไฟกไธญใงใ™๏ผ

่ฅฟไฝๆŠ€็ ”ใ‚’ใƒ•ใ‚ฉใƒญใƒผใ™ใ‚‹
PyGame

ใ‚ณใƒกใƒณใƒˆ