プログラミング言語「Python」で制作 Part115 | Photoshop CC Tutorials

今回はプログラミング言語の「Python」を使って作成しました。

 

下記の本のサンプルを改造して揺れ動くようにしました。

 

■ プログラム

import traceback
 
try:
    import sys
    from math import pi, sin, floor
    import math
    import pygame
    from pygame.locals import QUIT

    pygame.init()
    SURFACE = pygame.display.set_mode((250, 250))
    FPSCLOCK = pygame.time.Clock()

    angle = 0
    def process_pixels(src_data, dst_data):
        global angle

        """ process pixels """
        waves = 4
        radius = 10
        angle += 10
        sinValue = math.sin(math.radians(angle))
        wave_freq = (waves * pi * 2) / 250
        for xpos in range(250):
            y_offset = floor(sin(xpos * wave_freq) * radius * sinValue)
            
            for ypos in range(250):
                if 0 <= ypos + y_offset < 250:
                    val = src_data[xpos][ypos + y_offset]
                    rval, gval, bval, _ = SURFACE.unmap_rgb(val)
                    dst_data[xpos][ypos] = (rval, gval, bval)

    def main():
        """ main routine """
        src = pygame.image.load("picture0.jpg").convert()
        dst = pygame.Surface((250, 250), 0, SURFACE)
        src_data = pygame.PixelArray(src)
        dst_data = pygame.PixelArray(dst)
        
        while True:
            for _ in pygame.event.get(QUIT):
                pygame.quit()
                sys.exit()

            src_data = pygame.PixelArray(src)
            dst_data = pygame.PixelArray(dst)
            process_pixels(src_data, dst_data)
            del src_data
            del dst_data

            SURFACE.blit(dst, (0, 0))
            pygame.display.update()
            FPSCLOCK.tick(30)

    if __name__ == '__main__':
        main()

except Exception as e:
    print("エラー情報\n" + traceback.format_exc())

input()

 

■ 参考書

「Pythonゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing))」

 

 

■ ゲーム用ライブラリ

「Pygame」

 

■ プログラミング言語

「Python」