ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

JavaScript

three.js

https://threejs.org/ JavaScriptで3D描画するのなら、three.jsが良さそうな感じ。 そこまで本格的な3D描画をしようとは思っていないけど、ちょっとしたパーティクル表示に使えるかなと。

tmlib

jsdo.itでいろいろテストするために、何かライブラリを使おうと思い、以前使ったことのあるtmlibを試してみた。 tmlibの公式ページにあるサンプルを見てみたのだが、もう更新されていないようで、コードが無くて実行できないものが多かった。 単純にドットを…

浮動小数点数を整数にする方法

本に載っていた浮動小数点数を整数にする方法。本には正の値の場合しか載っていなかったので、負の場合もやってみた。 var test0 = Math.floor(1.414); var test1 = ~~(1.732); var test2 = (2.362)|0; var test3 = parseInt(3.141); var test4 = Math.floor…

関数を変数のように扱う

ゲームのキャラクタを状態に応じて動作を変えるような場合、C言語とかではif文やswitch文を使って処理を切り替えたりする。 void update() { switch( state ) { case WAIT: wait(); case MOVE: move(); } } C++ならデザインパターンのstateパターンやcommand…

ランダム値

tmlib.jsには整数のランダム値を生成する関数 tm.util.Random.randint(min,max)があったので、どのように実装されているかソースを見てみた。 randint: function(min, max) { return window.Math.floor( Math.random()*(max-min+1) ) + min; } randfloatでは…

tmlib.js

GitHub - phi-jp/tmlib.js: JavaScript をより使いやすく, より便利に, そしてより豊かに. 本日, JavaScript ライブラリ 『tmlib.js』と 10 個のサンプルを公開しました. | TM Life 「enchant.jsスマートフォンゲーム開発講座」の著者が作ったJavaScriptのラ…

浮動小数点数から整数へ

「enchant.jsスマートフォンゲーム開発講座」を読んでいたら、見慣れないコードが。 var r = randfloat(0,255)|0: randfloatは引数の範囲のランダムな値を返す関数で、その結果と0のorをrに代入している。これは色をランダムで求めている箇所のコード。0との…

ランダム値生成 修正

昨日のint版のランダム値生成では、指定した最大値が出ないという間違いがあった。Math.floor()ではなく、四捨五入のMath.round()を使うことで修正。 // ランダム値生成 var randfloat = function(min, max) { return Math.random() * (max-min) + min; }; v…

ランダム値生成

本「enchant.jsスマートフォンゲーム開発講座」に載っていた指定した範囲のランダム値を生成する関数。float版だったので、int版も作ってみた。Math.floor()で整数値へと変換している。 // ランダム値生成 var randfloat = function(min, max) { return Math…

Mathオブジェクトのプロパティ

Math | MDN JavaScriptで数値計算を行うときに用いるMathオブジェクトには定数がプロパティとして定義されている。この中で自分が使うことになると思われるのはPIとSQRT2の二つ。 円周率のPIは当然あるとして、2の平方根SQRT2があるのを初めて知った。 斜め…

apply,callメソッド

JavaScriptには関数にapplyとcallというメソッドが定義されている。形式は次のとおり。 func.apply(thisArg[, argsArray]) func.call(thisArg[, arg1[, arg2[, …]]]) funcは任意の関数で、thisArgがfunc内でthisとして扱われるオブジェクト。argsArrayは引数…

arguments

argumentsとは関数に渡された引数に対応するオブジェクト。関数に渡された複数の引数を取得でき、可変長引数の関数を扱うことが出来る。 arguments.lengthが渡された引数の数を表し、arguments[i]でi番目の引数を参照することができる。 var test = function…

jsdo.itを使いながらデバッグ

jsdo.itで書いたコードのエラー部分を表示させる方法が分かった。 Chromeの右クリックメニューの「要素の検証」を選択してDeveloper Toolsを表示させて、そこのConsoleを選べば、エラー内容が表示されている。

プロトタイプ

JavaScriptにはクラスが無い。代わりにプロトタイプを作成して、それにプロパティやメソッドを追加していって、オブジェクトの動作を定義する。 プロトタイプの作成はまずコンストラクターを生成する。例えば引数も無く何も処理しないコンストラクターは次の…

スコープ

JavaScriptのスコープは「大域スコープ」と「関数内スコープ」しかない。C言語のようにブロック内スコープは無いので注意。 気を付けないとifやforのブロック内で同じ変数名を定義してしまいそうだ。 jsdo.itで試してみたところ、コンパイルでredeclaration…

配列、連想配列

JavaScriptでの配列はArrayを使う。添字はCと同じく0から。Cとは違って配列の要素数を超えてアクセスしてもエラーにならず自動的にサイズが増える。 var array = new Array(3); array[0] = "TEST": 連想配列は配列の添字に文字列が使えるもの。Objectで定義…

リファレンス

JavaScriptリファレンス(オブジェクト別) JavaScriptのオブジェクト別のリファレンスへのリンク。 JavaScriptにオブジェクトはあるけど、クラスの概念は無い。自分はC++を使うことが多いので、これがちょっと感覚的に理解しにくい。 基となるオブジェクト…

jsdo.itのデバッグ方法は?

jsdo.itでコードを打ちながら、たぶん、こういうメソッドがあるだろうと書いてみたら、やっぱり間違っていて正しく動かなかった。 wonderfl.netでは間違っていた場合は、右下にある出力ウィンドウでエラーが表示されるのだが、今回jsdo.itではErrors:0 Warni…