Pygameの勉強 *キャラクターアニメーションの巻き*
とことんサボりました・・・
まっ小さな事は気にスンナそれワカチコ♪ワカチコ〜〜〜〜〜〜〜^^
でっ今日は(笑)RPGでよく見るキャラクターの足踏みをどうすれば実現できるか。これを勉強します。Pythonでゲームつくりますが何か?こちらのサイトを参考に勉強しています。
まっコードはほぼコピペな感じになってますけど、「創造は真似ることから始まる」って誰かが言ってたから(笑)これでいいのかな〜〜。ある程度基礎を理解できるようになったら、ゲームをつくってみます。(あっ・・・・・)
サンプルコード
#! /usr/bin/env python # -*- coding: utf-8 -*- import pygame from pygame.locals import * import sys SCR_RECT = Rect(0,0,600,400) def load_image(filename,colorkey=None): try: image = pygame.image.load(filename) except pygame.error,message: print 'Cannot load file:',filename raise SystemExit,message image = image.convert() if colorkey is not None: if colorkey is -1: colorkey = image.get_at((0,0)) image.set_colorkey(colorkey,RLEACCEL) return image def split_image(image): imageList = [] for i in range(0,128,32): surface = pygame.Surface((32,32)) surface.blit(image,(0,0),(i,0,32,32)) surface.set_colorkey(surface.get_at((0,0)),RLEACCEL) surface.convert() imageList.append(surface) return imageList class character(pygame.sprite.Sprite): animcycle = 12 frame = 0 def __init__(self,filename,x,y): pygame.sprite.Sprite.__init__(self,self.containers) self.images = split_image(load_image(filename)) self.image = self.images[0] self.rect = self.image.get_rect(topleft=(x,y)) def update(self): self.frame += 1 self.image = self.images[self.frame/self.animcycle%4] def main(): pygame.init() screen = pygame.display.set_mode(SCR_RECT.size) pygame.display.set_caption('anime test') backImg = pygame.image.load('see.jpg').convert() all = pygame.sprite.RenderUpdates() character.containers = all player = character('player4.png',0,0) king = character('king4.png',32,0) soldier = character('soldier4.png',64,0) clock = pygame.time.Clock() while True: clock.tick(60) screen.blit(backImg,(0,0)) all.update() all.draw(screen) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: sys.exit() if event.type == KEYDOWN and event.key == K_ESCAPE: sys.exit() if __name__ == '__main__': main()
最初は、なんだかよく分からなかったけど、何度もコードを読んでいる内に理解できてました。