各自気がついたら書き込み,開発に役立てましょう†
実装済項目†
- 画面解像度の変更 1024x768 にしてみた。
- 初期化時に,AIをランダムな位置に
- AI&自機の壁との当たり判定
- 斜め移動
- FPS制御
- 弾を打つ
- 機体同士,剛体での当たり判定
- デバッグ用に,各AIの(配列内の)データを画面表示
- エンディング(結果表示)画面
- 展示時は,勝ったか負けたか(順位も?)
- AI対戦時は,順位
未実装項目†
- 機体の回転
- 音
- エフェクト
- スタート画面
- ゲームとして展示できるように
- キー入力のうち,弾の発射,自機の回転を優先すべき?
こんなルール,こんな機能をつけたい!†
質問、相談、議論、雑談、etc...†
- 開発の主体はこのページで.開発中のファイルも,このページに添付していきましょう. -- Chibits
- 現時点で最新の Visual C++ 2010 Express, DXライブラリ Ver 3.04b を想定しています.動作確認にどうぞ
main.cpp . -- Chibits
- 300行超えとか書きすぎた気がするけど,人数少ないから気にしない.プログラムする上での枠組みを作って,AIが適当に動くところまでしか実装していません(あとの人が実装しやすいように,わざとです).画面外に飛んでっちゃう.
20101103.zip -- Chibits
- zip受け取りましたー。 これを元に書き加えます。
ボクの分は5日AM03:00頃アップ予定。 -- 久住 涼
- zip上げましたー。 関数move()について、 東西南北(x軸y軸)が逆なのは流石にまずいのでテコ入れしました。 -- 久住 涼
- hit()関数に機体が壁にぶつかったときの反射のやつ移しました。斜め移動も出来てます。
20101105.zip -- 今井 健太
- 遅ればせながら講評.
反射はhit.c内に.また,WIDTHは使わずWIN_WIDTH - IMG_SIZEを直接使った方がいい.なぜなら,この方法を使う場合,サイズの違う画像(例えば弾)を実装するたびにマクロを追加しなきゃいけないから.
AIと人間で同じインタフェースを使ったのは良い実装.あと壁との当たり判定も現状では良い実装,ただし機体同士の当たり判定と組み合わさった時にバグる可能性はある > 久住 涼 -- Chibits
- 講評.humOperate.cppについて,キー操作で斜め方向の加速ができない.例えば,右上を押しても,return (N);してしまう. > 2人共 -- Chibits
- humOperateについて。(斜め移動) if判定の順番を、 斜め4方向->上下左右4方向 順で調べれば解消できるかと。 -- 久住 涼
- 昨日は寝落ちしてしまいました・・・。あと1時間のうちには作業報告ができるかと思います。ご迷惑をおかけして大変申し訳ありません。 -- HK
- 上げましたが・・・特に何も進められませんでしたorz 報告としては、hit.cpp内に機体同士の当たり判定を作る予定でしたが、うまくいきませんでした。 物理の教科書的には同質量の物体同士の衝突の際には速度が入れ替わるのが正解のようですが・・・。 おそらくどうにかして合体しないようにすればうまくいくかと思います。 FPSも挑戦しましたがうまく動作しなかったのでこれもまた丸投げになってしまいました・・・。 以上、遅くなってしまい申し訳ありません。 -- HK
- 講評.みんなで読み書きするソースです.インデント揃えましょう.
定数(26)は,ソース内には書かないようにしましょう(IMAGE_SIZE/2と書く).
if文以降は理解不能.まぁ前々回ぼそっと言ったけど,何も考えずに当たり判定実装してみて,くっついたり飛んでったりするのはよくあること. -- Chibits
- バイトから帰ってきて寝落ちしてしまったので全く進んでない.
Chibitsさん指摘分については多分修正済み. FPS、衝突判定までは実装&動作確認済みだけどもうちょいいじった所との差分を上げたので、下手したら動かない?
明日時間あれば続きやるかも -- 有機酸
- 講評.Sleep()ではなくWaitTimer()を使う(依存するライブラリはできるだけ少なくする).16(ms)はマクロにしちゃった方がいいんじゃないかなぁ(あとでパラメータを読む時に.hだけを見ればいいという意味で).
機体同士の反射の if(ai[i].x > ai[j].x) の条件は不要(あとで2乗するので). -- Chibits
- そういえば.今週の金曜は,内定した会社の懇親会なので休みます.誰かフォローお願い.当日の展示当番だけど,土曜の午後は研究室公開に参加するので不可になりました. -- Chibits
- >反射の条件 そりゃそうだ なんか玉の半径引いて・・・とかやってたからそっちにあわせてif付けたんですが、半径とか考える必要ないだろって思ったときに消してませんでした.
金曜は自分も研究室公開なので顔出すのは厳しそう 土日は多分いるんじゃないかと思われますが -- 有機酸
- トップバッターのセンスが無くてごめんなさい的な,大きな変更点は2つ,1.行動取得(action())と移動(move())を分離した,2.重複防止のためdefine等の名前変更あり
回転の実装(壁と機体との当たり判定,AI_RETURNに回転を実装(キーはZ(時計回り),X(反時計回り)),弾の射出方向の追従まで.機体同士の当たり判定では回転は未実装).
弾の実装(射出初期地点は適当,機体と弾との当たり判定は未実装)
機体同士の当たり判定を,質点系から剛体に変更
デバッグ情報の出力の実装
ファイルの追加: action.cpp, aiRandom.cpp(aiを増殖させてみるために作った)
画像ファイル: 弾用の画像追加(whiteBullet.png),回転に対応するために画像ファイル変更
strcpy() -> strcpy_s()(オーバーフローの警告防止)
Sleep() -> WaitTimer()(ライブラリはDXライブラリに依存する)
20101110.zip -- Chibits
- $ diff -r 20101107 20101110 | wc
426 1477 11660
$ wc *.cpp *.h
709 1596 17744 total
もしかしたらmove()の後にaction()したほうがいい,かもしれない.あとhit()は,サブルーチンで分けたほうが見やすいかも.
(´-`).。oO(・・・誰か俺の講評してくれないのかな・・・・・・) -- Chibits
- どーも、風邪っ引きです。
今日僕の担当ですが、体調的にほとんど進まないと思われます。
弾と機体の当たり判定が実装できればいいほう。 -- 久住 涼
- ほとんど仕事してませんが、今日の分上げました。
どんな仕事したかはzip付属のtxtファイル見てください。
明日には体調戻して、這ってでもPG集会出ますです。
20101111.zip -- 久住 涼
- 弾が機体に当たったら消えるようにしました。しかし、描画されてないだけでまだ機体は死んだ地点にいます。
20101112.zip -- 今井 健太
- 昨日指摘があったように、死んだ機体を画面外に追放するようにしました。あとは残り1体になったときに終了するようにしました。 -- HK
- 20101111講評: 機体と弾との当たり判定に間違い.丸と丸の当たり判定で半径が異なる場合,円の中心座標の差分をとらないと,ズレてしまう.
あとこれはルールの議論だけど,自分の打った弾にも当たったほうが面白いんじゃないかな. > 久住 涼 -- Chibits
- 20101112講評: if( ai[i].live ) { と書くとネストが深くなるので,if( !ai[i].live ) continue; と書くとよい.弾はそうやって実装されています.他のコードを読んで参考にしてから,自分で書きましょう.
死んだ場所で跳ね返る: hit()内で,live==1のAIのみ当たり判定を考える. > 今井 健太 -- Chibits
- 20101113講評: live_sumは,初期化時にaiの数を代入し,死んだら-1すると処理が軽い.
死んだときは,画面外に存在させるのではなく,そもそも存在しないようにしましょう(つまり,hit(),move()etc...で,liveを確認してから処理する).
strcpy(ai[1].name,"Red");は不要.各AIの初期化関数に任せましょう.
3秒待つモードを,gameModeの1つのモードとして作ってもいいかも. > HK -- Chibits
- 各位へ連絡: 26日の展示開始に間に合うよう,AIを作り始めてください.
未実装項目がまだ多数あるので,月火実装できる人は,ここで名乗っちゃってください. -- Chibits
- 今日・明日でなんかしらやろうと思いますけど、どうしましょう 何が出来るようになると嬉しい感じ? -- 有機酸
- 自分の打った弾にも当たるようにすると、打った瞬間に自滅する可能性があるので外しました。
具体的には、「自機の速度が弾の速度より早く、なおかつ自分の進行方向に弾を打つ」場合です。 > Chibits -- 久住 涼
- 上記未実装項目の,上から3つは実装したいですね > 有機酸
弾の速度=射出時の自機の速度+弾のデフォルトの速度,という案が以前あったので,そんな感じでいけるかと.弾を実装したのは俺だけど,その辺はわざと曖昧さを残したままにしました,というのを書いてなかったか,スイマセン. -- Chibits
- 弾の初期位置、エンディング(こっちはわりと適当)について実装
エンディングは適当に死んだ時間取ってソートして表示する感じ
あとはぶつかったらくるくる回りっぱなしになるのが嫌な感じだったので修正しました.基本は移動方向を向き、回転時はある程度の速さまで回転速度が落ちたら、基本の状態に戻るようにしました.
こちらの方が狙われているなどの状態を取得しやすくなると思います.撃つ方については多分、皆さんangle変数からやってたと思いますが、今回の変更で自機の加速度から射出方向を推測できるようになりました. -- 有機酸