JavaScriptとは
ティラノスクリプトの公式サイトにもちょくちょく出てくるJavaScriptとかいう単語、どうやらプログラム言語らしいけど一体何なの?
という方から、JavaScriptでもっともっとゲームを面白くしたい!という方までへ向けて、JavaScriptの基本からティラノスクリプトでJavaScriptを使うコツを挙げていきます。
JavaScriptはJAVAではない
プログラム言語にJAVAという言語があるのですが、JAVAはJavaScriptとは全く別の言語です。
よくあるたとえで、インドとインドネシアくらい違うとかいいますが、それくらい違います。要は全くの別物です。
なので、これからJavaScriptで出たエラーなんかをGoogleで調べるときには、間違っても「JAVA エラー文」とかでググらないようにしましょう。
jQueryの話
JavaScriptをちょっと知っていくと、jQueryなるものがしばしば登場します。
jQueryとは、JavaScriptをより使いやすくするためのライブラリです。拡張パックみたいなもんです。
詳しくは発展編の方で説明します、ここで書いている内容とはそんなに関係ないです。
JavaScriptの書き方
ひとまず基本の書き方を挙げていきます。
多少プログラミングをかじったことのある人ならこれだけわかればだいたい書けるでしょ
変数の定義
var 変数名; //変数の初期値を指定しない場合、初期値はnullになる var 変数名 = 値 //初期値を指定する場合 const 変数名 = 値 //定数を指定する場合 この変数の値は上書きできない let 変数名 = 値 //ブロックスコープを持った変数 varより今風な書き方と思っておけばまあ大丈夫定義されていない変数であれば上記の書き方でいいんですが、ティラノスクリプトのゲーム変数とか一時変数とかシステム変数とかは、定義済みのオブジェクトなので(オブジェクトについては後述)上にあるようなvarとかconstとかletとかはつけなくてもいいです。つけるとエラーになります。
ティラノスクリプトで用意されている変数に値を代入する場合は、下の値の代入の書き方で書きます。
コメントの書き方
//1行だけコメントにする場合 /* 複数行コメントにするときはこれ */注意点として、ティラノスクリプトの[iscript]~[endscript]タグ内で複数行コメントを使用する場合、↓のような書き方はエラーになります。
/* 複数行コメントにするときはこれ ←「/*」とコメントの文章を同じ行に記述している */「/*」「*/」はそれぞれ単独で行を分けて書かないといけないようです。
値の代入
変数名 = 値左側に値を入れる変数、右側に値です。
JavaScriptでは、変数と関数はほぼ同義です。変数の中に関数を指定することもできます。
つまりこういう書き方もできます。
tf.test = function(){
//実行する処理
}
ログの表示
console.log("テスト") //開発者ツールのconsoleタブに表示される
alert("テスト") //ポップアップウィンドウで表示される
開発者ツールとは、ブラウザだとF12キーで表示されるやつです。ティラノスタジオを使っている場合は、「ゲーム再生」の「デバッグを表示する」にチェックを入れてゲーム再生すれば表示されます。
注意として、console.logは、配列でもオブジェクトでもなんでも表示できるんですが、alertは文字列しか表示できません。
if文の書き方
var cond1 = 1
var cond2 = 2
var cond3 = 3
var cond4 = 4
if(cond1 == 1){ //cond1の値が1の場合
//条件式1が真の場合に実行
}else if(cond2 > 2){ //cond2の値が2より大きい場合
//条件式2が真の場合に実行
}else if(cond3 <= 3){ //cond3の値が3以下の場合
//条件式3が真の場合に実行
}else if(cond4 != 4){ //cond4の値が4以外の場合
//条件式4が真の場合に実行
}else{
//偽の場合に実行
}
条件式についてはだいたい↑に書いたものがよく使うものかなと思います。注意として、「同じ」を表すときの演算子は「==」(半角イコール2つ)または「===」(半角イコール3つ)です。
イコールが2つと3つの違いは、3つの方がより厳密な評価をしています。ティラノスクリプトで使うなら「==」の方でいいと思います。
for文の書き方
for(var i = 0 ; i < 10 ; i++){ //iが10より小さい間
//条件式に合致する間実行する処理
}
for()の括弧の中の意味は、「変数に初期値を指定し」「条件式に合致する間処理を実行」「一度のループが終わったときに評価される式」です。↑で挙げた例では、「変数iに初期値として0を指定し」「変数iが10より小さい間処理を実行」「一度のループが終わったときに変数iに1を加算する」となります。 サラッと出てきましたが、「変数名++」は「変数名 = 変数名 + 1」と同じ意味です。
同じような書き方として、「変数名--」というのもあります。「変数名 = 変数名 - 1」と同じ意味です。
関数の定義
//オーソドックスな書き方
var 関数名 = function(引数名){
//実行したい処理
}
//アロー関数
var 関数名 = (引数名) => {
//実行したい処理
}
//無名関数
function(){
//実行したい処理
}
アロー関数というのは、関数のもう一つの書き方みたいなものです。アロー関数のほうが通常の関数の書き方よりルールが厳しくなっています。詳しくはMDNを参照ちなみに、関数には名前をつけないこともできます。名前のない関数を無名関数と言います。例で上げた3つ目の書き方です。
配列の定義、参照
var hairetsu = [1, 2, 3] //3つ部屋のある配列を定義 hairetsu[0] //0番目の部屋(「1」が格納された部屋)を参照 配列の数え方は0,1,2…と続く var hairetsu = [] //部屋数を指定しないで配列を定義 hairetsu[0] = 1 //hairetsuの中の状態→[1] hairetsu[1] = "2" //hairetsuの中の状態→[1,"2"] 数値と文字列を混ぜて配列に格納することもできる hairetsu[10] = 10 //hairetsuの中の状態→[1,2,,,,,,,10] こういう書き方はできるけどやらない方がいい配列とは、ひとつの変数内に複数の小部屋を作ったもののようなものです。
配列の部屋番号([0]とか[1]とか)を「添字」といいます。
オブジェクトの定義、参照
var obj = {
namae1: "test", //文字列を格納
namae2: 0, //数値を格納
namae3: function(){ //関数を格納
//実行する処理
},
namae4: [0,1,2,"3"] //配列を格納
}
var objname = "namae2"
obj.namae1 //obj内のnamae1の値
obj[objname] //obj内のnamae2の値 この書き方でも参照できる、[]で括るときはプロパティ名に変数も指定できる
var obj = {}
obj.namae1 = 1
obj["namae2"] = 2
オブジェクトとは、配列と似ているのですが、配列が「名前のない部屋」だったのに対して、オブジェクトは「名前付きの部屋」です。オブジェクトで各部屋を「プロパティ」、部屋につけた名前を「プロパティ名」といいます。
この書き方はよく見ていると思います。ティラノスクリプトのゲーム変数とかの書き方と同じです。
ティラノスクリプトで用意されている変数は、オブジェクトでもあります。
なので、tf["test"]みたいな書き方もできます。