5回目Java script構文

80
JavaScript 第5第

Transcript of 5回目Java script構文

Page 1: 5回目Java script構文

JavaScript

第 5 回

Page 2: 5回目Java script構文

今日の内容は、今までなんとなくおざなりにしてきたJavaScript の構文の勉強です!これをすることで、皆さんも自力でいろいろ出来るはず!

Page 3: 5回目Java script構文

と言ってもただ単に色々言われてもよくわからないうえにつまらない。

Page 4: 5回目Java script構文

ので、実際にプログラムを見ながら勉強していきましょう。使うのはシューティングとして配ったプログラムです!もはやシューティングじゃない人もいますが。。。

Page 5: 5回目Java script構文

今日の授業は、構文を勉強しつつ、ゲームのプログラムが全体でどうなっているのかすこしづつ見ていきましょう。

Page 6: 5回目Java script構文

1. HTML

Page 7: 5回目Java script構文

何は無くとも、といった感じですが、これがないとブラウザは何も表示することが出来ません。JavaScript か? と言われると、違います。これはサーバから渡される、どう表示をすべきかが書かれたファイルです。

Page 8: 5回目Java script構文

皆さんにお配りした html ファイルはかなりシンプルです。WEB ページとなるともう少し複雑になりますが、ゲームの場合ほとんどのものを JavaScript で描いてしまうのでHTML で描くことはほとんどありません。大事なのは canvas というものくらいです。

Page 9: 5回目Java script構文

HTML 5 とはなんなのか?

今まで決めていなかった、あったら便利を再整理したもの!

Flash は良く参考にされています。ある意味 Flash を亡き者にするために決められたものです。それくらい Flash というのは良く出来ていました。

Page 10: 5回目Java script構文

HTML 5 で新しく追加された大きな機能

canvas ( 描画機能 )audio ( 音声機能 )web socket ( 通信機能 )video ( 動画再生機能 )storage ( ファイル保存機能 )

Page 11: 5回目Java script構文

HTML 5 で新しく追加された大きな機能

どう考えても、ゲーム向きな機能ばかりでないです?

Page 12: 5回目Java script構文

ただし、まだブラウザ毎に実装されていたりされていなかったり!audio に至っては Apple がなんとなく拒絶気味。3D 表示機能の webGL は Microsoft が乗り気でない( DirectX の競合)

なので、実際に動くのかどうか、よくよくテストをしましょう。

Page 13: 5回目Java script構文

ちなみに対応されているかどうか、簡単に調べる方法はないの?

それが、 Modernizr.js です!

Page 14: 5回目Java script構文

2. Modernizr.js

Page 15: 5回目Java script構文

これはいわゆる、ライブラリというやつです。

便利な機能をいつでもどこでも使えるように整理されたもの!世の中にはこういった便利なものを無料で使えるようにしてくれる人がいるのです。

Page 16: 5回目Java script構文

どこでつかわれているの?

Main.jsfunction enviromentCheck()

Page 17: 5回目Java script構文

function enviromentCheck(){

var isCanvasSupport = Modernizr.canvas;var isAudioSupport = Modernizr.audio;

return isCanvasSupport && isAudioSupport;}

対応しているかチェックしたいもの

対応していないものがあった場合、このゲームは動かせないのでチェックが必要です!!!

Page 18: 5回目Java script構文

環境が満たされているか

満たされていれば、 GameStart()満たされていなければ何もしない。

Page 19: 5回目Java script構文

if 文

