0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

enchant.jsとtmlib.jsを使ったゲーム作成フレームワーク「enforce」チュートリアル(9)タイトル画面を作る

Last updated at Posted at 2015-01-20

ここでは、「game01」というディレクトリ内で作業しているという前提で説明しています。

タイトル画面を作る

ゲームが始まるまで、特定のキー入力を待つタイトル画面を作成します。

ゲーム全体の制御を行う「gameControl.coffee」を生成します。
ゲームのトップディレクトリ(game01)で下記コマンドを実行し、「src」ディレクトリに「gameControl.coffee」が生成されているのを確認してください。
監視コマンドが実行されている場合は、自動的にコンパイルされます。

$ enforce derive gameControl

そして、生成された「gameControl.coffee」の「constructor」を下記のように修正してください。

    constructor:(initparam)->
        super(initparam)
        @title = addObject
            type: LABEL
            x: SCREEN_WIDTH / 2 
            y: SCREEN_HEIGHT / 2 
            width: SCREEN_WIDTH
            height: 48
            fontsize: 48
            textalign: 'center'
            labeltext: "PUSH 'z' KEY"

constructor」でタイトル画面となる「Label」スプライトを生成しています。
これは、enchant.jsのスプライトの一種である「Label」を使い、テキストを画面に表示しています。
次に、「behavior」を下記のように修正してください。
when 1」の内容の前半は、「enforceMain.coffee」の「constructor」をそのまま持ってきています。
最後の「@nextjob()」を忘れると延々とオブジェクト生成が行われて、ブラウザがハングします。

    behavior:->
        super()
        switch @_processnumber
            when 0
                button = PADBUTTONS[0]
                if (button[0])
                    @title.visible = false
                    @nextjob()
            when 1
                bearobj = addObject
                    motionObj: bearChara
                    type: SPRITE
                    x: SCREEN_WIDTH / 2 
                    y: SCREEN_HEIGHT / 2 
                    image: 'bear'
                    width: 32
                    height: 32
                    gravity: 1
                    animlist: [
                        [50, [0, 0, 1, 1, 2, 2, 1, 1]] 
                        [50, [5, 5, 6, 6, 5, 5, 7, 7]] 
                    ]   
                GLOBAL['bearchara'] = bearobj

                bearobj.animnum = 1 

                enemyObj = addObject
                    motionObj: enemy01
                    type: SPRITE
                    x: rand(SCREEN_WIDTH)
                    y: rand(SCREEN_HEIGHT / 2)
                    image: 'bear'
                    width: 32
                    height: 32
                    animlist: [
                        [50, [0, 1, 0, 2]] 
                    ]   
                GLOBAL['enemy'] = enemyObj

                @nextjob()

次に「enforceMain.coffee」の「constructor」を下記のように修正し、新規に作成した「gameControl.coffee」からオブジェクトを生成してください。

    constructor:->
        gameControlObj = addObject
            type: CONTROL
            motionObj: gameControl

すべての修正が終わり、保存/コンパイルが正常に終了しましたらブラウザをリロードしてください。
画面に「PUSH 'z' KEY」と出て、「z」キーを押すとゲームが開始するようになるはずです。

注意:enchant.jsのLabelは、XPERIA Aの標準ブラウザで使用すると、標準ブラウザが落ちます。

チュートリアル(8) <--- ⬛︎ ---> チュートリアル(10)


enforceチュートリアル一覧

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?