pythonで寿司打を作ってみました。

今までタイピングゲームの作り方をたくさん書いてきましたが、一年くらい前に書いた寿司打の再現コードを上げるのを忘れていたので載せていきたいと思います。

下の画像のように、端から端まで画像が移動するまでに打ち切ることができたならばOK/無理ならば次の単語に切り替わるといったものです。

下のリンク先とその次の記事にコードの全文を載せているのでそちらに埋め込んでいきます。

とりあえずこれに動く画像と時間内に打てないと次の単語に進むという機能を追加していきたいと思います。

コードをぶち込んでいきます。いつ作ったか忘れたんですがpythonでつくるゲーム開発入門講座実践編のシューティングゲームを参考に作っています。わかりやすいいい本でした。

#寿司打の再現部分
picture = [
pygame.image.load("動かす画像のパスを")
]

tmr = 0
sushi_max = 100
sushi_no = 0
sushi_f = [False]*sushi_max
sushi_x = [0]*sushi_max
sushi_y = [0]*sushi_max
sushi_sp = [0]*sushi_max
sushi_type = [0]*sushi_max
LINE_L = -50
d = 0
sushi_judge = 0

def bring_sushi():
    if  sushi_f[0] == 0 :
        set_sushi(LINE_L,240,1,3)


def set_sushi(x,y,ty,sp):
    global sushi_no
    while True:
        if sushi_f[sushi_no] == False:
            sushi_f[sushi_no] = True
            sushi_x[sushi_no] = x
            sushi_y[sushi_no] = y
            sushi_type = ty
            break 
        sushi_no = (sushi_no+1)%sushi_max


def move_sushi(screen):
    global word, d ,sushi_judge
    for i in range(sushi_max):
        if sushi_f[i] == True :
            png = sushi_type[i]
            ang = 90
            sushi_sp[i] = 2.5
            sushi_x[i] = sushi_x[i] + sushi_sp[i]
            if  sushi_judge == 1:
                sushi_f[i] = False
                sushi_judge = 0
            if  (sushi_f[i] == 1) and (sushi_x[i] > 700):
                d = 1
                sushi_f[i] = False
            img_rz = pygame.transform.rotozoom(genki[png],ang,1.0)
            screen.blit(img_rz,[sushi_x[i]-img_rz.get_width()/2,sushi_y[i]-img_rz.get_height()/2])

とりあえず関数を用意します。

からのwhile runnning:の中で下のコードを打つことで上で用意した関数を使用します。

         tmr = tmr + 1
         bring_sushi()
         move_sushi(screen)

最後に、下のコードを挟むことで完了です。

・一つの単語を打ち終わったとき

・ゲーム途中でを終了するとき(ほかのプログラムから読み込んだ場合の初期化のため

・ゲーム結果に突入した時(上と同じ理由

sushi_judge = 1

以上で寿司打をこれまでに作成したプログラム(上のリンク先に全文あります)に反映させることができました。

感想

意外に簡単に実装できます。でもゲームとしては大変面白い。すごいですね~いつかこんなの作りたい(笑)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です