がしがし開発
書いて書いて書きまくりです。
クラスをぽんぽん作ってどかどか書いてます。擬態語万歳。小学生か。
昨日の文章も変ですね…日本語が。
コンストラクタと継承のあたりが( 昨日の話とのつながりは皆無 )まだ十分に理解できていないので、どっちが先に呼ばれるんだろう、みたいなところで躓いていました。あう。
コンストラクタと継承の関係
オブジェクトが生成されるときのシーケンス
・まずメモリが確保される。
・次に基底クラスのコンストラクタが呼ばれる。
・その次に初期化子に従って派生クラスが初期化される。
・最後にあればだが、派生クラスのコンストラクタの内容が実行される。
です。基本基本。
伝えたい言葉、伝わらない言葉
このブログで結構言ってることですが、人間の論理作用の中には「 継承 」という物がありまして、人間の話す言葉は必ずシーケンスに束縛されます。
で、そこには言外のノイズが入る可能性が非常に高くなるために、伝わらなくなる言葉もあるわけです。
それでも伝える手段が言葉しかないときには、誤解を恐れずに言う他はないわけです。
で、その言外のノイズは継承されていきます。伝わるうちに論理は変容したりするかもしれませんが、受け取られた物が話されます。そうして論理が組み上がることがあります。
自分の場合は、脳みその中は言葉で考えているわけではなさそう…なので( 言語の思考作用とかを軽視しているわけではありません。どうも人から聞く" 考える "感じと違うなあ、という印象だけです )、随時日本語を組み立てながら話したり聞いたりしてるので、しゃべるのが苦手です。
すぐに詰まりますし、反射的な反応はごく限られた反応だけです( だから口癖が多かったり )。
日本語をコンパイルしながら話したり聞いたりしてるので日本語の間違いには結構敏感です。
" 工期延期 "とか、" 高価な価値 "とか( さすがにATOKの間違い指摘は出ませんね )、ら抜き言葉は最近はあんまり気にしないようにしてます。
しゃべるのはそんなにスムーズにはいかないので、暇があれば様々な会話シチュエーションとそれに対応する中間言語生成をずっとやってたりします。飽きません。
ただ、英語も考えながら話します。だから、僕にとっては英語も日本語も同じようにしゃべれますし聞けます。
そういうと驚かれるのですが( 実際違うとしても )、僕の感覚ではそうです。
こうやってキーボードに向かって書いているときは日本語が変になることもしょっちゅう。あとで読み返してみると不思議な日本語も多いですね。
頭に浮かんだフラグメントを直で書いてたりするので、つなげ方が強引だと日本語が変になります。
この文章もそう。結論はないです。結論のある文章は日記に向かない気がしますが、別にそれで何が言いたいわけでも何を擁護したいわけでもありません。
あと今日思ったのは「 人間はスーパーマンじゃない 」ということです。このことぐらい基本的なことってあんまり見かけませんね。たいていの小説や物語の根底にはこのテーマが流れてたりしませんか?
コンバットマニューバもそんな物が結構根底に流れてたりしますが。
あ、開発は進んでいます。
勝利条件判定用にクラスを作ったので、いろんな勝利条件に対応できるシンプルな駆動モデルが完成しました。最近自分がやったことの中ではぴかいちにスマートです( 自画自賛v )。
かいはつー
モデルデータが出来たので( 90式だけ、しかも多分あとで作り直し、がくー )、
スクリプト解釈部のコーディングに入りました。
非常に面倒です。
とにかく似たようなコードを何度も何度も書かないといけません。
書いて書いて書きまくるだけですが、疲れたのでまた明日ー。
明日は休日ですが、都合によりお出かけなのですよ。
具体的な駆動モデルの完成
こんな感じです。
// プレイヤーがヘックスをクリック
// 座標を取得 : (int x, int y)とする
// CMapクラスに対してそのヘックスにはどれだけユニットがいるかを訊く
int units_inthecell; // そのヘックスのユニット数
if ( units_inthecell = CMap.units_inthecell(x, y) )
{
if ( units_inthecell == 0 )
// そこには何もないのでクリックしても無駄
return;
if ( units_inthecell == 複数 )
// そのヘックスのどのユニットかをプレイヤーに選択させる
if ( units_inthecell == 1 )
// ユニットは選択された
}
// 操作するユニットの取得
current_unit = CMap.getunit(x, y, z);
// で、移動開始
current_unit.MoveRange(); // これで画面に移動レンジが表示される。
………
……
…
という感じです。
まだ実装に入ってないので問題はあるかもしれません。
これでいけると思うけどなあ…。
操作するユニットの取得CMap.getunit(x, y, z)をどうしようか悩んでいるところ…。
getunit(x, y)の方がいいのか…( 手元のメモにはそう書いてある。そのときの自分はそっちがいいと思ったらしい )
ユニットはクリックされると移動モードに入ります。
そろそろUI( ユーザーインターフェース )についても考えなくてはいけないですね…。
とにかくこういったゲームは大量の駒を動かすので、ストレスを軽減する方向に持って行かないと。
マウスの利用がその第一ではあったりしますが。
一応プレイスタイルとして、右手マウス、左手キーボードの特定の位置というふうにして、手を動かさないですべての司令が出せるようにしたいと思っています。
前に自分のアドベンチャーゲームに乗せようとか思っていた6キーアサインシステムです。今回は6キーでは足りなそうなので、9キーになっていますが。
9キー、つまり3 x 3キーです。
で、マウスの処理です。
高校数学ばりばりですなあ…。
直線と平面の交わる点を求める、というやつです。数学はいまいち出来が悪いので(苦手、とまではいわないけど)この程度できないとやばいよね、といいつつも内心出来ないかもと不安です。
というわけでちゃんと実装できたらまたマウスの位置を求めるソースの記事でもこのブログにのっけますか。
8月29日のフォローアップ
http://ameblo.jp/delphinus/entry-10003861892.html
ですが、マップ生成にかかる時間が違ってました。
時間がかかるのはモデルの作成なので、マップはどれだけ広げてもあまり生成時間差はでません。
あほなミスでした…。
そら5分も読み込んでたら死にたくなるって( 制作者が )
開発…
ユニットクラスの記述。マップクラスの記述。
どうやって…の部分が今はゲームの具体的なところに言及しようとしています。
移動。これをどう表現するか。
ユニットクラスに移動関数を持たせるのが直感的かつわかりやすいのだけれど…。
これを大本のクラスからどうやっ て呼ぶべきか。操作中のユニットクラスのポインタを持っておく?
ではそのポインタはどうやって持ってくる? マップクラスから?
今日は著しく体調が悪いので頭が回らないのです。
げろげろげろげろ…しそうになったり。げっそり。
Sleipnir 2.00 beta4
というわけで、入れてみました。
Sleipnir 2.00 beta4
主な変更点はいつも通り本家をごらんいただくとして、気になったところをあげてみると…
・Good! なポイント
- タブの追加と削除|タブを閉じた後に表示するタブ|アクティブにした順を追加した。
これで、アクティブにした順に閉じます。Sleipnir1.66互換の動作になります。
- ウィンドウ|スクロール|ページの先頭を追加した。
- ウィンドウ|スクロール|1ページ上へを追加した。
- ウィンドウ|スクロール|1ページ下へを追加した。
- ウィンドウ|スクロール|ページの先頭を追加した。
これで、マウスジェスチャでページのボトムやトップへ移動できるようになりました。
前回[ Sleipnir2.00 beta3 ]http://ameblo.jp/delphinus/entry-10003637714.html の「改良してほしい点」
にあげたところがほとんど直っているのには少し感動です。
これで日常使う分には申し分ないブラウザです。いや、日常使う分っていう注釈はいりませんね。
申し分ないブラウザです。開発者に拍手。
動作も軽くなっているようです。お気に入りはbeta3と互換のようなので、僕の場合beta3からの移行は、お気に入りファイルだけを保存して後はアンインストール。
元の設定に戻すのは手作業でやりました。
そう多い作業量ではありません。
むしろ新機能がいくつか散見されて楽しみであったりもしますが。
おそらく開発が忙しいのでしょうが、beta3からの移行も自動で行えるようにするといいなあ…と。
仕様変更したファイル群を「 伺か 」みたいに更新できるといいなあ…というか、ブラウザはインターネットにつながるのがお仕事なので、それの中に自動更新機能があってもいいかもしれないなあ…と。
開発が忙しいというのは何となくわかるので( 言い訳じゃないですよ? )
というわけでおすすめウェブブラウザSleipnirの愛用者的、Sleipnir 2.00 beta4のレビューでした。
あんまりレビューになってませんが。
タブブラウザ Sleipnir 公式ページ(上級者向け)
とはいうものの
というわけで入力完了!
パトリオットミサイルが弾道弾を迎撃するための項目や、複数の兵装項目を切り替えるための項目を追加したRev1.3です。
画面は少し古いのですが、この後ちょっと改良を施して( 手抜きって言うな )えくせるさんの機能をふんだんに用い、こう、こうですね、説明しにくいので文章をいったん終わって。
画面を分割するのです。
四分割して、左上のペインは、まあ無視するとして、左下のペインには、兵器の名前がずらり、右上のペインには兵器のパラメータがずらり、右下のペインで編集をするのです。
こんなかんじ。
ユニット名 | 攻撃力 | 回避能力 | 耐弾力
-------------------------------------------------------------------------
90式戦車 |
| ここで編集するのだ!
|
こんな感じ。レイアウトがずれるので画像用意するのがいいですね。やっぱり。
シーンクラスを実装し、今までCAlphavilleクラス( 全部の大本のクラス )に乗っけていた背景描画クラスもバトルクラスへ移行して、テスト。
すんなり走ったので満足です。
ただ、14*14のマップで
create model procedure : 3394 msec
だそうですので、これがリニアに増えるとして
100*100 = 14*14の約51倍
だからして、
3394msec * 51= 173秒 = 6分13秒
やばすぎる。
時間かかりすぎ。
もっと高速化します…。おっし!
とにもかくにもさっさと戦車の3dモデルでっち上げて、とにかく進まないことには始まりません。
とにかく開発ができるうちに少しでも遠くへ!


