kazumalab tech log

流行りとリラックマと嵐が大好きです。技術的ログ。

python勉強〜8日目〜

kazuma.です。

今日はUnityを放って置いて、pythonをしたいと思います。(500行チャレンジ)

もちろん使うのは"pygame"。

めっちゃ簡単にplayerを動かすことができます。
前のpython勉強の際にpygameのインストールを行いました。(Mac用です。)kazumalab.hatenablog.com


今回はイカ(某任天堂ゲーム)が流行っているのでそれに則ってイカを動かしたいと思います。
まずは素材作り。イカを作ります。(20秒)笑
f:id:kazumalab:20150705171407p:plain

はい、できましたね。

次にそれをpythonのコードで読み込みキーボードで動かしていきます。

#sample.py
import pygame
from pygame.locals import *
import sys

screen_size = (640, 480)

pygame.init() #first setting.
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption(u"window")

img = pygame.image.load("ika.png").convert_alpha()
img_rect = img.get_rect()
img_rect.center = (320,240)

move_x = 10
move_y = 10

while True:
    screen.fill((0,0,255))
    screen.blit(img,img_rect)
    pygame.display.update()
    
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_LEFT:
                img_rect.move_ip(-move_x,0)
            if event.key == K_RIGHT:
                img_rect.move_ip(move_x,0)
            if event.key == K_UP:
                img_rect.move_ip(0,-move_y)
            if event.key == K_DOWN:
                img_rect.move_ip(0,move_y)
            if event.key == K_ESCAPE:
                sys.exit()
                

ほい、これだけで動きます。(すげー)
主に

img_rect.move_ip(x,y)

これで動きます。あとはwhileで回し、update()をしています。

ただ、これだけで動いてしまうと500行には到底及ばないじゃないか!!
ということでかさまししましょう。

海のという設定で少し重力をつけたり少し、イカ感を出してみましょう。

#sample.py
import pygame
from pygame.locals import *
import sys

screen_size = (640, 480)

pygame.init() #first setting.
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption(u"window")

img = pygame.image.load("ika.png").convert_alpha()
img_rect = img.get_rect()
img_rect.center = (320,240)

move_x = 10
move_y = 20 #変更点
gravity = 1 #変更点
while True:
    screen.fill((0,0,255))
    screen.blit(img,img_rect)

    pygame.display.update()
    img_rect.move_ip(0,gravity) #変更点

    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_LEFT:
                img_rect.move_ip(-move_x,0)
            if event.key == K_RIGHT:
                img_rect.move_ip(move_x,0)
            if event.key == K_UP:
                img_rect.move_ip(0,-move_y)
            if event.key == K_DOWN:
                img_rect.move_ip(0,move_y)
            if event.key == K_ESCAPE:
                sys.exit()

これでうまくいかっぽくなりました。
2行のかさまし成功です。


何かマリオの海ゾーンのいかになった気分ですね。

次は当たり判定もやってみたいです。
以上です。(35/500行)