LoginSignup
0
0

More than 5 years have passed since last update.

Tonyu System 2であほげーを作ろう - その2 メイン画面

Last updated at Posted at 2018-03-25

記事一覧

第1回 設定とタイトル
第2回 メイン画面
第3回 ターゲットと敵と
第4回 スコア・時間など
第5回 ゲームを公開する
第6回 Twitterにスコアを投稿
第7回 サウンド関係
第8回 物理エンジンなど

Tonyu2 であほげーを作ろう その2

前回に引き続き,あほげーのテンプレートを紹介していきます.

前回,タイトルが表示されて,Startボタンが出たけれど押しても何も起きなかったと思いますので,今回はちゃんとゲームをスタートさせるところを作ります.
なお,ゲームの内容はテーマが決まってから詰めるところなので,今回作るゲームの肝心の内容はテキトーです.要するにゲーム全体の流れ(タイトル→ゲーム本体→ゲーム終了)を構築しておいて,テーマが出たら内容をしっかり詰める作戦でいきます.

では,今回のプログラムを開いてみてください.

スクリーンショット 2018-03-25 16.39.21.png

今回追加・変更したファイルは次の3つです

  • Main [追加] ゲーム開始時にキャラを出現させるオブジェクト
  • Player [追加] プレイヤーのオブジェクト
  • Title [変更] ボタンを押したときにMainに移動する処理を追加.

Main

Main では,プレイヤーのオブジェクトを出現させています.

Main
new Player{x=100,y=100};

前回書き忘れましたが,{x=100,y=100}の部分は,オブジェクトを生成するときに,フィールドの値に書き込みを行うためのものです.JavaScriptに慣れた方は「あれ?」と思うかもしれませんが,Tonyu2のオブジェクトリテラルでは,属性名の後に=を書くこともできます(:も可).また,オブジェクトリテラルを引数として渡すときに()を省略することも可能です.

メニューの「実行」から「Mainを実行」を選べば,いきなりメイン画面から始めることも可能です.(タイトルから始めたい場合は「Settingを実行」にしてください)

Player

プレイヤーは次のようになっています.

Player
pad=new APad;//★1
p=$pat_ahoge26+0;//★2
while(true) {
    x+=pad.vx*5;//★1-1
    y+=pad.vy*5;
    update();//★3
}
  • ★1 スマートフォンでも動かせるようAPadを使います.これは,画面上に仮想的なアナログパッドを表示させるものです.スマートフォンではスワイプして動かします.PCではキーボードでも操作可能です.
  • ★1-1 パッド移動方向はpad.vxなどで取得します(-1から1まで).この値を使ってフィールドxyを変化させると,画面内のキャラクタがその座標に移動します.1
  • ★2 画像は,次のファイルを使っています.くどいようですが,テキトーです.テーマが決まったらちゃんとしたのに差し替えましょう.
  • ★3 updateメソッドは,このオブジェクトの1フレーム分の動作を終了させる役割をもちます.繰り返しが行われるたびに基本的に1回実行する必要があります.

★2のahoge26.pngはこれです:
ahoge26.png

上のahoge.png が追加されていることは, メニューの「ウィンドウ」から「画像リスト」を表示して確認できます.次のように,32x32ドットごとに別のパターンになるようにしています.「画像詳細」ウィンドウ左端の「プレイヤー」をクリックすると,$pat_ahoge26+0 というパターン番号(整数値)が割り振られていることが確認できます.

スクリーンショット 2018-03-22 17.19.05.png

プログラム中で,p=$pat_ahoge26+0;のようにフィールドpにパターン番号を代入すると,そのパターンを表示できます.

Title

Titleクラスは前回にもありましたが,今回はボタンを押したらMainに移動する処理を追加しました.

Title(一部)
//前略
//スタートボタン
new Button{
    text="Start",
    top=300,
    onClick=start,//★4追加
};
//★5追加↓
\start() {
    new FadeEffect{type="out",page=Main};//★6
}

ボタンを押したときの動作は,ボタン生成時にonClickフィールドに設定します.startは★5で定義されているstartメソッドを指します.

★5の\start()...function start と等価です,つまりstartメソッドを定義しています.
メソッド内では★6のようにFadeEffectオブジェクトを生成しています.これは,

  • フェードアウトを表示
  • 今まで動いていたオブジェクトを全部消し
  • pageフィールドに指定したクラスのオブジェクトを生成します.

簡単にいうと,別のページ(シーン)に移動する処理にフェードアウトをおまけでつけています.2

これによって,Startボタンが押されたらMain,つまりゲーム本体が始まるという処理ができました.

今回はここまで.テキトーなゲームなのにまだ完成していないのでそれは次回に.


  1. 座標は左上が(0,0),ピクセル単位です. 

  2. フェードアウトが不要な場合はloadPageメソッドを呼ぶことで代用可能です. 

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