トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

チュートリアル 1: Hello World

チュートリアル 1へようこそ。
ここでは、さっそく自身でプログラムを書いてみましょう。
はじめのプログラムはHello Worldプログラムです。上画面の真ん中に黄色で"Hello World!"と表示します。

まず、「scripts」フォルダに新しく"helloworld.lua"を作成しましょう。
そしれそのファイルを好きなテキストエディタで開いてください。

はじめに、テキストを表示するために上画面の準備をする必要があります。
そのためには、以下のコードを使用します。

SCREEN_TOP = 1
BGTopText = Screen.LoadTextBG()
Screen.Initialize( SCREEN_TOP, BGTopText )

このコードを"helloworld.lua"に貼り付け、保存して下さい。何も起こらないでしょうから、実行しても意味はありませんが。
(ただ、エラーをチェックするためにそのつど実行してみることは良いことですよ)

始めの「SCREEN_TOP」は後のコードを読みやすくするための変数です。
全てのプログラムにおいて、この変数を一番頭に持ってくると良いでしょう。

さて、画面の準備ができたので、テキストを表示させましょう。
PrintXY()という簡単な機能を使用すれば、テキストの表示が可能です。
この機能は、画面の好きな場所に好きな文字を表示させることができます。
そして、どの画面に表示させたいかをDSLuaに教える必要があります。
これには以下のコードを用いてください。

BGBotText:PrintXY( 1, 1, "Hello World!" )
BGTopText:PrintXY( 1, 1, "Hello World!" ) 

1行目で、上画面にクォーテーションマーク抜きで"Hello World!"と表示します。
上画面の「SCREEN_TOP」と同様に、「SCREEN_BOTTOM」で下画面にテキストを表示するための準備をしていれば、2行目で下画面に"Hello World!"と表示します。
(「BGBotText」の「Bot」とはBottom,つまり「下」を意味します)
さて、この行をプログラムに加えてください。以下のようになります。

SCREEN_TOP = 1
BGTopText = Screen.LoadTextBG()
Screen.Initialize( SCREEN_TOP, BGTopText )

BGTopText:PrintXY( 1, 1, "Hello World!" ) 

2つの「1」が何を意味しているかを不思議にお思いでしょう。これは、あなたが書いた文章が表示される場所のXとYの座標です。
「1,1」は画面の左上を意味します。両画面とも、テキストの表示できる範囲は横32と縦24です。

さて、まだプログラムを実行していないなら、プログラムを実行してみましょう。
残念ながら、実際にはこれはまだ動きません。
なぜなら、あなたが表示されたテキストを見る前に、一瞬でプログラムが最後の行に達し、メインメニューへ戻ってしまうからです。
テキストが読めるように、最後に停止してもらうようにしなければなりません。
そのためには、DSのボタンが押されるまで待つようにします。これはとても簡単にできます。以下のコードを見てください。

SCREEN_TOP = 1
BGTopText = Screen.LoadTextBG()
Screen.Initialize( SCREEN_TOP, BGTopText )

BGTopText:PrintXY( 10, 12, "Hello World!" )

DSLua.WaitForAnyKey() 

ほら!プログラムを実行したら、上画面の真ん中に"Hello World!"の文字が見えるでしょう。
ただ、画面の真ん中に文字が来るように、プログラム例の数字が変わっていることに気をつけてくださいね。
次に、色を付けてみましょう。SetColor()を使用します。以下のようにします。

BGTopText:SetColor( 4 )
BGTopText:PrintXY( 1, 1, "I'm colorful!" )

SetColor()の中の文字は、DSLuaにどの色を使用するかを教えます。
もしあなたがカナダ/イギリス英語をご利用なら、スペルは"colour"ではなくアメリカ英語の"Color"であることを覚えておいてください。
以下は色と番号のリストです。

#
0
1
2
3
4 マゼンタ
5 シアン
6
7 ライトグレー
8 ダークグレー
9

最終的な上画面のコードは黄色で"Hello World!"を表示することです。

SCREEN_TOP = 1
BGTopText = Screen.LoadTextBG()
Screen.Initialize( SCREEN_TOP, BGTopText )

BGTopText:SetColor( 6 )
BGTopText:PrintXY( 10, 12, "Hello World!" )

DSLua.WaitForAnyKey() 

やったね!これで1つ目のチュートリアルのプログラムが完成しました!

最後に3つの追加すべき項目があります。「コメント」と「下画面」と「表示変数」です。
コメントはDSLuaには無視される行です。でもプログラマーには見えます。

つまり、他の人があなたのコードを見た際により理解しやすくなります。
Luaでは、2つのハイフン"--"をコメントとします。ハイフン2つの後に続く全ての文字が無視されます。
また、上のプログラム例を下画面に表示する方法もお教えします。

注目すべき箇所ははじめの6行です。どのように下画面を準備するか見てください。
このプログラムは、テキスト,色,上画面のテキストの位置の変数を使用して、両画面共にHello Worldの文字を表示します。

-- 画面がテキストを表示するように準備します。
SCREEN_TOP = 1
SCREEN_BOTTOM = 0
BGTopText = Screen.LoadTextBG()
BGBotText = Screen.LoadTextBG()
Screen.Initialize( SCREEN_TOP, BGTopText )
Screen.Initialize( SCREEN_BOTTOM, BGBotText )

-- 上画面のテキストの変数を指定します。
textcolor = 6
text = "Hello World!"
x = 10
y = 12

BGTopText:SetColor( textcolor )
BGTopText:PrintXY( x, y, text )
BGBotText:SetColor( 6 ) -- 6は黄色ですね。
BGBotText:PrintXY( 10, 12, "Hello World!" ) -- 10, 12を指定すると、画面の中央に表示されます。

DSLua.WaitForAnyKey() -- 何かキーを押されるまでプログラムは終了せずに待機します。

08/29/2006 注釈を追加:
テキストの文章をクリアするには、BGBotText:Clear()BGTopText:Clear() を使用してください。