約 5,853,378 件
https://w.atwiki.jp/alicecode12/pages/475.html
XQMF-00Ω ドミネーター スペック表 正式名称 XQMF-00Ω ドミネーター 種別 試作型多用途万能無人戦闘機(Experimental Multimission unmanned drone Fighter) 所属 『資本企業』 全高 13.1m 全長 23.8m 全幅 17.8m 重量 28.5t(装備重量含まず) 動力系 マグノリアファクトリー社製プラズマ利用試作型ラムジェットエンジンXFF-8500/HE1×2、マグノリアファクトリー社製プラズマ利用小型タービン・エンジンFF-4000/HE4×2 最高速度 約6500km/h(リミッター解除・アフターバーナー時)/約7500km/h(リミッター解除・アフターバーナー時・強襲用ブースター装備時) 武装 25mm高速弾機銃×1、試作型パルスレーザー機銃×1、試作型対オブジェクト用大型電磁投射砲×1、隠顕式二連装レーザー砲×1、ウェポンベイ内臓型多目的全方位ミサイルランチャー×2、高機能空対空ミサイル×8、電磁制御式特殊粒子防護膜発生装置 乗員人数 完全独立式学習型戦闘AI『セシリア』 その他 メインカラーリング:黒と藍(耐熱コーティング・高性能ステルス塗料) 特徴 資本企業に属する軍需関係企業『マグノリアファクトリー社』がXMF-00Ω ドミネーターを基として作り出した完全独立型自立無人戦闘機。 コクピットにはパイロットの代わりを務めるようにマグノリアファクトリー社が人工知能技術の全てを集約して作り出した戦闘AI『セシリア』のコアブロックが搭載されており、これによって人体の耐久度を完全に無視した超高負荷の加速・減速、ハイGマニューバを実現した。 『セシリア』は従来のAIとは違い高速の学習機能が付けられており、それによって本社が集めた数々のエースパイロットの戦闘データを入力し、独自に学習をさせ続けることで人間と同等以上の飛行適正を獲得。シミュレーター上ではあるがオブジェクトという兵器がない世界であればこれを搭載したドミネーター一機で世界の空を機体の名の通り「支配」することが出来るという結果が算出された。 学習速度だけでなく反応速度や咄嗟の機転など、とてもAIとは思えないような挙動を見せる時があり、この性質によって航空戦においては軍のトップエースを軽々と上回る成績を出し、一時はマグノリアファクトリー社内部で「パイロット不要論」まで出る始末。因みにこの不要論は社長によって強引に黙らされた。 機体内部にパイロットを乗せないため人体の負担を考えずに済むためエンジンを更に高性能なものに換装し、常にリミッターが解除された状態で飛行する。その最高速度実にマッハ5.5(専用の強襲用ブースターを付ければ脅威のマッハ6以上)。その上加減速の間隔が極めて短く(パイロットの無事を考慮しなくていいため)、ドミネーターの翼とエンジンの回転もあって傍目から見たら冗談としか思えないような異次元の機動を現実のものとする(機体フレームが耐えられるかどうかは別とする)。 理論上これを撃墜できる戦闘機は存在せず、また並の対空兵装も悉く回避するか無効化してしまうためマグノリアファクトリー社では「空の王」という二つ名を送られている。しかしマグノリアファクトリー社の社長曰く「これは人間の可能性を示すための試金石である」と伝えられており、まるで誰かにこの機体を倒されることを望んでいるかのようだったという。 なお、これが弱点と呼べるかどうかは怪しいが、一応制御のために母機から定期的に指示信号を送る仕組みを採用しているのだが、これが途切れて一定時間経過すると独自の判断で行動を開始してしまい、所謂『暴走状態』に突入する。これを止めるには本社に存在する特殊な信号装置を使って強制停止させるか物理的に撃墜することでしか止める術はない
https://w.atwiki.jp/gokeproject/pages/4.html
ゴケプロジェクトについて ゴケプロジェクトとは管理人のポーダが自主制作した動画、模型などを公開するためのサイトです。 年表 2012年 Youtubeにゴケプロジェクト映像部を開設。 同年3月 レゴによるバイオハザード系の動画を公開。 同年7月 バイオハザード動画完結。2014年現在全動画9万回再生突破。 2013年4月 諸事情により1年間の活動休止。 2014年4月 活動再開。ニコニコ動画にアカウント開設し、「バイオハザード Evolution」をYoutubeとニコニコ動画に投稿。現在製作中。
https://w.atwiki.jp/alicecode12/pages/708.html
コンスタンツェ スペック表 正式名称 コンスタンツェ 分類 水陸両用第二世代 用途 対オブジェクト駆逐用兵器 所属 『資本企業』 全長 105m 最高速度 520km/h 推進機関 静電気式+レーザー推進システム 装甲 3cm厚×333層 主砲 共振誘発バイブレーションレールガン✕5 副砲 高周波振動レールガン『エボニー』、低周波振動コイルガン『アイボリー』、戦闘律動調律演算システム『アマデウス』 搭乗者 クロード=ソステヌート その他 メインカラーリング:ピアノの鍵盤のように交互に重なる白と黒 解説 「『資本企業』で最も美しく戦うオブジェクト」と呼ばれる第二世代。 搭載された戦闘律動調律演算システム『アマデウス』とエリートのセンスが合わさり、的確なタイミングで命中させて伝わった振動を共振することで増幅し、パーツの結合の劣化や剥離、内部エリートの液状化を引き起こす。「雑音」となる爆発すら許さずに敵を葬る。 その様子を聴く者は皆口を揃えて、「曲を奏でているようだ」という感想を抱く。 欠点としては砲弾は常に振動しているので弾道が激しくブレることと、振動を与えることを重要視しているため貫通力が低いという点。 コックピットの内部は一面にずらりと並んだピアノの鍵盤を模している。
https://w.atwiki.jp/alicecode12/pages/930.html
青龍 スペック表 正式名称 青龍 分類 総合マルチロール型第一世代 用途 首都防衛用兵器 所属 『大陸』『四神』 全長 80m 最高速度 600m/h 推進機関 静電気式+レーザー推進システム 装甲 1cm✕1000層+反応剥離装甲 主砲 圧縮金属成形砲✕5 副砲 対人機銃、レールガン、コイルガン、レーザー、ミサイルポッド 搭乗者 ファンロン=ラオ その他 メインカラーリング:青(鱗の下は赤) 解説 『大陸』暫定首都である北京の東西南北を守護する4機のオブジェクト、『四神』のうちの一機。「東」担当。 海から最も近い方角の防衛をこなすため、地形に左右されず安定した高性能を発揮することを目的に建造された第一世代。 オニオン装甲の表面にびっしりと敷き詰められた反応剥離装甲が織り成す鱗状の紋様が特徴。 この「竜鱗」は被弾すると尖った棘状に剥離して地面に落下、真上を通りがかる敵オブジェクトに反応して爆発を引き起こし突き刺さって足回りに損傷を与えるまきびしとなる。 主砲には圧縮金属砲弾式を採用(理由は「伝統」とのこと)。砲弾を砲身内部で成形するので連射性能は犠牲になったが貫通力や破壊力等を細かく微調整可能。幅広い用途への対応力の底上げと相手から手の内を読ませにくくする効果がある。
https://w.atwiki.jp/swfspec/pages/97.html
スクリプトオブジェクト ActionCallFunction ActionCallFunction は、関数を実行します。 これには ActionScript の組み込み関数 (parseInt のような) と、ユーザ定義関数、ネイティブ関数が含まれます。 より詳しい情報は ActionNewObject をご覧ください。 フィールド 型 コメント ActionCallFunction ACTIONRECORDHEADER ActionCode = 0x3D ActionCallFunction は次のことを行います。 関数名 (String) をスタックからポップする numArgs (int) をスタックからポップする 引数をスタックからポップする 引数を渡して、関数を呼び出す 関数の戻り値をスタックにプッシュする 戻り値が無い場合 (関数が return ステートメントを持たない場合)、 push undefined メッセージがコンパイラにより生成され、スタックにプッシュされます。 undefined の戻り値はスタックから取り除かれる必要があります。 全ての呼び出しアクション (ActionCallMethod, ActionNewMethod, ActionNewObject, ActionCallFunction) と初期化アクション (ActionInitObject, ActionInitArray) は、引数が逆の順序でスタックに積まれます。右端の引数が最初に詰まれ、左端の引数が最後に積まれます。 これにより、引数の使用時には順序通りにポップされます。 ActionCallMethod ActionCallMethod は ActionNewMethod のように、メソッド (関数) をスタックにプッシュします。 フィールド 型 コメント ActionCallMethod ACTIONRECORDHEADER ActionCode = 0x52 名前付きのメソッドが存在する場合、 ActionCallMethod は次のことを行います。 メソッドの名前をスタックからポップする メソッド名が空文字列か undefined の場合、 object はメソッドのコンテナオブジェクトではなく、関数オブジェクト (function object) になります。 例えば、 CallMethod が object = obj と空文字のメソッド名で呼び出された場合、次の構文と同等の意味になります。 obj(); メソッド名に foo が指定された時は、 obj.foo(); と同等の意味になります。 ScriptObject の object をスタックからポップする 引数の数 args をスタックからポップする 引数をスタックからポップする 引数を渡して、メソッドを呼び出す メソッドか関数の戻り値をスタックにプッシュする 戻り値が無い場合 (関数が return ステートメントを持たない場合)、 push undefined メッセージがコンパイラにより生成され、スタックにプッシュされます。 undefined の戻り値はスタックから取り除かれる必要があります。 全ての呼び出しアクション (ActionCallMethod, ActionNewMethod, ActionNewObject, ActionCallFunction) と初期化アクション (ActionInitObject, ActionInitArray) は、引数が逆の順序でスタックに積まれます。右端の引数が最初に詰まれ、左端の引数が最後に積まれます。 これにより、引数の使用時には順序通りにポップされます。 ActionConstantPool ActionConstantPool は、新しいコンスタントプールを作成します。 古いコンスタントプールが存在する時は上書きされます。 フィールド 型 コメント ActionConstantPool ACTIONRECORDHEADER ActionCode = 0x88 Count UI16 次に続く定数の数 ConstantPool STRING[Count] 文字列定数 ActionDefineFunction (注) ActionDefineFunction は SWF 7 以降では滅多に使用されません。 これは ActionDefineFunction2 に置き換えられました。 ActionDefineFunction は、与えられた名前と本体サイズで関数を定義します。 フィールド 型 コメント ActionDefineFunction ACTIONRECORDHEADER ActionCode = 0x9B FunctionName STRING 関数名 (空の場合、匿名関数) NumParams UI16 パラメータの数 param 1 STRING パラメータ名 1 param 2 STRING パラメータ名 2 ・・・ param N STRING パラメータ名 N codeSize UI16 続くコードのバイト数 ActionDefineFunction は FunctionName, NumParams, [param1, param2, …, param N], codeSize の順でパースされます。 ActionDefineFunction は、次のことを行います。 アクションタグから関数名をパースする タグのパラメータをスキップする タグからコードサイズをパースする DefineFunction タグの後には、 codeSize で指定されたバイト数のアクションデータが続きます。これは、関数の本体になります。 関数用のコードを得る ActionDefineFunction は、次の方法で使用することができます。 使用法 1 匿名関数をスタックにプッシュします。 この関数は 関数リテラル で、命令文の代わりに式で表現されます。 匿名関数は次のような ActionScript で定義されます。 area = (function () {return Math.PI * radius *radius;})(5); 使用法 2 指定された FunctionName と関数定義により変数をセットします。 こちらは、より慣例的な方法で次のような ActionScript で定義されます。 function Circle(radius) { this.radius = radius; this.area = Math.PI * radius * radius; } ActionDefineLocal ActionDefineLocal は、ローカル変数の定義と値の設定を行います。 変数が既に存在する場合は、新しいもので置き換えられます。 フィールド 型 コメント ActionDefineLocal ACTIONRECORDHEADER ActionCode = 0x3C ActionDefineLocal は次のことを行います。 値 (value) をスタックからポップする 名前 (name) をスタックからポップする ActionDefineLocal2 ActionDefineLocal2 は、ローカル変数を定義しますが値をセットしません。 変数が既に存在する場合は何も行いません。 ローカル変数の初期値は undefined になります。 フィールド 型 コメント ActionDefineLocal2 ACTIONRECORDHEADER ActionCode = 0x41 ActionDefineLocal2 は次のことを行います。 名前 (name) をスタックからポップする ActionDelete ActionDelete は名前付きのプロパティを ScriptObject から削除します。 フィールド 型 コメント ActionDelete ACTIONRECORDHEADER ActionCode = 0x3A ActionDelete は次のことを行います 削除するプロパティの名前をスタックからポップする プロパティを削除するオブジェクトをスタックからポップする ActionDelete2 ActionDelete2 は名前付きのプロパティを削除します。 Flash Player は最初、現在のスコープでプロパティを探します。 見つけられなかった場合、より大きいスコープへと範囲を広げてプロパティを探します。 フィールド 型 コメント ActionDelete2 ACTIONRECORDHEADER ActionCode = 0x3B ActionDelete2 は次のことを行います 削除するプロパティの名前をスタックからポップする ActionEnumerate ActionEnumerate は、 ActionScript オブジェクトの全ての "スロット" の名前を取得します。 オブジェクト obj の、全ての名前を表す記号を X とすると、 obj.X のような形式で表されるものを検索します。 ActionEnumerate は、 ActionScript の for .. in 文の実装に使われます。 (注) 特別なスロット名は省略されます。 特別な名前のリストは、 ECMA-262 標準の、 DontEnum の項目を調べてみてください。 リンク Under Translation of ECMA-262 3rd Edition http //www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ 8 型 (Types) http //www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/8_Types.html#section-8.6 フィールド 型 コメント ActionEnumerate ACTIONRECORDHEADER ActionCode = 0x46 ActionEnumerate は次のことを行います。 オブジェクト変数の名前 (スラッシュ区切りかドット区切りで表される) をスタックからポップする スロット名のリストの終わりを指すために、 null 値をスタックにプッシュする それぞれのスロット名 (文字列) をスタックにプッシュする (注) プッシュする順番は未定義です。 ActionEquals2 ActionEquals2 は ActionEquals と似ていますが、 ActionEquals2 は型を区別します。 等価比較アルゴリズムは ECMA-262 Section 11.9.3 を使用します。 フィールド 型 コメント ActionEquals2 ACTIONRECORDHEADER ActionCode = 0x49 ActionEquals2 は次のことを行います。 arg1 をスタックからポップする arg2 をスタックからポップする 戻り値をスタックにプッシュする ActionGetMember ActionGetMember は、名前付きプロパティをオブジェクトから検索し、そのプロパティの値をスタックにプッシュします。 フィールド 型 コメント ActionGetMember ACTIONRECORDHEADER ActionCode = 0x4E ActionGetMember は次のことを行います。 メンバ関数の名前 name をスタックからポップする ScriptObject object をスタックからポップする プロパティの値をスタックにプッシュする 例えば、オブジェクト obj のプロパティ foo に次のように値が割り当てられた時、 obj.foo = 3; ActionGetMember の object を obj に、 name に foo を指定すると、スタックに 3 をプッシュします。 指定されたプロパティが存在しない時は、 undefined をスタックにプッシュします。 object パラメータは Object 型にする必要はありません。 object パラメータが number, Boolean, string のようなプリミティブ型の場合は、一時的なラッパーオブジェクト Number, Boolean, String へと自動的に変換されます。 これにより、ラッパーオブジェクトのメソッドが、プリミティブ型に対してでも呼び出すことができます。 例えば次の例は、 5 と表示されます。 var x = "Hello"; trace (x.length); この例の変数 x には、プリミティブ文字列 "Hello" が代入されています。 x は、 String 型のラッパーオブジェクトに一時的にラップされ、その上で length プロパティを取得します。 ActionInitArray ActionInitArray は ActionInitObject と同様に、 ScriptObject 内の配列の初期化を行います。 新しく作成されたオブジェクトはスタックにプッシュされます。 スタックには、新しく作成されたオブジェクトの参照のみが積まれます。 ActionInitArray の後に続く SetVariable か SetMember アクションにより、新しく作成されたオブジェクトを変数に代入することができます。 フィールド 型 コメント ActionInitArray ACTIONRECORDHEADER ActionCode = 0x42 ActionInitArray は要素数 (elems) をスタックからポップした後、 [arg1, arg2, …, argn] をポップします。 ActionInitArray は次のことを行います。 引数 (または要素) の数をスタックからポップする 引数がある場合、 ActionInitArray は、指定された要素数の配列オブジェクトを初期化する ScriptObject として配列を初期化する オブジェクトの型を Array にセットする スタックから値をポップし、それを配列の初期値として代入する 全ての呼び出しアクション (ActionCallMethod, ActionNewMethod, ActionNewObject, ActionCallFunction) と初期化アクション (ActionInitObject, ActionInitArray) は、引数が逆の順序でスタックに積まれます。右端の引数が最初に詰まれ、左端の引数が最後に積まれます。 これにより、引数の使用時には順序通りにポップされます。 ActionInitObject ActionInitObject は ActionInitArray と同じようにオブジェクトを初期化します。 新しく作成されたオブジェクトはスタックにプッシュされます。 スタックには、新しく作成されたオブジェクトの参照のみが積まれます。 ActionInitArray の後に続く SetVariable か SetMember アクションにより、新しく作成されたオブジェクトを変数に代入することができます。 フィールド 型 コメント ActionInitObject ACTIONRECORDHEADER ActionCode = 0x43 ActionInitObject は要素数 (elems) をスタックからポップした後、 [value1, name1, …, valueN, nameN] をポップします。 ActionInitObject は次のことを行います。 初期プロパティの数をスタックからポップする ScriptObject としてオブジェクトを初期化する オブジェクトの型を Object にセットする 初期プロパティをそれぞれスタックからポップする 各初期プロパティは、最初に値がポップされ、次に名前がポップされます。 名前は文字列に変換されますが、値はどのような型でもかまいません。 全ての呼び出しアクション (ActionCallMethod, ActionNewMethod, ActionNewObject, ActionCallFunction) と初期化アクション (ActionInitObject, ActionInitArray) は、引数が逆の順序でスタックに積まれます。右端の引数が最初に詰まれ、左端の引数が最後に積まれます。 これにより、引数の使用時には順序通りにポップされます。 ActionNewMethod ActionNewMethod は、新しいオブジェクトを作成するためにコンストラクタ関数を呼び出します。 新しいオブジェクトが作成され、コンストラクタ関数に this キーワードが渡されます。 コンストラクタ関数に引数を指定することもできます。 コンストラクタ関数の戻り値は破棄されます。 ActionCallMethod や ActionNewObject と同じように、新しく作成されたオブジェクトはスタックにプッシュされます。 フィールド 型 コメント ActionNewMethod ACTIONRECORDHEADER ActionCode = 0x53 ActionNewMethod は次のことを行います。 メソッドの名前をスタックからポップする ScriptObject をスタックからポップする メソッドの名前が空の場合、 ScriptObject は関数オブジェクトとして扱われ、これをコンストラクタ関数として呼び出します。 メソッドの名前が空でない場合、 ScriptObject 内の、そのメソッドを呼び出します。 引数の数をスタックからポップする メソッド呼び出しを実行する 新しく作成されたオブジェクトをスタックにプッシュする 特定の戻り値が無い場合 (関数が return 文を持たない場合)、コンパイラは push undefined を生成し、それをスタックにプッシュします。 この戻り値の undefined は、スタックからポップされる必要があります。 全ての呼び出しアクション (ActionCallMethod, ActionNewMethod, ActionNewObject, ActionCallFunction) と初期化アクション (ActionInitObject, ActionInitArray) は、引数が逆の順序でスタックに積まれます。右端の引数が最初に詰まれ、左端の引数が最後に積まれます。 これにより、引数の使用時には順序通りにポップされます。 ActionNewObject ActionNewObject は、コンストラクタ関数を呼び出します。 新しいオブジェクトが作成され、コンストラクタ関数に this キーワードが渡されます。 オプションで、コンストラクタ関数の引数をスタック上に指定することもできます。 コンストラクタ関数の戻り値は破棄されます。 ActionCallMethod や ActionNewMethod と同じように、新しく作成されたオブジェクトはスタックにプッシュされます。 フィールド 型 コメント ActionNewObject ACTIONRECORDHEADER ActionCode = 0x40 ActionNewObject は次のことを行います。 オブジェクト名 (文字列) this をスタックからポップする numArgs (int) をスタックからポップする 引数をスタックからポップする 名前付きオブジェクトのコンストラクタ関数を呼び出す コンストラクタ関数には指定された引数が渡され、新しく作成されたオブジェクトには this キーワードが使われる コンストラクタ関数の戻り値は破棄される 新しく作成されたオブジェクトがスタックにプッシュされる 全ての呼び出しアクション (ActionCallMethod, ActionNewMethod, ActionNewObject, ActionCallFunction) と初期化アクション (ActionInitObject, ActionInitArray) は、引数が逆の順序でスタックに積まれます。右端の引数が最初に詰まれ、左端の引数が最後に積まれます。 これにより、引数の使用時には順序通りにポップされます。 ActionSetMember ActionSetMember はオブジェクトのプロパティをセットします。 プロパティが存在していなかった場合は、新しく作成されます。 存在するプロパティが指定された時は上書きされます。 フィールド 型 コメント ActionSetMember ACTIONRECORDHEADER ActionCode = 0x4F ActionSetMember は次のことを行います。 新しい値をスタックからポップする オブジェクト名をスタックからポップする オブジェクトをスタックからポップする ActionTargetPath ActionTargetPath は、指定されたオブジェクトのターゲットパスをスタックにプッシュします。 スタック上のオブジェクトの型が MovieClip の場合、オブジェクトのターゲットパスはドット区切りの表記でスタックにプッシュされます。 オブジェクトの型が MovieClip でない場合、結果はムービークリップのターゲットパスの替わりに undefined になります。 フィールド 型 コメント ActionTargetPath ACTIONRECORDHEADER ActionCode = 0x45 ActionTargetPath は次のことを行います。 オブジェクトをスタックからポップする ターゲットパスをスタックにプッシュする ActionWith スクリプトの with ブロックを定義します。 フィールド 型 コメント ActionWith ACTIONRECORDHEADER ActionCode = 0x94 Size UI16 続くコードのバイト数 ActionWith は次のことを行います。 with ブロックを開始するオブジェクトをスタックからポップする ActionWith タグの Size (コードの長さ) をパースする 呼び出しの深さが最大の深さを超えていないかチェックする SWF 6 以降 最大の深さは 16 SWF 5 最大の深さは 8 with の深さが最大の深さを上回っている場合、 Size バイトのデータは実行する代わりにスキップされる ActionWith タグの後ろの Size バイトのアクションコードを with ブロックの本体とする with ブロックをスコープチェーンに追加する 移動 前のページ SWF 5 アクション 次のページ 型
https://w.atwiki.jp/mblen/pages/41.html
Summary. ある意味JavaScriptの根幹をなすともいえる「オブジェクト」についてです。 オブジェクトって何? 誤解を恐れずに言えば、 オブジェクト とは「データの集まり」のことです[1]。初めからJavaScriptで用意されている「配列(Array)」などはまさにその代表例です。 しかし、オブジェクトは単なるデータの塊というわけではありません。通常彼らには「メソッド」という関数みたいなものが定義されています。やや比喩的な言い回しですが、用意されたメソッドを呼び出せば、彼らに色々な仕事をやらせることができます。その意味では「便利な小間使い」みたいなものともいえます。 例を見てみましょう。たとえば a = new Array( 1, 2, 3 ); a.reverse(); と書いた場合、まず「配列」という構造のオブジェクトが作られます。その後、このオブジェクトのもつ reverse というメソッドが呼び出され、中身が逆順に入れ替わります。利用者が中身をごちゃごちゃいじる必要はなくて、単にメソッドを呼べばいいわけです。 例: 日付オブジェクト JavaScriptにはたくさんの種類のオブジェクトが用意されています。その中でいかにも「小間使い」という感じがするのはこの Date クラスじゃないかと思います。 var date = new Date(); window.alert(date.toLocaleString()); window.alert(date.toUTCString()); 1行目で現在時刻を表すオブジェクトが作られます。"January 10, 2010 12 34 5" のような引数を渡せば現在時刻以外の時刻を表すオブジェクトを作ることもできます。 Dateオブジェクトには、それが表す時間を色々なフォーマットで表示するメソッドが用意されています。中でも、日本からアクセスされたら日本時間を、イギリスからならイギリス時間を・・・、という date.toLocaleString() はお世話になる機会が多いのではないかと思います。 試すと分かりますが、単に日本時間に直すだけでなく表示も日本風になります。一方、date.toUTCString() は世界標準時を返すメソッドで、こちらは英語になります。これらの雑務は人間が毎回毎回コーディングするような代物ではありません。オブジェクトに任せましょう、というわけです。 例: ウィンドウオブジェクト 普段何気なく使っているオブジェクトの代表例は window でしょう。さっきも window.alert() が出てきましたね。これもオブジェクトで、現在Webページを開いているウィンドウを管理しています。非常に多岐にわたるメソッドを持っていて、まともに紹介しようとしたらちょっと大変です。 世間で出回っているJavaScriptのTips集では、この window に命令を出して何かやらせるケースが多いです。空気のような存在ですが大事なオブジェクトといえます。 オブジェクトを作る 実はこのオブジェクトというもの、自分で1から作ることもできます。 完全に手作業で作る obj = new Object(); obj.name = "Adam"; obj.age = 18; obj.hello = function(target){ window.alert("Hello, " + target + ". I m " + this.name + "."); } まず1行目で obj という真新しい空っぽのオブジェクトが作られます。このオブジェクトに名前を付けたり、年齢を決めたりしてあげます。最後に hello() という、挨拶を行わせるメソッドを定義しています。 メソッドの定義の中に出てくる this とは、この仕事を実行するオブジェクト自身のことを指します。自分の名前を名乗ってもらうためには this.name と書きます。 クラスを経由して作る さっきの例だとオブジェクトを1個ずつ自分で作らないといけないので、あまりありがたみがありません。そこで普通は「テンプレ」[2]を用意して量産します。 Person = function(na){ this.name = na; } Person.prototype.talk = function(a){ window.alert(this.name + " Hi, " + a.name + ". How are you?"); a.reply(this); } Person.prototype.reply = function(a){ window.alert(this.name + " I m fine, thank you."); } boy = new Person("Tom"); girl = new Person("Alice"); boy.talk(girl); girl.talk(boy); まず最初に Person という関数を作ります。JavaScriptは不思議なプログラミング言語で、なぜか関数を作るとそれを new できるようになります。実行すると、name というフィールドを持ったオブジェクトが返されます。 メソッドを持たせるには、上のように Person.prototype.なんちゃら という関数を定義します。そうすると、new したとき自動的にメソッドが追加されます。回りくどいですが、効率上の都合でこうなってるらしいです。 メリット 構造体的なこと たとえば今、トランプを使ったゲームを制作しているとしましょう。別に本当に作るわけじゃないので細かい仕様は考えませんが、どんなゲームであれ「山札から1枚カードを引く」という関数は必要になるでしょう: drawCard = function(){ ...... return カード; } さて、たとえば「スペードの3」を結果として返すときにどう書いたらいいでしょう? これが "スペード" だけなら文字列で返せばいいですし、数字だけなら int で返せばいいです。しかし、実際はこれらを組にして返さないと意味がありません。 まあ、逃げ道は色々あるんですが、オブジェクトを利用すれば Card = function(suit, num){ this.suit = suit; this.number = num; } みたいなクラスを定義しておいて、このクラスのオブジェクトを返す方法が考えられます。これならトランプ以外の、もっと複雑な情報を持つカードでも応用できます。 名前空間的なこと 上のコードに出てきた this.suit や this.number などのことを一般的に「フィールド」または「メンバ変数」と呼びます。当たり前ですが、これらはちゃんと . を使って指定しないとアクセスできません。したがって、 var suit = "スペード"; var card = new Card(suit, 3); ...... suit = "ハート"; // 広域変数の suit だけ再代入される のようなコードを書いても card には何の変化もありません。逆に言うと、広域変数のほうの suit はいつどこで内容が書き換わるかわからないということです。意図して書き換えるならともかく、うっかり勘違いをして上書きしてしまった場合はバグの原因になります。 特に恐ろしいのは、他の人の書いたコード(自分が書いたコードでも半年以上前だと他人みたいなもんです)と自分の書いたコードを混ぜ合わせるときです。変数や関数の名前がたまたまダブっていた場合、どこかしらで予期せぬ不具合が発生します。事前に対処すればいいのですが、こういうのはすごくタルいです。 それに比べると、メンバ変数のほうは頑丈です。 他の人のコードの中で上の card.suit をついうっかり書き換えることなんて考えられるでしょうか? いやまあ、たまたまその人も card という変数を使っていた・・・って可能性はありますが、それは card が原因なわけで。わざわざ名前の重複回避に配慮しなくても、余程のことが無い限りうまくいきます。 再利用 オブジェクトは関連するデータをひとまとめにしたものです。そのため、フィールドの数が10だろうが20だろうがバラバラになりにくいです。加えて、大抵の仕事はメソッドを通じてオブジェクト自身にやらせるので、利用者は細かい裏事情について知る必要がありません。 これらの理由から、一度作ったクラスは比較的気楽に再利用できることが多いです(もちろん設計次第だが)。このあと字句解析で Lexer というクラスを作りますが、使い方さえ覚えておけば細かい実装など忘れてしまっていいわけです。 [1] 細かいことを言い出すと色々難しいのだけど。別にフィールドがなくてもオブジェクトなわけだし。 [2] 普通は「クラス」と呼ばれる。プログラミング言語によっては、クラスを使って作られたオブジェクトをそのクラスの「インスタンス」と呼ぶこともある。
https://w.atwiki.jp/alicecode12/pages/582.html
ガルダ スペック表 正式名称 ガルダ 分類 陸上専用第二世代 用途 対オブジェクト駆逐用兵器 所属 『信心組織』 全長 200m 最高速度 900km/h 推進機関 タンデム翼(ジェット)+エアクッション式推進システム 装甲 5cm×200層 主砲 下位安定式プラズマ砲×2、高出力レールガン×4 副砲 レールガン、コイルガン、レーザービーム、欺瞞兵装、ミサイルポッドなど 搭乗者 ディアナ=オンディーヌ その他 メインカラーリング:ブラック 解説 ユーラシア平原などの広大に過ぎる地形で利用される、地面効果翼機を模した陸上専用第二世代オブジェクト 球状本体に揚力を発生させやすい、長方形型の巨大なタンデム翼を取り付け、ジェットエンジンによって航行する。 また戦闘時は球状本体に取り付けられたエアクッションを起動させ、翼のジェットは補助動力として運用する。 主砲は二門の下位安定式プラズマ砲と四門の高出力レールガン。 積載量の多いという利点を生かし、近接の脆弱さをカバーするために威力に優れる下位安定式プラズマ砲を搭載。 遠距離から航行中の砲撃のために高い出力を持つレールガンを装備することで遠距離制圧能力も確保。 副砲各種も様々な種類が大量に装備されているため武装による対応力は高いものに仕上がっている。 『信心組織』と『大陸』による国境紛争の「回廊戦争」に正規兵として隷下師団と共に参戦。 正面からの撃破を狙ったが、実弾は全てレーザーで撃墜され、旋回性の低さが露呈し対応できぬまま撃破された。 エリートは回収されたが、政治的都合によって「白旗」は出されずに隷下師団ごと即座に殲滅されて死亡した。 コンセプト リメンバータタール 特徴 タンデム翼を利用した地面効果翼機、積載量が多いため重装備化している 弱点 陸上航行速度は目を見張るものがあるが戦闘時はせいぜい450km/hしか出ない上、旋回性能が割と低い
https://w.atwiki.jp/alicecode12/pages/720.html
ジャガーマン スペック表 正式名称 ジャガーマン 分類 第一世代 用途 所属 『信心組織』 全長 120m 最高速度 830km/h 推進機関 四脚推進システム+静電気 装甲 1cm×1000層 主砲 プラズマブレード切替式回転式アーム兵装×4 副砲 コイルガン、光子ビーム砲 搭乗者 不明 その他 メインカラーリング:黄色と茶色のまだら 解説 『信心組織』開発の機動特化第二世代オブジェクト。ネコ科の脚をモデルに開発された四脚により一瞬でトップスピードまで加速することが可能。プラズマブレード切替式回転式アーム兵装により高速機動で翻弄しつつ斬り裂く戦法を得意とする。 一方、高速機動の代償に脚部への負担が高く、数時間しか稼働が出来ない。また四脚使用後はメンテナンスが必ず必要となる。 他勢力との領土戦争のため『コンゴ森林保護区』に投入されたが目立つカラーリングが災いして遠距離から『キニョンガ』の一方的な狙撃を受け、一度もその姿を見ることもなく大破。エリートは死亡し、機体は『ヤナギカゲ重工』によって回収され部品は他のオブジェクト建造に再利用された。 コンセプト 四脚による高速機動 特徴 ジャガーの脚をモデルにして作られた加速性能に富んだ脚部 弱点 脚部への負担が高く、数時間しか稼働出来ない
https://w.atwiki.jp/fujiyan/pages/28.html
WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 目標 オブジェクト指向的技法を用いないプログラムから、用いたプログラムへのリファクタリングを通して、 インターフェース(interface)の活用法とフレームワーク(framework)の概念をお伝えします。 対象 インターフェースの使い道がピンとこない方 インターフェースと抽象クラス(abstract class)の使い分けがピンとこない方 オブジェクト指向の何がウレシイのかピンとこない方 コンテンツ オブジェクト指向プログラミング心得 サンプル~二項演算 古典だって重要 じゃあ何が問題? じゃあオブジェクト指向ならどうする? では試してみましょう ようやくクラス継承の登場 そしてフレームワークへ
https://w.atwiki.jp/alicecode12/pages/787.html
ブレイブストライカー スペック表 正式名称 ブレイブストライカー 分類 第二世代 用途 対オブジェクト駆逐用兵器 所属 『正統王国』 全長 100m 最高速度 540km/h 推進機関 静電気式+レーザー推進システム 装甲 1cm厚×1000層 主砲 機体貫通式金属槍投射砲(最大装弾数6発)、近接戦闘用高周波振動斧槍✕2 副砲 槍刃研磨用レーザー鑢 搭乗者 タツミ=ヴァーミリオン その他 メインカラーリング:燃え上がるような赤 解説 機体の球状本体を貫通するように配備された主砲と左右に携えた近接格闘用のハルバードが特徴の第二世代。主砲の位置の関係上、コックピットと動力炉は中心よりもやや高い位置にある。 主砲である機体貫通式金属槍投射砲は砲弾となる50mに及ぶ巨大な金属槍の「穂先」を発射前に専用のレーザー鑢によって加工することで、オニオン装甲を貫く「針」から大きく凹ませて内部に衝撃を伝える「錘 」まで自在に鋭さの調整が可能。 高周波振動斧槍を用いた近接戦闘は搭乗するエリートが勉強熱心なため、各勢力の強豪エリートの戦闘記録を基に模倣・統合した粗が目立つがそれ故に読みにくい我流で果敢に攻める。 遠近両方に対応する二種類の装備を持つが、機体貫通式金属槍投射砲には厳しい装弾制限があるため厳密には「遠距離砲撃手段を持つ近接戦闘オブジェクト」に分類される。