一枚の画像を分割して配列に登録、それぞれに位置と移動の情報を持たせて
移動させてみました。速度的には充分です。
5時間目はマウス、6時間目はジョイステックの雛形を動かしただけなので割愛です。
実際このプログラム1時間かといわれるともっとかかっているはずです。
こんなのが高速に移動します。
素材画像はプチコンのもので著作権はスマイルブームにあります。
ので掲載していません。
<参考文献>
Pythonゲームプログラミング #2 画像表示
python 配列基礎はこれで完璧!便利なメソッド多数紹介
移動させてみました。速度的には充分です。
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 配列基礎はこれで完璧!便利なメソッド多数紹介