この章では、オブジェクトをキーボードで操作する方法と、関数の使い方を学びます。
関数とは
何度も使いたい処理を定義して、再利用可能にしたものを関数と呼びます。
今回は、キーボードからの入力を判断して、オブジェクト(プレイヤーやカメラ、敵など)を操作する処理を関数として定義し、ゲームループから何度でも呼び出せるようにしておきます。
CODE
今回から、複数ファイルを使います。
ゲームループが記述されているメインのファイルを「game2.bb」とし、関数が定義されているファイルを「gamefunction2.bb」とします。
次章以降も使っていくので、サンプルコードを書くときには注意してください。
game2.bb
Include "gamefunctions2.bb"
Graphics3D 640,480,16,2
SetBuffer BackBuffer()
cam1 = CreateCamera()
CameraViewport cam1,0,0,640,480
light1=CreateLight()
cube1=CreateCube()
PositionEntity cube1,0,0,10
sphere1=CreateSphere()
PositionEntity sphere1,0,0,20
;EntityParent cam1,cube1
While Not KeyHit(1)
object_key_control( cam1 )
random_move ( sphere1 )
UpdateWorld
RenderWorld
Text 50,50,"Use arrow keys to control"
Flip
Wend
End
gamefunctions2.bb
Function object_key_control( obj )
If KeyDown( 200 )=True Then MoveEntity obj,0,0,1
If KeyDown( 208 )=True Then MoveEntity obj,0,0,-1
If KeyDown( 203 )=True Then TurnEntity obj,0,2,0
If KeyDown( 205 )=True Then TurnEntity obj,0,-2,0
End Function
Function random_move ( obj )
direction = Rand(1,2)
MoveEntity obj,0,0,.5
Select direction
Case 1
TurnEntity obj, 0, 10, 0
Case 2
TurnEntity obj, 0, -10, 0
End Select
End Function
NEW COMMANDS
Include "gamefunctions2.bb"
...
object_key_control( cam1 )
Includeコマンドで「gamefunction.bb」を呼び出しています。
Includeコマンドで別ファイルを呼び出すことで、そのファイルに定義してある関数が使えるようになります。
Function object_key_control( obj )
...
End Function
上記の記述の仕方で関数を定義できます。Function ~ End Functionまでが関数です。
object_key_controlというのが関数の名前で、自由につけることができます。
カッコの中のcam1が引数の定義で、関数呼び出し時に指定する値になります。
If KeyDown( 200 )=True Then MoveEntity obj,0,0,1
...
If KeyDown( 203 )=True Then TurnEntity obj,0,2,0
Ifコマンドでロジックが書けます。この関数内では、特定のキーが押されたらobjを移動させる、または回転させる。ということを行っています。
キーコードは数値で指定しますが、上記の例で指定しているキーは矢印キーです。キーコードの一覧は
キーコード一覧を参照してください。
direction = Rand(1,2)
この場所では
Randコマンドで
乱数を生成して、進む方向を決めています。
Select direction
Case 1
TurnEntity obj, 0, 10, 0
Case 2
...
End Select
ランダムで 1 か 2 がdirection変数に代入されます。
SelectCaseコマンドで direction が 1 の場合と 2 の場合の処理を書くことができます。
上記の例では、direction が1の時は右に回転し、2 の時は左に回転します。
やってみよう!!!
;EntityParent cam1,cube1
- 上記の行のセミコロンを消して動きを確かめてみよう。
- コントロールキーを変更してオブジェクトを縦に上下するように修正してみよう。
最終更新:2012年12月27日 16:44