LOCKYOUで学ぶ

行き当たりばったりゲーム制作

戻る

さて、画像が表示されてるだけだととてもゲームとはいえないよね
クレイジーバス未満だよ
それは確かにそうだがそれを引き合いに出す必要があるか?
と、いうわけでこのキャラクターを移動させてみるよ
ここからは本格的なお勉強っぽくなってくるけど頑張って読み進んでってね
余談だけどなんかもうわかんなくなっちゃった~ってときは
とりあえず意味がわからなくても先を読んで「予習」しておいて、
そんでほとぼりが冷めるだろうから潔くしばらく離れて、
再び熱が出てきたときに読むと前回やっておいた分理解が早い+「ここらへんは見たことあるけどこういうことだったのか」
って言う感じで先にすすめるかも?
まあ、無理は禁物ってことだな
嫌いになってしまったら本末転倒だし
だいたいこういう学習って周回プレイが前提だしね
初回プレイはノーマルエンド
何回かやって完全に理解したらトゥルーエンド
ゲシュタルト崩壊しちゃったらバッドエンドって感じで
ま、本筋から離れた話はこれくらいにしてプログラムの方行ってみようね
まず、キャラを移動させるっていうことはキーボードの入力を受け取らないといけないよね
そのための関数はこれ
あ、
関数 数学的な関数とは違って値を返さないものもあります
その場合は内部で別の処理をしてたりなんだりかんだりしてます
っていうのは今は「呼び出したらなんか動いてくれる人」って言う解釈でいいと思うよ
Key.isDown(”調べたいキーのキーコード”)
ここに調べたいキーコードを放り込むとtrue(真、はい、せやで、エサクタ)かfalse(偽、いいえ、ちゃうわ、ノ・エス・エサクト)
で押されてるかどうかの
返事 一般的に戻り値、返り値などと言います。
を返してくれるよ
キーボードの→のキーコードは「39」だから……
(真か偽かだけでいいだろなんで関西弁とか混ぜるんだ)
→の入力を調べるためにはこうすればいいんだよな?
だけどtrue,falseの返事はどう受け取るんだ?
Key.isDown(39);
一番後ろのコロン(;)は一つの文が終わったということを示します
変数っていうものを作ればそこに格納出来るよ
変数っていうのは箱みたいで箱じゃないちょっと箱っぽい箱のこと
var variable(変数)の略
この段階ではvarをつけなくても動作に支障はありませんがつけたほうがいいです
javascriptを学ぶときでも新しい変数を作るときは必ずつけてください
つけた場合とつけない場合で動作が違ってくる場合があるので
は変数を作るよって言うこと、この変数の中にさっきの返事を受け取っておくよ
あ、変数の名前は今は適当でいいよ
var henji = Key.isDown(39);
そしてプログラムを学ぶ上では絶対に必要な「if」の登場だよ
そりゃもう
練乳 牛乳に砂糖を入れて濃縮した食べ物
僕が一番好きな食べ物だよ
かき氷にかけたりするけど僕はそのまま食べるのが一番好き
とか、
角砂糖 砂糖をシロップで立方体に固めた食べ物
一口サイズで食べやすいよね
……え?そのまま食べるものじゃないって?
とかとおんなじぐらい重要な……ね?
そんな妙な例で言われてもわからんし、
練乳や角砂糖が好きなのは構わんがバクバク食うのやめろ太るだろ
う、うるさいっ!
えーっと、このifは()の中がさっき言った「true」のときにだけ{}の中の処理を行うっていうこと
さっきの関数君の返事「変数」にはtrueかfalseが入ってるから……
ifの条件の式はこう書けばいいってことになるね
var henji = Key.isDown(39)
if (henji) {
  ”キャラクターを移動する処理”
}
参考:if文の挙動
これで、「キャラクターを移動する処理」を実際に書けば動くってわけか
ファイナルアンサー?
何だよなんか駄目なのかよ
まぁ他にどんな問題があるかは置いといて、
キャラクターを動かす処理を描いてくよ
これ見てちょんまげ
スプライトのプロパティ?
x座標とy座標のが赤い枠においてあるが……
この2つの項目をいじるとスプライトの位置が変わるよね?
ActionScriptでもこの数値をいじれるよ
例えば、スクリプト上でx座標に100を入力したら
スプライトも100に移動するとかそういうことか?
ナイスでーす!
……
それじゃ今までのことを全部まとめてやってみるね
とりあえず前回作ったプロジェクトを上書きしてくよ
まず、スクリプト上でスプライトを動かしたいから、スプライトに名前をつけるよ
めんどくさいから画像を使いまわすけど、ここのインスタンス名ってところに適当な名前(taiann)って入れる
そんでアクションスクリプトのコードの方で
スプライト名 ドット _xでそのスプライトのx座標が分かるから、
そこに100を放り込む
こんなかんじだね「taiann._x = 100;」
さっきのif文と組み合わせれば、コードの完成!
これだと右を押したときに100の位置に移動、しかできないけど、
とりあえず「右を押したら右側に動く」原型は完成したよ
var henji = Key.isDown(39);
if (henji) {
  taiann._x = 100;
}
このコードをtest.asにペタッとね
保存するのを忘れがちだからしっかりとCtrl+Sを押してね
そんでプレビュー、いっきま~す!
flashを貼っても意味が無いので、画像
……? 右ボタン押しても何もならんぞ?
な、なんだってー!
おめー原因分かってんだろ
まあそうなんだけどさ、話すと長くなるし、その前に色々やっておきたいことがあるから
続きは次回でね
またね~
小休止
あ、そうそう(黒バラ風に)
ちょこっと話しておきたいことがあるんだけどいい?
なんだ?
変数の話なんだけど、上では箱みたいな感じって言ったよね?
箱っつーか……今見返したら何なんだあのわかりにくい表現は
だって完全に箱って言っちゃうと後々困っちゃうし……ねぇ?
後々配列とか出てくると確実に困ると思う
んー、単純にデータを入れる容器、って言う解釈じゃダメなのか?
数値とか、単純なtrue,falseとかならそれでいいけど
さっき行ったみたいに配列とかの大きいデータはまずいね
大きいデータだとどんな感じに違ってくるんだ?
そだねー、例えばテキストファイルとエクセルファイルを作って、
テキストファイルはそのままデスクトップに、エクセルはショートカットをデスクトップに作ったとする
当然だけどテキストもエクセルも両方同じように元のファイルを開けるよね?
じゃあ問題
この2つのファイル、コピーするとどうなる
コピーって、ファイルが増えるだけじゃないのか?
テキストと、エクセル……
待てよ、エクセルの方はファイル自体は増えないのか
Exactly(そのとおりでございます)
つまり、コピーしても意味がない?
そうだね、普通にコピーしても意味はないよ
理由としては上で挙げたように大きいデータは別の場所においてあるからって解釈でいいと思う
ココらへんを詳しく言うとちょっとまた話が長くなっちゃうから今回はここまでね
また次回!