プログラミング未経験だけどゲームつくる - 7 : ライフと制限時間を設定する【LOVE2d】

こんにちは、サトウダイスケです。
昨日は久々にMikkeller Tokyoに行ってきました。
道玄坂にあるビアバーです。ビール好きにはおすすめ。

さて、今日はライフと制限時間を設定したいと思います。


ライフを設定する

    -- 各種パラメーターの初期化
    nokori_soul = 3
    time = 20
    x = 0
    neko_x = window_w-20
    neko_center_x = neko_x+chara_w_h*scale/2+x
    zimen_h = window_h/2.8+scale*chara_w_h
    neko_center_y = zimen_h
    damage = 0
    damage_muteki = 0
    damage_muteki_time = 2
    damage_muteki_time_remaing = damage_muteki_time
    now_time = 0
 
  -- ソウルの描写
  love.graphics.setColor(255, 255, 255)
  for i=1 , nokori_soul do
    love.graphics.draw(soul, 20+35*(i-1) , 20 , 0, 1, 1)
  end

  if nokori_soul == 0 then
    game_start = false
    
  end

Undertaleに則ってライフをソウルと呼んでます笑

まず、ゲーム開始時にロードしていた各種パラメーターですが、ゲームオーバーになったときに初期化されないといけないため、タイトル画面が表示されたときに読み込むように配置移動しました。

ソウルの画像はこれで読み込んでいます。

    soul = love.graphics.newImage('images/soul.png')

デフォルトのソウルは3になっています。

 nokori_soul = 3

nokori_soulが減ったらソウルの数を減らすのではなく、常にnokori_soulすべて描くようになっています。

 for i=1 , nokori_soul do
    love.graphics.draw(soul, 20+35*(i-1) , 20 , 0, 1, 1)
 end

そして、nokori_soulが0になるとタイトル画面に戻るようにしました。将来的にはリザルト画面を出すことになるかと思います。

  if nokori_soul == 0 then
    game_start = false
  end


制限時間を設定する

次に制限時間を設定します。

  time = 20

20秒にしておきます。

  now_time = 0

now_timeというものを初期化しておきます。
これは、1秒の経過を判断するために使用します。

次にfunction love.update(dt)内で、

  -- 制限時間の計算
  now_time = now_time  + dt

  if now_time > 1 then
    now_time = 0
    time = time - 1
  end

前回の処理からの経過時間(dt)の和(=now_time)が1秒を超えた場合、timeから1秒を引きます。

そして、その描写が、function love.draw()内で、

  -- 制限時間の計算
  love.graphics.setColor(0, 0, 0)
  love.graphics.print(time ,20, 60) -- 表示
  if time <= 0 then
    game_start = false

  end

です。
0以下になるとタイトル画面に戻ります。


といった感じで、ライフの設定と制限時間の設定ができました。

次回は石ころをランダム生成したいと思います。


この記事が気に入ったらサポートをしてみませんか?