if ( 何か正しくなる条件 ){

// 何かやりたいこと}

{ で始めて } で終わるのがルール

きちんと囲まれているかわかりやすくするために中身の部分は1段階そろえて隙間を空ける

Page 20: 5回目Java script構文

if ( 何か正しくなる条件 ){

// 何かやりたいこと}else if ( さらに何か条件 ){}else{

// その他。どの条件にもハマらなければここ}

Page 21: 5回目Java script構文

試しに皆さんで書いてみましょう。

Page 22: 5回目Java script構文

Shooting.html をどこか適当な場所にコピーして、<script src=“test.js”></script>と追加して、他の ~.js の部分を消してください。

そして、同じフォルダ内に test.js を作りましょう。

Page 23: 5回目Java script構文

test.js に書くこと

Page 24: 5回目Java script構文

value の値を色々変えてみてください!

ex)value = false;value = 0;value = -10;value = “test”;value = “”;

Page 25: 5回目Java script構文

どうです?なんとなく想像通りです?

Page 26: 5回目Java script構文

では次はこう変えてみましょう。

Page 27: 5回目Java script構文

これはどうでした?

Page 28: 5回目Java script構文

じゃあどうすれば良いのか。JavaScript には、== と === があります!

Page 29: 5回目Java script構文

ちなみに私が皆さんにお配りしたものは大体の場所が == となっています。

知らなかったわけではないですよ。。。ほとんどの場合、問題にならないからです。それに === という書き方は他のプログラミング言語では一般的ではありません。なのであえて == を選んで書きました。気になる人は修正したらいいんじゃないかなー。

Page 30: 5回目Java script構文

変数

Page 31: 5回目Java script構文

ところでいまさらですが、

var value = false;

って何を意味するんでしょうか?

Page 32: 5回目Java script構文

もはや当たり前な気もしますが、var value = false;と書いてあれば、 value は false になります。

value = 0; と書けば value は 0 になります。value = “test” と書けば、 test という文字になります。

Page 33: 5回目Java script構文

var は初めて使う場合に付けます。

var value = 0;var value = false; // さらに付けるのはあまりよろしくない。

ちなみに実は初めて使うときも実は var つけなくても良いです。ですが、ろくなことにならないので、必ずつけましょう。

Page 34: 5回目Java script構文

文字列

Page 35: 5回目Java script構文

先ほど、var value = “test”;は文字になる、と言いました。さりげなく。

Page 36: 5回目Java script構文

コンピュータというのは文字をどう扱っているか?実は、 A という文字は 65 なのです!

… どういうこと?

Page 37: 5回目Java script構文

こう書いてみましょう。画面にはなんて表示されます?

Page 38: 5回目Java script構文

どういうことかというと、プログラムは文字というのを理解出来ないので、65 という数字を、文字と認識しなさい、と言われた時だけ、A と画面に表示するようにしているのです。

Page 39: 5回目Java script構文

そして皆さんが書いたこれは、 0 番目の文字は数字的にいくつとして扱っているかを教えてもらうということ!

Page 40: 5回目Java script構文

興味あればdocument.writeln(“1”.charCodeAt(0));を書いてみてください。意外に面白いですよ。

Page 41: 5回目Java script構文

ちなみにここから“ 文字化け” がおきる仕組み、想像できます?

Page 42: 5回目Java script構文

世の中には文字コードといういわゆる文字のフォーマットがあります。

フォーマット A で書かれた、”日” という文字。数字では 26412 です。

フォーマット A と認識して読取ってみると… ?26412 => “ 日” なので、画面に 日 と表示

フォーマット B と認識して読取ってみると… ?26412 => “�� ” なので、画面に �� と表示

Page 43: 5回目Java script構文

試しに実際に文字化けを起こさせてみましょう。

document.writeln("<p></p>");document.writeln(" 日本語 ");

を追加した後、Chrome で、 ≡ をクリック。ツール → エンコード → UTF-8 を選択してみると… ?

Page 44: 5回目Java script構文

下から順ということで、次は Ground.js を見てみましょう

Page 45: 5回目Java script構文

今回の見どころはここです!

Page 46: 5回目Java script構文

配列 (Array)

Page 47: 5回目Java script構文

配列とはなにか

一定のルールに従ったたくさんのものを1つの塊として扱う方法

Page 48: 5回目Java script構文

例えば、”数字” というルールに従ったたくさんの集まり

1, 2, 5, 53, 12, 24, 3.1415….

例えば、”文字列” というルールに従ったたくさんの集まり

“Resource/Image/Player.png”,“Resource/Image/Enemy.png”,“Resource/Image/Shot.png”,

これらをまとめて扱うのにすごく便利!

Page 49: 5回目Java script構文

でも、ほんとにこれ使う?何のためにあるのか良くわからないよ… ?

Page 50: 5回目Java script構文

実は、配列というのはfor 文という、まとめて処理する方法とワンセットです!

参考書とかには必ず別々の機能であるかのように紹介されますが、for 文無しの配列というのは基本ありえません!!!

Page 51: 5回目Java script構文

for 文

Page 52: 5回目Java script構文

先ほどの test.js にこう書いて実行してみましょう

Page 53: 5回目Java script構文

i を 0 から始めて

i が 10 になるまで

i を 1 ずつ増やす

Page 54: 5回目Java script構文

後はこれをブレークポイントを置いてステップ実行しながら追いかけてみましょう

Page 55: 5回目Java script構文

ちなみにこう書くと改行されます。HTML なので \r\n 等は使えません。

Page 56: 5回目Java script構文

つまり

と書いたのと同じことになります。

Page 57: 5回目Java script構文

ではここで。こう書くと画面には何が表示されるでしょうか?

Page 58: 5回目Java script構文

配列はデータが順番に並んでいて、

array[ 取得したいデータの番号 ]

という形になります。fileList[1] というのは “ Resource/Image/Enemy.png” と同じです。

Page 59: 5回目Java script構文

ちなみに、

array.push( 何か );

で配列の最後に何かを入れることが出来ます。

Page 60: 5回目Java script構文

ところで、

と同じならなぜそう書かないのか?と思いませんでした?そんなあなたは優秀です。

Page 61: 5回目Java script構文

理由1

何個も同じものを書くのはしんどい。。。3個くらいなら頑張りますけど、 100 とか 1000 とかはしんどい。

Page 62: 5回目Java script構文

理由2

File A

File B

Enemy.png 使わなくなったよー!…忘れずに2か所を修正出来る… ?

Page 63: 5回目Java script構文

ここを消せば、下は修正しなくていい!

配列で管理しておけば

Page 64: 5回目Java script構文

これでもうこの部分が何をしているかなんとなくわかるのでは?

Page 65: 5回目Java script構文

でもここだけわからない。

Page 66: 5回目Java script構文

関数

Page 67: 5回目Java script構文

これを書いてみて、ブレークポイントを置いてテストしてみましょう

Page 68: 5回目Java script構文

もしこう書きなおしたら何が起きると思います?

Page 69: 5回目Java script構文

実際動かしてみると、どうです?1行にすべて表示されてしまって見づらくないですか?せっかくなのでこれを改行表示してみて下さい。

Page 70: 5回目Java script構文

こう書くのが楽ですよねー

Page 71: 5回目Java script構文

というところで今日の授業は終わりです。基礎的な部分しか出来ていませんが、これだけ理解できればプログラムを書くにあたって困ることはありません!プログラムの大半は for 文と if 文と配列です。そしてそれらをまとめて関数にすればすごいプログラム完成です。

Page 72: 5回目Java script構文

宿題1!以下の条件を満たすプログラムを次回までに書いてきてください。

1. 数字が 100 個ある配列を作ってください2. それを全部出力してください3. ただし、出力する部分は関数にしてください4. 数字は改行して出力してください

Page 73: 5回目Java script構文

解答フォーマット

Page 74: 5回目Java script構文

宿題2!

ある n が引数で与えられた時にそれが素数であるかどうかを判定する関数を実装してください

Page 75: 5回目Java script構文

解答フォーマット例

Page 76: 5回目Java script構文

宿題3!

フィボナッチ数列の n 番目の数字を出力する関数を実装してください。ただし、 n の数字は引数で与えられるものとする。

フィボナッチ数列an = an-1+ an-2 となるような数列1, 1, 2, 3, 5, 8, …

Page 77: 5回目Java script構文

解答フォーマット例

Page 78: 5回目Java script構文

宿題 4 !

n の高さのハノイの塔の解法を出力するプログラムを実装してください。n は引数で与えられ、出力のルールは1 => 3といったものを改行しつつ出力すること。特にフォーマットは準備しません。

Page 79: 5回目Java script構文

宿題は全部できれば理想ですが、出来なければ出来るところまでで大丈夫です。2つ目位までは簡単に解けるので実装してきてください。

Page 80: 5回目Java script構文

おわり