パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

pythonゲームコーディング7時間目 画像を部分抽出してゴチャキャラ移動

2017-08-12 | pygame
一枚の画像を分割して配列に登録、それぞれに位置と移動の情報を持たせて
移動させてみました。速度的には充分です。
5時間目はマウス、6時間目はジョイステックの雛形を動かしただけなので割愛です。

実際このプログラム1時間かといわれるともっとかかっているはずです。

import sys
import pygame
import random

pygame.init()
window_size = (600, 600)
bg_color = (0, 0, 0)
clock = pygame.time.Clock()
screen = pygame.display.set_mode(window_size)
img_char = pygame.image.load('sp.png')

spimg = []
spx = []
spy = []
sdx = []
sdy = []

def spset():
    for y in range(15):
        for x in range(15):
            temp = pygame.Surface((15, 15))  # , pygame.SRCALPA)
            temp.blit(img_char, (0, 0), (x * 15, y * 15, 15, 15))
            spimg.append(temp)
            spx.append(random.randrange(0, 585))
            spy.append(random.randrange(0, 585))
            sdx.append(random.randrange(-5, 5))
            sdy.append(random.randrange(-5, 5))

def spmove():
   for n in range(225):
        if spx[n] + sdx[n] > 585:
            sdx[n] = -sdx[n]
        if spx[n] + sdx[n] < 0:
            sdx[n] = -sdx[n]
        if spy[n] + sdy[n] > 585:
            sdy[n] = -sdy[n]
        if spy[n] + sdy[n] < 0:
            sdy[n] = -sdy[n]
        spx[n]=spx[n]+sdx[n]
        spy[n]=spy[n]+sdy[n]

def spwrite():
   for n in range(225):
       screen.blit(spimg[n], (spx[n], spy[n]))

spset()
print(len(spimg))

end_game = False
while not end_game:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            end_game = True

    screen.fill(bg_color)
    spmove()
    spwrite()

    pygame.display.flip()
    #clock.tick(20)
sys.exit(0)



こんなのが高速に移動します。

素材画像はプチコンのもので著作権はスマイルブームにあります。
ので掲載していません。

<参考文献>
Pythonゲームプログラミング #2 画像表示
python 配列基礎はこれで完璧!便利なメソッド多数紹介

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。