Python(Pygameで描画)

この記事は以下のサイトを参考にさせていただきました。

西住工房@技術雑記
https://algorithm.joho.info/programming/python/pygame/
Pygame 翻訳ページ
http://westplain.sakuraweb.com/translate/pygame/

【画面作成】サイズ、タイトル、背景色、テキスト、フルスクリーンの設定

import pygame
from pygame.locals import *
import sys

def main():
    pygame.init()                                             # Pygameの初期化
    screen = pygame.display.set_mode((400, 300))  # 400*300の画面
    # screen = pygame.display.set_mode((400, 300), FULLSCREEN)  # フルスクリーン(解除時は大きさ400*300の画面)
    pygame.display.set_caption("Test")                        # タイトルバーに表示する文字

    while (1):
        screen.fill((0,0,0))        # 画面を黒色(#000000)に塗りつぶし
        pygame.display.update()     # 画面を更新

        # イベント処理
        for event in pygame.event.get():
            if event.type == QUIT:  # 閉じるボタンが押されたら終了
                pygame.quit()       # Pygameの終了(画面閉じられる)
                sys.exit()


if __name__ == "__main__":
    main()

【図形描画】直線、長方形、円

import pygame
from pygame.locals import *
import sys


def main():
    pygame.init()                                               # Pygameの初期化
    screen = pygame.display.set_mode((300, 200))                # 大きさ300*200の画面を生成
    pygame.display.set_caption("GAME")                          # タイトルバーに表示する文字

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

        # (0,0)から(80,80)まで線幅5pxで緑色(R=0, G=95, B=0)の直線を描く
        pygame.draw.line(screen, (0,95,0), (0,0), (80,80), 5)   # 直線の描画

        # 左上座標(10,10)、幅80px、高さ50pxの長方形を線幅5pxの緑色(R=0, G=80, B=0)で描く
        pygame.draw.rect(screen,(0,80,0),Rect(10,10,80,50),5)   # 四角形を描画(塗りつぶしなし)
        #pygame.draw.rect(screen,(0,80,0),Rect(10,10,80,50))    # 四角形を描画(塗りつぶし)
        
        # 左上の座標が(50,50)、幅が150、高さが50の矩形に内接する楕円を線幅5pxの緑色(R=0, G=100, B=0)で描く
        pygame.draw.ellipse(screen,(0,100,0),(50,50,200,100),5) # 円を描画(塗りつぶしなし)
        #pygame.draw.ellipse(screen,(0,100,0),(50,50,200,100))     # 円を描画(塗りつぶし)
    
        pygame.display.update()                                 # 画面を更新
        # イベント処理
        for event in pygame.event.get():
            if event.type == QUIT:                              # 閉じるボタンが押されたら終了
                pygame.quit()                                   # Pygameの終了(画面閉じられる)
                sys.exit()


if __name__ == "__main__":
    main()

【画像描画】背景と主人公の表示とキー入力操作

import pygame
from pygame.locals import *
import sys

def main():
    (w,h) = (400, 400)   # 画面サイズ
    (x,y) = (200, 200)   # プレイヤー画像の初期位置(画面中央)
    pygame.init()       # pygame初期化
    pygame.display.set_mode((w, h), 0, 32)  # 画面設定
    screen = pygame.display.get_surface()
    
    # 背景画像(bg.jpg)の取得
    bg = pygame.image.load("C:\\texture\\bg.png").convert_alpha()    
    rect_bg = bg.get_rect()

    # プレイヤー画像(player.png)の取得
    player = pygame.image.load("C:\\texture\\player.png").convert_alpha()    
    rect_player = player.get_rect()
    rect_player.center = (x, y) # プレイヤー画像の初期位置

    while (1):
        # キーイベント処理(キャラクタ画像の移動)
        pressed_key = pygame.key.get_pressed()
        # 「←」キーが押されたらx座標を-5に移動
        if pressed_key[K_LEFT]:
            rect_player.move_ip(-5, 0)
        # 「→」キーが押されたらx座標を+5移動
        if pressed_key[K_RIGHT]:
            rect_player.move_ip(5, 0)
        # 「↑」キーが押されたらy座標を-5移動
        if pressed_key[K_UP]:
            rect_player.move_ip(0, -5)
        # 「↓」キーが押されたらy座標を+5移動
        if pressed_key[K_DOWN]:
            rect_player.move_ip(0, 5)
        
        pygame.display.update()             # 画面更新
        pygame.time.wait(30)                # 更新時間間隔
        screen.fill((0, 20, 0, 0))          # 画面の背景色
        screen.blit(bg, rect_bg)            # 背景画像の描画
        screen.blit(player, rect_player)    # プレイヤー画像の描画

        # 終了用のイベント処理
        for event in pygame.event.get():
            # 閉じるボタンが押されたとき
            if event.type == QUIT:          
                pygame.quit()
                sys.exit()

            # キーを押したとき
            if event.type == KEYDOWN:       
                if event.key == K_ESCAPE:   # Escキーが押されたとき
                    pygame.quit()
                    sys.exit()

if __name__ == "__main__":
        main()

ファイルパスを文字列入力する部分で¥表示部分がバックスラッシュになっている場合、無効文字判定されファイルパスを取得できないエラーが発生すると思います。

"C:\\texture\\bg.png"

このように無効文字を重ねて無効文字の無効化が必要になるので注意しましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Python

前の記事

Python(再帰recursion)