Tutorial:Hamster Ball (日本語)

ハムスター球の画面撮影。
ハムスター球の画像 (注釈: この画像の名前は hamster.png であるとチュートリアルでは仮定します)

このゲームはゲーム・エンジンへリソース (この場合は単純な画像)を追加して矢印キーで画像を移動する非常に簡単な用例です。これをダウンロードしていない場合は、こちらに完全なソースがあります:

-- チュートリアル1:ハムスター球
-- ゲームへ画像の追加を行い矢印キーを使用することで 
-- 周囲を移動します。
-- löve 0.6.0 以降と互換性あり。
 
function love.load()
   hamster = love.graphics.newImage("hamster.png")
   x = 50
   y = 50
   speed = 300
end
 
function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (speed * dt)
   end
   if love.keyboard.isDown("left") then
      x = x - (speed * dt)
   end
 
   if love.keyboard.isDown("down") then
      y = y + (speed * dt)
   end
   if love.keyboard.isDown("up") then
      y = y - (speed * dt)
   end
end
 
function love.draw()
   love.graphics.draw(hamster, x, y)
end

これは世界で最も複雑なプログラムではありませんが、我々は何処かへ出発する必要があります。留意して欲しいのは -- 文字はコード内においてコメントでありプログラムにより無視されます。

-- ここへ希望する任意のことを記述できます!

よろしいですか、次に load と呼ばれる関数の動作について知る必要があります。これはゲームが初期化されて全てが開始される場所です。それらは厳密には要求されませんが、今は love.update() および love.draw() を扱うほうが最良です。様々な関数の意味や用途はすぐ後に解説します。

-- これは空のプログラムです。
function love.load()
end
 
function love.update(dt)
end
 
function love.draw()
end

よろしい、このゲームに対して特定のコードが何を行うか説明しましょう。

このように load 関数は記述されます:

function love.load()
   hamster = love.graphics.newImage("hamster.png")
   x = 50
   y = 50
   speed = 300
end

ここで行っていることは hamster.png ファイルを hamster と呼ばれる変数へ画像として代入してゲームで使用できるようするために追加することです。さらに変数を3つ宣言をします: x, y および speed です。これら全て、その後のプログラムにおいて部品としての役割を担います。

このように update 関数は記述されます:

function love.update(dt)
   if love.keyboard.isDown("right") then
      x = x + (speed * dt)
   end
   if love.keyboard.isDown("left") then
      x = x - (speed * dt)
   end
 
   if love.keyboard.isDown("down") then
      y = y + (speed * dt)
   end
   if love.keyboard.isDown("up") then
      y = y - (speed * dt)
   end
end

まず、この関数が最後に呼ばれてからの経過時間の合計表現として dt ("delta-time" : デルタ時間の略称 ) と呼ばれる引数をこの関数が受け入れることを理解してください。それは秒単位ですが、今日のプロセッサ速度において通常は 1 未満 (一般的な値は 0.01 らしい) です。この値は利用者の計算機がどれほど高速であろうと同一速度でハムスター球を移動させるために使用しています。

この関数では右、左、上または下が押されたかどうかを適切な引数を渡した love.keyboard.isDown(key) を呼び出すことで確認を行います(キーボードにおけるキーの全一覧はこちらに掲載されています)。任意の正しいキーが押されたとき x または y の値は適切な合計により加算されます。この場合は speed 時間における dt の意味するところは球は毎秒 300 のピクセルの速度で移動します。何が起こるか確かめるには load 関数内の speed 値を変更してみてください。

このように draw 関数は記述されます:

function love.draw()
   love.graphics.draw(hamster, x, y)
end

もういろいろと起きませんが、これで手品はおしまいです。そして、変数 hamster に格納されていた画像は x および y 座標の位置へ描画されます。

最初のゲームに関する基本的なことはこれだけです。それらがどの様な影響があるか確かめるために love.load 関数内にある変数を弄ってみてください。

.love ファイルは WinZip または 7zip といった、標準的な書庫作成管理ソフトで開くことができることを覚えておいてください。それらの実態は .zip ファイルを名称変更したものです!


そのほかの言語