09/01/28 22:33:25 BT9wNurf
自分の場合、プログラムは1ヶ月でほんの少し進むかどうかといった感じで
ほとんど止まってることもよくあるぐらいなので、気が乗らないときには休むのも有効かな~と時々思ったりします。
こちらは、この前言っていた移動計算の抜き出し?も出来てないし、とにかく気長にやっていこう~と思ってますw
492:436
09/01/29 00:56:22 0SSs3+bK
FPS表示とリフレッシュレート変更は出来たけど、高い周波数にするほどフレーム数が足りないまま安定しちゃう
30FPSぐらいだと問題ないけど、50、60と上げて行くと、なぜか5フレームほど足りなくなる;
そしてふれ幅も上下5フレームぐらいばらついて安定しない・・・う~むコードが悪いんだろうなぁ
>>491
ありがとう~
毎週火曜は歯医者に行ってるんですが、昨日は詰めた所が痛くてついぼんやりすごしてしまいました;
493: ◆Fp.xSEIREI
09/01/29 12:28:57 TI9WuV0B
敵機のオプション(子機)を操作する関連をいろいろ(・∀・)
もう少し手を加えれば孫機を配置したりもできるようになるはず
目指せ超弾幕(・∀・)
for文をどっかからコピペしてきて使ってたら条件式を書き換えるのを忘れててアドレス異常の書き込み違反が出て一時間悩んだ(・∀・)敵を倒したら黄色いもにょもにょが湧いてきてちょっとしたホラー
494: ◆Fp.xSEIREI
09/01/29 19:39:44 TI9WuV0B
子機操作まではほとんど完成(・∀・)
6機出してみるテスト
URLリンク(www.dotup.org)
495:SGGK ◆6pZCoAtaxk
09/01/29 23:01:47 jKwHiHD0
>>492
自分はFPS関係理解できなくてコピペ気味なプログラムなので、
技術的コメントが困難なレベル(・・・orz)ですが、歯を大事にする事については賛成です!!!
>>494
で・・・出来上がってきてますね~。
弾を目で数えるのはもう不可能・・・と思って右下見たら1000発超えてる!!!
今回からコテハン+トリップにしてみました~(見分けやすくするためですw)
496:436
09/01/30 00:51:26 Ubr3D3FD
FPSが61で安定する;ウェイトのかけ方がまだ悪いみたい
>>494
すごー;;;自分も早く動く部分を作りたい~
>>495
SGGKですかw失ってわかる歯の大切さ・・・
497: ◆Fp.xSEIREI
09/01/30 04:23:48 xtRLKZxM
>>495
重なってるから目で数えるのはむりぽ(・∀・)
5000発くらいまでなら安定して出せるけど避けれなくなる
SGGKてw
>>496
16ミリ秒待機とかにすると61.2FPSになる(・∀・)16.66666…で待機できるようにしないと…
498:名前は開発中のものです。
09/01/30 09:18:22 fJ+jbeBq
うちのノートPC、ウインドウモード45fps安定で俺涙目
全画面にしたら60fpsになるんだけどな。
某弾幕シューも処理落ちでクリア余裕でした!
499: ◆Fp.xSEIREI
09/01/30 10:05:50 rD/YU9yd
>>498
フレームスキップするのと処理落ち率をスコアのファイルに出力しておくようにしておこう(・∀・)
500:436
09/01/31 01:52:27 pjcRan1J
どうしても16.3msになって、あと0.3ms引き伸ばせない・・・もう61Hzでいいかなぁ
キーコンフィグっぽい仕組みを作りました
501:SGGK ◆6pZCoAtaxk
09/01/31 12:25:30 nxG0Rhj8
しばらくSGGKで頑張ってみますw
こちらはまだ言語の文法理解が足りなくてつまづいてる感じです。
>474で言った「移動先を決める処理を関数みたいにして別ファイルにする」に挑戦中。
>489の手書きメモ見て考え中。
502:436
09/02/01 01:22:03 d2a+qgnL
FPSもうヤダー
503: ◆Fp.xSEIREI
09/02/01 04:11:26 ppxlATZm
>>502
URLリンク(dixq.net)
504:436
09/02/02 00:48:40 XcNeBYjh
できた!ありがと~
505:SGGK ◆6pZCoAtaxk
09/02/02 22:53:46 +VJz49//
技術的な話は自分にはまだまだ無理な様ですが、いつかは分かるようになりたいです~orz
昨日、移動先を決める処理を関数みたいにして別ファイルにしてみたつもりでコンパイルしてみたら、
「Warning: パブリックシンボル _chaseballmover がモジュール XXX\DEBUG\SOCCERGAME.OBJ と XXX\DEBUG\FIELDPLAYERCONTROL.OBJ の両方に定義されている」
という警告文がずらりと出てしまった・・・。
それからずっと考えていてフッと思ったのが、移動処理はクラス化したのでその宣言をヘッダファイルに書いていたけど、今回のは宣言と同時にオブジェクトも定義?したから、
クラス{}オブジェクト; が記述されているヘッダファイルを何箇所かのファイルの先頭にインクルードしてたからかな~と思い始めた。
このオブジェクトがいわゆる「外部変数」になってるような感じで
それを複数箇所にインクルードした事で同じオブジェクトが外部変数として複数定義?されたという事になっていたとすれば、それが警告の原因かも???
今日はここまででちょっと試せそうにないです。
506:SGGK ◆6pZCoAtaxk
09/02/02 23:31:37 +VJz49//
と言いつつちょっとだけ書いてみたけどダメだった。
技術だけじゃなく文法的な話もまだ無理みたいな感じです・・・orz
507:436
09/02/03 01:26:13 U+3zAauW
アナログパッド入力出来る様になりました。コンフィグファイルから実数値も読み出せる様になりました
これによりFPSを0.001フレーム単位で指定という無駄な事が出来ますw
FPS関連で解ったんですが、変数型によって有効桁数が当然あって
それを考慮せずにあまりに桁が違う数同士を計算すると
情報落ちと言われる物が起こってしまうらしく。
自分の場合、システムカウント(整数)とμs(実数)と言う桁数が違いすぎる変数同士を計算した為
小数点以下の桁が消失して、細かいフレーム調整が出来なくなってました
自分と同じ様な初心者の方は注意です
計算の順序を考慮してコードを組んだらサックリ動きました。勉強になりました
その他過程で知った事
・時間でタイミングを取るよりフレームでタイミングを取る方がいいらしい
・floatよりdoubleの方が容量が大きく処理も早い
・動きの激しいゲームでは、キャラクター座標を内部で256倍とかして管理するといいらしい
>>505
オブジェクト指向の話はサッパリワカメです;広範囲に手を加えた後に出るエラーには変な汗が出ますw
508: ◆Fp.xSEIREI
09/02/03 02:43:01 b4/cfZ4i
オブ…ジェクト…?
変数はint、double、bool、LONGLONGってのを使ってるな(・∀・)
変数ごとの処理速度の差はあんまり考えたこと無かったなー。intにできるとこはintにしてるけど…
509:SGGK ◆6pZCoAtaxk
09/02/03 23:28:01 6PB7lMIm
>>507
小数点以下の十進数を小数点以下の二進数で一対一で表現する事は出来ないような事を
どこかの本で読んだ記憶がありますが、あまり自信は無いですw
こうなってくるとコンピュータの勉強も必要なのかもしれませんが、今は手が届きそうに無い状況です・・・orz
>>508
自分も変数は、int、float、boolぐらいしか使ってなくて、オブジェクトを変数と言ったのは、
今参考にしてる14歳シリーズのC++わくわくゲームプログラミング教室wにたまた変数と書かれてあった為で、
これもまたあまり自信は無いです。
昨日のバグはなんとか取れた感じ。
今回の移動処理のヘッダファイルをあるヘッダファイルに書くと、そのヘッダファイルもまた別のヘッダファイルに書かれていたりするので
結果的にヘッダファイルがヘッダファイルを呼ぶような状況になっていて思わぬ場所にも書かれていたからかもしれない。
でも、ヘッダファイルの2重呼出し防止策、#ifndef、#define ~#endifは書いてあったから、これが原因の自信はなくて、
結局、今回書いたヘッダファイルの中にあるクラス宣言と同時に定義したオブジェクトの変数?を必要としているcppファイルがあり、そのcppファイルの先頭だけに
今回作成したヘッダファイルをインクルードして、他にインクルードした所は全部消したら、エラーも警告も出なくなりました。
プログラムも長くなり、かなり危ないシーンがこれからも増えてきそうな予感w
510:436
09/02/04 00:56:29 Da4U9lAm
ちょこっとだけ、コードの整頓と、マウス入力をつけました
>>508
調べたらfloatが遅かったのは昔の話で、最近ではあまり差は無く、環境の影響のが大きい様で。
FPUによってfloatの方が高速だったりするそうです
>>509
解消された様で良かったです~
511:SGGK ◆6pZCoAtaxk
09/02/04 22:59:39 0WPinhOQ
かろうじて解消できてる様な感じです~w
抜き出した移動処理部分をメインループから呼び出せるようにしたつもりが動かず。
エラー20行出た。最初の数行はコンパイラの言ってる意味が分からなかったけど、
分かる所から先に直していったら、その意味不明なエラーもなぜか出てこなくなった。
しかし、プログラムを起動しても選手が動かなくなってしまった。エラーの出ないやっかいなバグ・・・orz
512:436
09/02/05 00:48:53 xwepftsp
キー設定ファイルからボタン名を読み込んでキーコードに変換する物を作ってます
513:SGGK ◆6pZCoAtaxk
09/02/05 23:07:23 O65/6Go1
こちらは昨日から変化無しです~。
移動処理部にprintfDxを書いてみたら何か適当な数字がずらーっと出てくるので
移動処理部に処理が移っているはずだけど選手は動かない。
という事で気分を変えて本を読む事に・・・。
514:436
09/02/06 01:05:54 DkLm7FbZ
>>513
自分も今日は変化なし・・・じっくり構想を練っています
515: ◆Fp.xSEIREI
09/02/06 07:39:07 kUyKQz9d
枠作ったりゲームシステム考えたりいろいろ
自機ショットのスムーズに曲がるホーミングレーザーを実装に向けていろいろ
516: ◆Fp.xSEIREI
09/02/06 12:17:19 kUyKQz9d
エフェクトのクラスいじってたら古すぎワロタ
開発初期のまんまだぜ…8月か…?
517:SGGK ◆6pZCoAtaxk
09/02/07 00:31:41 xxcJdwT9
自分もバグ取れたら、構想やゲームシステムを考えてみようかな~と思ってます。
選手のx、y座標を計算するのに使っている数値をデバッガで見ようと思いついたもののネット見ても方法が分からず断念。
もう1つ気になったのが、式の中にある1フレームあたりの移動量を現す数値をコンストラクタという初期化用関数?で設定していた点。
これをやめて、その式をコンストラクタの外に書いたら動いた。
理由は勉強不足で分からないけど、とりあえずこれで進めてしまう予定。
実はまた別のバグが出たけど今日は時間切れ~。
518:436
09/02/07 01:34:15 EB28/pCl
やる気が激しく低迷中・・・みんな俺にかまわず先に行くんだ・・・!!
519: ◆Fp.xSEIREI
09/02/07 18:29:46 aA+gcqfk
オーバーフローこわい
アイテムの初期化ミスったら音声ファイルハンドルぶっこわれたパネェ
520:SGGK ◆6pZCoAtaxk
09/02/07 23:35:24 fMJHJAn5
>>518
だ・・・大丈夫!やる気が0にならない限りは大丈夫です~。
>>519
「C言語 オーバーフロー」で検索してみましたが、む・・・難しそう・・・orz。
昨日の別のバグというのは、
1.Zキー押してないのに選手がマウスカーソルに向かっていく。
2.自分以外の選手全てがボールから離れていってしまう。
今日もあまりやれなくて未解決!!!
521:436
09/02/08 01:26:03 q6Hviut/
もう一ヶ月経ったか、早いなぁ
>>520
どうも~ 作成は止まってますが、なんだかんだでずっと考え続けてはいます
522: ◆Fp.xSEIREI
09/02/08 08:19:34 W7UWcBdq
>>520
正確にはオーバーフローじゃないかな?似たようなもんか。うちのは例えると
50個の配列変数をintで確保して、70回ループで初期化してしまいました。はみでた20回分はどこの変数を初期化したのでしょう☆
ってなった。画像や音声のハンドルを保存してるメモリ領域にはみ出てエラいことになったw
>>521
やる気が出ないときってあるよな~
書き出したらキリのいいとこまでとまらなくなるがそこまでが遠い…
523:SGGK ◆6pZCoAtaxk
09/02/08 23:11:00 DeawIxvP
時間経つの早いですね~。2月もあっという間かも・・・。
そういえば自分も画像データを読む時に配列変数1個ずれてプログラム書いてエラーになった経験がありますw
バグは>520の2.はなんとかクリア。
選手の座標決める式はおおざっぱに書くと、(次の座標)=(今の座標)+(1フレーム移動量)X(sinまたはcos)で、
その中のsin、cosを算出する式が別にあって、その中で(選手座標)-(ボール座標)としてたのが間違い。
その部分を(ボール座標)-(選手座標)にしたら直ったw
524:436
09/02/09 00:59:47 Mr5/Oitn
ちょっと出来そうな案が浮かんだので、ポチポチとやってます
>>522
ありがと~ ここに書き込む事で大分やる気をもらってます
>オーバーフロー
自分は文字列を上限超えて格納したら、以降コードを修正してもデバッグが起動不能に・・・w;
525:SGGK ◆6pZCoAtaxk
09/02/09 23:01:35 77ZsJA8v
>520のバグ1.は未解決です。
>517で言った構想やゲームシステムは、どちらかと言えば「やる事リスト」を考える事になりそうな感じ。
週末までになんとかできれば・・・。
526:436
09/02/10 00:42:25 CgwFXK0K
ずぅー っとキーコンフィグの仕組みをイジイジしてます
527: ◆Fp.xSEIREI
09/02/10 02:20:35 Bgt+PgnG
ゲームのプロセス優先度を変更して実行中のFPSのばらつきをほぼ0に(・∀・)
スカイプやってもエンコやっても処理落ちしない!けどフリーズしたらヤバそう
528:SGGK ◆6pZCoAtaxk
09/02/10 23:45:39 bVQ8HCA1
こちらは、「>520のバグ1.」未解決~。(間違いなさそうな気がするけどそんなはずないだろうし・・・)
こんな時は14歳から・・・の本に目を通してみます。
529:436
09/02/11 00:27:47 Up2cQUgT
今日も今日とてキーコンフィグ 今日も明日もキーコンフィグ
>>527
マルチコアならダイジョウブ!
530:SGGK ◆6pZCoAtaxk
09/02/11 15:14:11 mkWNCyhh
>>527、529
「ゲームのプロセス優先度を変更」、「マルチコア」で検索~!
む・・・難しい内容でした。
バグの原因発見!
原因のソース部分は内容的には下記の様になっていて、
このelseブロック内では最初以外の選手IDだけ処理される様な気がしていたけど、
良く見れば、Zキーを押さなかった場合、最初の選手のIDについても処理される事に気付いた。w
そして最初の選手のmove関数はマウスカーソル追従型にしていたから、
Zキーを押さなくてもmove関数が呼び出されて、選手がマウスカーソルに追従するというワケ。
while(選手IDが最後){
if( (選手IDが最初) && (Zキー押した) ){
(最初の選手データのクラス).move(0,0);//マウスカーソルを目指す関数が設定されている。
}
else{
(それ以外の選手データのクラス).move(ボールx座標,ボールy座標);//ボールを目指す関数が設定されている
}
ID++する。
}
原因は分かったけど、どのように直すかは検討中・・・orz
531:436
09/02/12 00:40:35 qdQhKDNX
まだまだキーコンフィグ
一応途中のテストでは動いたものの、見た目が悪いので書き直しと残りの書き足しで、あと一日かかりそう
532:名前は開発中のものです。
09/02/12 20:18:47 3ETp66yJ
皆さん頑張ってますなあ。
僕も頑張らねば……
533:SGGK ◆6pZCoAtaxk
09/02/12 23:46:17 0sUNNefd
お互い頑張りましょ~!
(>530の続き)
else{
と書いてあるところを
else if(選手ID != 最初){
としたら直った!!!
次は、やる事リスト作成またはもう少しプログラムを手直しするかのどちらかで行く予定です。
534:436
09/02/13 00:58:37 Xaou+w4f
風邪引いたー最近ちょっと変だったからもしやと思ったけど・・・皆さんも気をつけて
まだテスト途中ですが、キーコンフィグ一応完成。アナログだろうがPOVだろうが何でもこいです
535:SGGK ◆6pZCoAtaxk
09/02/13 23:22:42 NesIqe+1
キーコンフィグ、気になってネットでちょっとだけ調べてみたらやっぱり難解。
もしかしてWindowsプログラミングかも?
自分もWindowsプログラミングにトライする準備勉強してみようかな~。(まだ早いかもしれないけど)
以前、すぐに挫折した経験ありです・・・orz (それで今はDXライブラリ+主に14歳シリーズ書籍)
風邪の方は、とりあえずマスクを用意してきます~。
「やる事リスト」はもう少し後にして、まずはボールのバグを直す事にしてみます。
536:436
09/02/14 00:35:45 XMi119GB
あ~何やってんだ自分; 「完成」したのはファイルからボタン名を読み込んだりキーコードに変換したり、各命令にボタンを割り当てる部分で
キーコンフィグ画面や設定を保存する処理などまだまだやる事沢山あります。誤解を招く書き込みしてすいません
今日はウィンドウのタゲが他に移って戻った時にFPSがおかしくなるのを修正
>>535
自分は基本DXライブラリのリファレンスとヘッダファイル?と標準関数の説明ページに書かれている事以外は使えません;
537:SGGK ◆6pZCoAtaxk
09/02/15 00:02:48 jh3k09Ob
>>536
そ・・・そういえば、自分はDXライブラリを説明見てインストールしてしまったら、
もうその時の事を忘れてしまい、なんで動いてるのかを良く知らないで使っている状態になってます。・・・orz
(ボールのバグの原因?)
全選手とボールの当たり判定が「当たり」の時に選手のフラグ用メンバ変数をtrueにする。
「Zキー押し」と「フラグ=true」が同時に成立していたら、カウント変数を初期化(=30)し、フラグ=falseにして、
ボールを蹴る選手の移動方向と同方向に移動させる。
カウント変数を毎ループ1ずつ減らし、if(カウンタ>0){ボール移動処理}にしてるので、
カウント0になるとボールは止まる。
これで分かった問題点は・・・、
1.ボールに触れた時にZキーを押さずにボールから離れてもフラグがtrueのままになる。
だから以前4方向移動だった頃、ボールから離れてる時にZキーを押すとボールが動いたと思われる。
今はZキー移動なので、触れた瞬間にボールが蹴られてしまうし、
他選手がボールに自分より先に触れた時に自分がZキーで移動してたら、他選手のフラグ=trueになるので、
他選手もボールが蹴れてしまう。
こ・・・これを直すのは辛そうな感じ。
そのままにしておいて他の事やるかもですw
538:436
09/02/15 01:02:19 INXhf2VE
コンフィグ画面を作ってます。やっぱり見た目が変化するとモチベーションが違いますね~
539:SGGK ◆6pZCoAtaxk
09/02/15 22:20:49 HE3msbh5
自分も選手11人出したらモチベーション上がるかもです~。(もうしばらく先になりそうな感じ)
ボールのバグについては、
アタリフラグを当たり判定でONして、ボールを蹴った直後にOFFしてるのがおかしいと思った。
これだとボールに触れても蹴ってない選手がいたら、その選手のアタリフラグはずっとONのままになってしまうから・・・。
という事で、当たり判定の関数内で選手がボールに触れたらON、離れたらOFFするようにしたみた。
そしてZキーは移動用にしてるので、「蹴る」をXキーにしてみた。
コンパイラは通ったけど、ボールに触ってる時にXキー押しても何故かボールは動かない。
原因不明~。また日数掛かりそうな予感。(一日あたり少ししかやれないので・・・)
540:436
09/02/16 01:19:41 /BiYzi6H
う~むどうもうまい処理の仕方が浮かばないです。引き続きコンフィグ画面を作り中
541:SGGK ◆6pZCoAtaxk
09/02/16 22:32:50 YITEZ4OH
バグ取れずです。・・・orz
if文の後に書いてあるボールの移動処理のブロックにprintfDx("%d",3);を書いても
何も表示されないので、if文の後のボール移動処理ブロックに処理が移ってない感じ。
542: ◆Fp.xSEIREI
09/02/16 23:27:24 agCOi5px
ブレークポイントつかってる?(・∀・)左の方クリックしたら赤い○つくやつ
そこで処理とめて変数の中身見たりできる
URLリンク(www.dotup.org)
543:436
09/02/17 02:43:28 u6gSAOgi
>>542
うわああぁこんな便利な機能を隠し持っていたとは・・・!
今まで変数を全て画面に表示してチェックしてました
544: ◆Fp.xSEIREI
09/02/17 04:59:49 0pJ8V4zK
クラスのメンバを一気に見たりできるから超便利だぜ(・∀・)
545:SGGK ◆6pZCoAtaxk
09/02/17 23:52:55 t8GcL2rZ
>>542
ありがとうございます~!画像も見てみました。
自分のはターボデバッガというのが入ってるのですが、何故かブレークポイントが最初の数行までしか設定できず、
その他いろいろ使いこなせない場面があり、ちょっと放置気味でした・・・orz
ネットで調べてもあまり情報が載っていない様なので、情報の多いデバッガを使えるコンパイラがあれば、それに乗り換えが必要かもしれません。
でも、もうしばらく頑張ってみます~。
546:せいれい
09/02/18 00:48:38 uhVOawfK
俺のコンパイラはVC++2008EEだ(・∀・)便利
547:436
09/02/18 01:08:38 4Q2oRHHM
今日はサボってしまた。。。明日がんばります
548:SGGK ◆6pZCoAtaxk
09/02/18 23:47:13 GV05nuHS
自分も今日はあまりできませんでした。・・・orz
VC++2008EE、検討してみます。(今度の土日で試してみるかも)
ターボデバッガ、何故か画面右上の「HELP」をクリックしても
何も表示されないので以前から放置して諦めてたけど、偶然解決。
自分はデバッガ画面をかなり縦長に初期設定していてたらしく、
実はHELP画面はその一番下側に表示されていて普段は隠れている格好になっていて、
スクロールしない限り見ることができなかったのが原因。
でも、肝心のブレークポイントの問題解決に繋がる説明は見つからず・・・orz
やっぱり、VC++2008EEに切り替えてそっちのデバッガでも同じ問題が出るかを
確認した方が早く解決するかも・・・?
549:436
09/02/19 00:40:29 +d/NyJF6
ゲーム内のウィンドウ単位で関数化してみれば管理が楽かも・・・と思い立ち、試しに組み立て中
>>548
自分もVC++2008EEです。トゥルースペースといい、無料で使っていいなんてマイクロソフトは太っ腹すねえ
550:せいれい
09/02/19 02:56:23 TWrN13Aa
そろそろいつか投げてたレーザーの処理をきちんと片付けておこうと思ったり
ある点Pが一辺の中点として存在する高さa幅bの矩形がr度回転している時の角ABCDの求め方って公式とかあるのかな
このゆとり脳をフル回転させると
点Pからr+90度方向にb/2進んだ座標に点A、-90度方向にb/2進んだ座標に点B、点Aから-90度方向にa進んだ座標に点D、点Bから+90度方向にa進んだ座標に点Cを取れば矩形が描けるはず…!!
自作の「角度と移動量を入れたら座標を返す関数」を駆使すれば余☆裕☆DA
フハハハハハ
551:SGGK ◆6pZCoAtaxk
09/02/19 23:27:19 l2on3TGr
>>549
現在はボーランドC++5.5コンパイラとBCCデベロッパーを使用(14歳シリーズC++がこれを使っていた為)していますが、
土日といわず今からでもと思いVC++2008EEをインストール中。今日はインストールまでで終わりそうです。
>>550
回転そのものの公式の存在については今の自分では見つかりませんでした。
やっぱり距離とsin、cosで1点ずつ位置を計算するかな~と思いますorz
552:436
09/02/20 00:15:20 BeiHPfXO
引き続きウィンドウの関数化
>>550>>551
数学苦手な自分にはさっぱりっす;
553: ◆Fp.xSEIREI
09/02/20 02:06:24 DwKgvB67
矩形回転についていろいろ(・∀・)
拡張性を求めて試行錯誤
554:SGGK ◆6pZCoAtaxk
09/02/20 23:59:53 6hmoFzm5
DXライブラリのサイトにある説明に従ってコンパイラを設定し、
プロジェクトの新規作成までで今日は終了。orz
土日前にここまでやっておいて良かったかもしれないけど、ややこしい~。
555: ◆Fp.xSEIREI
09/02/21 00:52:09 hRYbf/Bl
レーザー見た目だけ実装(・∀・)当たり判定はまだ
URLリンク(files.uploadr.net)
556:436
09/02/21 01:09:18 qlEwaizd
今日も今日とて部品作り
>>555
おぉぉすげ~
557:名前は開発中のものです。
09/02/21 23:36:37 lLbQtoox
>>555
うぉ!弾の絵が短い状態から細長く変化するという事は何か技がありそうな感じ。
こちらはバグが25箇所も出て、現在お手上げ状態~orz
ボーランドC++でやってた時はバグなかったのに・・・。
558:436
09/02/22 01:36:36 LjZlw/rK
ボタンの入力系統ごとの処理をかきかき
十字キーを押すと左アナログからも数値が返ってくる・・・
連動してるなんてしらなんだ
559: ◆Fp.xSEIREI
09/02/22 02:04:08 RhTsgzZG
予告線から発生するタイプも実装(・∀・)
URLリンク(www.dotup.org)
オプションにくっつけて回転させながら撃たせてみた
あとは当たり判定つけるだけ(・∀・)
560:名前は開発中のものです。
09/02/22 03:20:53 vuKwEEMt
>ボーランドC++でやってた時はバグなかったのに・・・。
それはバグっつーかコンパイラの仕様の違いでは……。
561:SGGK ◆6pZCoAtaxk
09/02/22 22:01:00 Iti7a7GO
>>558、559
みなさん進んでますね~。
こちらはバグが取れず当分の間足踏み状態が続きそうな予感です~。
>>560
仕様が違うとコンパイラってこんなにも違うものなのかと痛感してます。
昨日のエラーは最後の3行、残りはワーニング(警告)。
エラー内容は、言葉忘れたけど、同じ定義が他にもされているという類のもの。
以前、staticメンバ変数は外部に実体の定義が必要らしいと知り、それをたまたまヘッダファイルの中で定義してたから、
そのヘッダファイルが何箇所かで呼ばれてるのがいけないんだろうと思い、
定義の部分をcppファイルに移したら、コンパイルが進み、「おっ!?」と思ったら
ウインドウが出た直後に英文だけのエラーメッセージウィンドウが表示されて停止。
ワーニングも71個に増えた。・・・orz
562:436
09/02/23 01:09:18 6s8IHBJl
選択画面でのキーとパッド入力に対する挙動が出来た
今はマウスとホイールの分を組み立て中
>>561
コンパイラごとに書き方変えなくちゃ駄目って事ですか?
不便だー
563:SGGK ◆6pZCoAtaxk
09/02/23 23:10:38 ScQiYH5A
>>562
ボーランドC++で通ったなら、VC++2008EEでもいけると思ったけどダメでした。
VC++2008EEの方が何故かチェック厳しい感じ。
VC++2008EEで結構書き直ししてしまったので、もう一度ボーランドC++で書いて動いていた時の状態から
違う考えの修正をしてみようとボーランドC++のソースを見たら何故かVC++2008EEで今まで書き直してきた内容と同じになっていた。
VC++2008EEのプロジェクト?へのソース組み込み方法が分からなかったので、ソースをプロジェクトファイルのツリー画面に
ドラッグドロップして操作してたのが原因らしい。どうりでプロジェクトファイルのフォルダを開いてもソースファイルが無いワケだ。
もう戻れない~orz
564:名前は開発中のものです。
09/02/24 00:28:26 S/Istr7/
関数内で使われてない変数があるだけでもVCは文句言ってくるしな。
GCCは気にしないでくれるのにw
565:436
09/02/24 01:55:47 bo0/H7dJ
引き続きマウスの入力分をかきこき
>>563
あわわ;チェック厳しいのも場合によりますね
ユーザ側でゆるめられる設定とかあればいいんですが
566: ◆Fp.xSEIREI
09/02/24 03:18:11 5+X9BMJV
関数に構造体ポインタの渡し方がよくわからない(・∀・)
というか構造体ポインタの宣言?がよくわkあああああああああ
構造体が配列になってる時はどうすればいいんだろう(・∀・)
567:名前は開発中のものです。
09/02/24 06:03:45 uqndkdFp
/* 何がわからないのか知らんが! */
#include "stdio.h"
#define MS "z'goku"
/* 構造体とその別名の定義 */
typedef struct tagS { char the_red_comet; } S;
/* 構造体のポインタをとる関数
ポインタ経由の場合「->」で要素にアクセス */
void func1(S *ps){ ps->the_red_comet = '3'; }
/* 構造体の配列をとる関数
関数に渡すとサイズの情報が欠落するので
渡す配列のサイズ(要素数)を一緒に渡す */
void func2(S ps[], int num){
int i;
for (i=0; i<num; i++)
ps[i].the_red_comet = MS[i];
}
int main(void){
S s, as[sizeof MS];
int i;
func1(&s); /* &で変数のアドレス(ポインタ) */
printf("%c\n", s.the_red_comet);
func2(as, sizeof as/sizeof as[0]);
for (i=0; i<sizeof as/sizeof as[0]; i++)
printf("%c", as[i].the_red_comet);
return 0;
}
568: ◆Fp.xSEIREI
09/02/24 11:51:58 5+X9BMJV
うぉぉ(・∀・)こんなに難解なのか…
もうちょっとがんばってみる
ともかく㌧
569:名前は開発中のものです。
09/02/24 14:01:41 cPcauKWt
>>568
あー、いや、そんなむずいもんじゃないにょ。
多分俺の書き方が悪い。ぶっちゃけズゴックって言いたかっただけ。
構造体に限らず、変数はメモリのどっか特定のアドレスに格納される。
変数のアドレスは変数名の前に&付けると取り出せて、ポインタ変数へ保存できる。
int *pi;でint型のポインタ変数piが作れるように、S *ps;でS型のポインタ変数psが作れる。
int ai[num];でint型num個の配列aiが作れるように、 S as[num];でS型num個の配列asが作れる。
構造体のメンバにポインタ経由でアクセスする時は「.」じゃなく「->」。
構造体配列sのi番目の要素のメンバにアクセスする時はs[i].member。
>>567のtypedefのとこは純C用の書き方。C++ならふつーにstruct S{char the_red_comet};でいい。
ちなみにfunc2(S ps[], int num)のとこは実際はfunc2(S *ps, int num)と同じだったりする。
配列にsizeof使うと配列全体のサイズが取れるけど、関数に渡した場合その中では
配列じゃなくポインタが正体なんで、sizeof使ってもポインタのサイズしか取れないのに注意。
配列の名前は単体で使うと先頭要素のアドレスを指すポインタになるんで、
呼ぶ時にfunc2(&as[0], sizeof as/sizeof as[0])としても同じ。
(関数に配列渡してる訳じゃなく、ポインタを渡してる)
うん、確かに自分で言ってて難解な気がしてきた。俺は説明が下手だ。
このへんは構造体の話というより配列とポインタの話やね。
細かいこと気にせず動きゃいーんだの精神でがんがれ!
570:名前は開発中のものです。
09/02/24 14:16:53 cPcauKWt
う、よく見返したら'\0'まで出力してんな。恥ずっ。
571: ◆Fp.xSEIREI
09/02/24 14:28:51 5+X9BMJV
>>569
MSとかズゴックがCの関数か何かかと思った俺は
うちのソース風にやりたいこと書くと
~~ヘッダー~~~~~~
typedef struct{
char the_red_comet;
} S;
void func1(ぽいんたっぽい引数){うんたら};
~~~~~~~~~~~~
~~別のソースファイル~~
extern void func1(ぽいんたっぽい引数);
extern S MOBILE_SUIT[100];
void func2{
int i;
for(i=0;i<100;i++){
funk1 (ここにMOBILE_SUIT[i]のthe_red_cometのポインタをあげたい);
}
}
こんな感じ。ちなみにmainとかは行数の都合により省略。mainは別のファイルにあるよっ
あとDXライブラリだからstdio.hは入れられないんだ
572:名前は開発中のものです。
09/02/24 15:27:17 cPcauKWt
>>571
↓こんな感じ。
void func1(char *p) {
/* 何かの処理 */
}
void func2(void) {
int i;
for (i=0; i<100; i++) {
func1( &(MOBILE_SUIT[i].the_red_comet) );
}
}
アドレス取得の「&」よりメンバ選択の「.」が優先度低い演算子なので、
括弧で順序を指定してやる必要がある。
URLリンク(takagi.in)
573: ◆Fp.xSEIREI
09/02/24 15:37:15 5+X9BMJV
>>572
うおおおおおおおおおおおお!!!?コンパイル通ったwwwwwwwwwきちんと動いたSUGEEEEEEEEEEEEEEEEEEEEEE
できたうっひょおおおおおおおおおおおおおおおおおぴょおおおおおおおおおおお
某関数がシンプルになったぜええええええええええええええええええええええYEAAAAAAAAAAAAAAAA
ありがとう、ありがとうズゴック先生(;∀;)
てか->とか * とか考えなくても &つけりゃよかったのねorz
574: ◆Fp.xSEIREI
09/02/24 15:45:04 5+X9BMJV
URLリンク(www.dotup.org)
ここに使われますた
ポインタって便利だね
575:SGGK ◆6pZCoAtaxk
09/02/24 23:16:12 AWriAbTE
>>564-565
チェック厳しいですが、なんとかVC++2008EEでやってみようと思います。
ソース上書きしてしまって直前の内容には戻れなくなったしw
>>566-574
ポインタっていつ見てもややこしいですね~。勉強してる時はなんとなく分かった感じになっても
しばらくして自分で書こうとするとまた分からなくなってしまってたりする・・・w
今日もコンパイラの使い方で足踏み状態。
既にあるソースをコンパイルに含める方法はわかったので、もう前のバージョンに上書きされる事は無くなった。
プロジェクトファイルのフォルダにソースをコピーしてから、「新しい項目の追加」の▼押して「既存項目の追加」で出来る。
処理がどこで止まっているかわからないので、画面右下の「呼び出し履歴」を表示させたいが、
デバッグでプログラムが止まった時に出るエラー画面でデバッグの「中止」を押すと、「呼び出し履歴」が消えてしまう。
これはエラー画面でデバッグの「再試行」を押し、次に出る画面で「中断」を押せば、「呼び出し履歴」が残る。
履歴は上からじゃなく下から上に向かっている事に気付くのに時間掛かった。
とりあえず、ゴールのデータを初期化する所で止まっているらしい。
ちなみにエラー画面の英文は、イテレータがどうのこうのという感じの内容でよく分からなかったけど、
たしかにそういうのを使っているので、その辺が原因かも?というところまで来てマス。
576:436
09/02/25 01:06:52 ueY3gPVj
マウスとホイールの挙動も大体出来て、今はコンフィグ画面を組み立て中
577:SGGK ◆6pZCoAtaxk
09/02/25 23:02:59 yn9MVXN6
バグ変化無し・・・。
一行ずつ実行させようとすると勝手にWinMain関数から始まり、内部の関数を呼ぶところで
「現在の場所のソースコードを記述できません」と表示され先に進まず。
それならばと思い、昨日問題があると思ったゴール関係の処理関数内部一行目にブレークポイントを設定し、デバッグ開始し、
ブレークポイントで止まったところからF11キーを押して一行ずつ実行させてみたら
いつの間にかエディタ画面内に「list」というタブが付いた画面が表示され、
その画面中身は見覚えのない理解不能なソースが書かれていて、何故か一行実行がこの画面に移ってしまっている・・・orz
ちなみにエラー文は、「Experssion:list iterator not dereferencable」
一応検索してみたけど、自分に分かりそうなのは見つからず・・・。
気持ちを切り替えた方がいいと思い、今日はここで終了。
578:名前は開発中のものです。
09/02/25 23:18:59 M83kTzla
リリースモードでやって、逆アセの画面みてるとかw
MOV AX,BXとかそういうんあった?
579:436
09/02/26 01:18:57 F2EPEs+N
引き続きコンフィグ画面を~
580:名前は開発中のものです。
09/02/26 04:04:36 qHLjortN
>>577
ひょっとしてiteratorを++とかやってたり
581:名前は開発中のものです。
09/02/26 04:13:26 qHLjortN
いや、ちがうなんだっけ
えーとstd::list.iterator itr とかしたとき何かができなかったような…
582: ◆Fp.xSEIREI
09/02/26 10:02:19 0TSvd06Q
二次元上での物体の自由落下についていろいろ(・∀・)
既存の関数を利用してそれっぽいのなら作れそう
583: ◆Fp.xSEIREI
09/02/26 11:43:11 EbeM2R2x
矩形の4点座標を計算する関数に便利機能をつけたら引数14個のアホみたいな関数になってしまった
584:SGGK ◆6pZCoAtaxk
09/02/26 22:12:21 1SuK1bkP
>>578
確認したところデバッグモードでした。listというタブと逆アセンブルというタブの付いたウィンドウが出てきて
デバッグを中断すると見れます。MOVとかは逆アセンブルの方に出ていて
listのウィンドウは、
#if _HAS_ITERATOR_DEBUGGING
if (this->_Mycont == 0
|| _Ptr == 0
|| _Ptr == ((_Myt *)this->_Mycont)->_Myhead)
{
_DEBUG_ERROR("list iterator not dereferencable");
_SCL_SECURE_TRAITS_OUT_OF_RANGE;
}
#else
・・・のような感じで意味不明な文が延々と1300行近く出力されます・・・。
>>579
早くバグを取って自分も先に進みたいです。w
>>580、581
iteratorをあまり理解しないうちにプログラムを書いていたら、
やっぱりそういうところがバグになって現れてしまうみたいです。
iteratorはプログラム内のあちこちで使ってるので大変ですが、
とりあえず本当にすべてのiteratorを使っているところでバグになるのか
切り分けをしてみようと考えてます。
>>582,583
自分もいつか選手にジャンプ&自由落下させてみたいけれど、バグが・・・w
585:436
09/02/27 00:36:41 JFxOaYgu
まだまだコンフィグ画面
項目をオンマウスでアクティブ、から、オンマウス+クリックでアクティブ、に変更
たったそれだけの変更でもあちこち書き換えなきゃならない羽目に
仕様は予め細部まで熟考しとく事!>自分
586: ◆Fp.xSEIREI
09/02/27 02:03:40 gp2A0UAm
>>584
俺はそんなことなったこと無いなぁ…難しいことしてないからかもしれないけど
レーザーの幅と長さに対する倍率で当たり判定のサイズを指定できるようにしてみた
長さ0.9倍、幅0.5倍を当たり判定に指定するとこの赤い四角が当たり判定に(・∀・)一枚目:最大時 二枚目:消滅時
きちんとレーザーの状態に合わせて自動で当たり判定のサイズも変わる便利仕様
URLリンク(www.dotup.org)
587:SGGK ◆6pZCoAtaxk
09/02/27 23:24:49 U/xgHr9a
>>585
なんだか自分も仕様について考えてみたくなってきました。w
>525の頃に言っていた「やる事リスト」の前に仕様決めた方がいいのかも・・・。
>>586
製作中は当たり判定表示した方が便利そうですね~。(引数が15個に増えてる~!)
自分もバグ取れたらちょっと考えてみたいです。
バグはまだ取れないけど、iteratorを使っている関数(選手、ボール、ゴールの初期化、
選手、ボール、ゴールの移動、当たり判定)の内、コンパイラで停止した関数がゴール関係だったので、
とりあえずゴールの初期化と移動の関数を呼び出す行に // をつけて注釈文にしたら、画面が表示された!
なので、ゴール関係関数と他の関数でのiteratorの使い方に違いが無いか見比べてみるつもり。
588:436
09/02/28 01:22:18 BN0uPU4y
そう、コンフィグです、今日も
>>586
複雑そう・・・自分には無理だ;
>>587
おぉ復活しつつあるようで、ひとまずホッとしました
589:SGGK ◆6pZCoAtaxk
09/02/28 23:41:24 6cM45uPX
なんとかコンパイルできるようになりました。
初期化関数については、元々上手くいってる選手やボールの初期化関数ではiteratorを使ってませんでした。
ゴール関係初期化関数だけiteratorを何故か使ってしまっていてそれがプログラム実行中のエラーになっていたらしい。
結局>577のエラーメッセージの意味は分からなかったので、先がちょっと不安な感じ。
何故か移動用関数内では、(*it). で要素にアクセスできているので不思議~。
これでやっと>539のバグ取りに戻れる・・・orz
(プログラム実行時エラーになる書き方、詳細は略)
init(){
goallist.clear(); //GoalData型(ゴール関係のデータが入ってるクラス)のリストgoallistの要素を空にする。
list<GoalData>::iterator it; //GoalData型リストgoallistのどれかを指定するためのiteratorを設定
it=goaldata.begin; //iteratorをGoalData型リストgoallistの先頭を指すようにする
(データの数だけループ){
(*it).x1=10; //GoalData型の要素に初期データを代入する
(*it).x2=50;
++it; //iteratorを1つ上げて次のGoalData型の要素を指すようにする。
}
(プログラムが無事実行できた書き方、詳細は略)
init(){
GoalData gd; //GoalData 型データ1個分を仮保存するためのローカル変数gdを定義
(データの数だけループ){
gd.x1=10; //GoalData型の要素に初期データを代入する
gd.x2=50;
goallist.push_back(gd); //gdに仮保存したgoallistの要素一個分のデータをまとめてgoallistの最後尾の要素に登録
}
590:436
09/03/01 02:02:50 fK/bT0En
>>589
お~おめでとうございます 自分は停滞気味・・・
591:SGGK ◆6pZCoAtaxk
09/03/01 22:35:05 4AGEbIXn
>>590
ありがとうございます~。 今日はほとんど進みませんでした。orz
この数日のバグ取りの反動かもw
592:436
09/03/02 01:26:59 yUGCkh1E
マウスオン+クリックで選択できる様に変更
もう3月!今年も残り10ヶ月を切ったぞーいそげいそげ
593: ◆Fp.xSEIREI
09/03/02 17:23:38 O2JzSRpM
list<GoalData>::iterator it;
こ…これはいったい何をしているんだ…俺にはわからない…/(^o^)\
ゲームシステムについていろいろ(・∀・)
面白くするにはどうすればいいか、を考えてみる
クソゲーを観察してみるのも勉強になるみたいね
594:SGGK ◆6pZCoAtaxk
09/03/02 23:46:06 MvrVI/rB
>>592
そういえばもう3月ですね~、時間の流れが速すぎる~。
>>593
C++で、配列みたいに複数のデータを管理できるコンテナクラスというのが標準でいろいろ用意されていて、
そのひとつにlistクラスというのがあり、そのlistクラスでGoalData型(←これは自分でプログラムの中で宣言して作った型)のデータを複数管理したいので、
どのGoalData型かを指し示す為にイテレータit(←配列変数の要素にアクセスするための添え字みたいなやつ)というものを宣言しますみたいな感じで自分は理解していますが、
自信はあまり無いです・・・orz
ボール動かないバグ取れないですね~。
if(ボール蹴る時のキーが押されてる)&&(ボールと選手の当たり判定用フラグ変数==true)の条件部分が真になっていない感じ。
ボールと選手の当たり判定用フラグ変数が、当たり判定関数で当たり=1と成っていても
if文に来る直前でprintfDX()使って表示させて確認してみると何故か0になってる。
プログラム中では同じ変数名で書いていても中身は違うとなると
変数のスコープ(有効範囲みたいなやつ?)をよく分かっていなくてそれが原因なのかもしれないというのが思いついたけど
それを確かめる方法が無い・・・orz
595:名前は開発中のものです。
09/03/03 00:53:43 j/EdIaTK
ひょっとして「押されている」と思ってるのが「押されたとき」だったり
【ハウツー】最初にマスターしたいVisual Studioのデバッグ機能 - 基本編 (1) ブレークポイント | エンタープライズ | マイコミジャーナル
URLリンク(journal.mycom.co.jp)
596:436
09/03/03 01:13:26 B6hdHZko
ウィンドウモード変更・表示倍率変更・フレームレート変更・FPS表示切替を選択できる様になりました
>>593
面白く・・・最大の問題すなぁ・・・
597: ◆Fp.xSEIREI
09/03/03 21:05:59 9wM7nouk
URLリンク(www.dotup.org)
回転行列による矩形と点の当たり判定実装(・∀・)
598:SGGK ◆6pZCoAtaxk
09/03/03 22:56:23 vs8eMq8g
>>595
ありがとうございます~。デバッグは機能が色々ある様なので少しずつ覚えていこうと思います。
キー入力の状態については、実は自分はまだよく理解できぬままプログラムやってます・・・orz
>>596
かなり順調にいっててうらやましいですー。
>>597
回転行列を当たり判定に使う・・・、む・・・難しそうな世界。
ボール動かないバグの原因なんとなく見えた。
フラグ用変数のスコープが違ってて名前は同じでもアドレスが異なっている別々の変数を
それぞれの関数内で操作してるのではないかと思ったけど、どうもそうではなさそう。
ボールが選手に当たっている状態を表すフラグの立て方に原因があったと思われる。
これを説明するには一週間分の書き込みスペースを使ってしまいそうな感じ。
599:436
09/03/04 01:23:23 +kKOKlkp
フルスクリーンから復帰すると古い方の拡大率になってたのに気付いて修正
マウスで窓枠ドラッグした時の拡大率を取得出来る様にした
今になってもっとシンプルなインタフェイスを思いつく・・・あ~全体的に作り直したい
>>595
勉強になります
>>598
一つの結果が出るまでのスパンというか下ごしらえが段々長く大変になってきました;
600:せいれい
09/03/04 21:55:43 1TDttkKc
もうちょっと調整したらゲームシステム部分の作成に移れそう
そろそろ背景やファイル入出力もいじらねば(・∀・)
601:SGGK ◆6pZCoAtaxk
09/03/04 22:20:50 M0lqZAHx
こちらは、まだまだバグ取り中~。
昨日言っていたバグの原因は、プログラムをかなり略して書くと、
メインループ(){
選手.move();//選手の移動処理
ボール.move();//ボールの移動処理
ゴール.move();//ゴールの移動?処理
当たり判定();//それぞれのオブジェクトの当たり判定をここでまとめて行う
}
・・・となっていて、当たり判定関数の中では、
while(最後の選手まで繰り返す){
if( 選手とボールが当たっているか? ){
a->atari=true;// 選手のメンバ変数atariのフラグをONする。
b->atari=true;// ボールのメンバ変数atariのフラグをONする。
}
else{
a->atari=false;// 選手のメンバ変数atariのフラグをOFFする。
b->atari=false;// ボールのメンバ変数atariのフラグをOFFする。
}
ボールを蹴る処理は、メインループの「ボール.move();//ボールの移動処理」の中にあって、蹴れる条件は、
(Xキーが押されている)&&(ボールのatariフラグがONである)
なのに対し、今のプログラムでは、自分がコントロールできるのは一番目の選手だけなので、
選手をボールに接触させてatariフラグをONにしても当たり判定関数のwhile内で最後の選手まで
判定するので、最後の選手はボールに触れてないから、b->atari=falseになって、ボールのatariフラグは結局最後にはOFFにされてしまう。
その状態でメインループのボール移動関数に戻るので、いつまでたってもボールを蹴れる条件が成立しない・・・orz
602:名前は開発中のものです。
09/03/04 22:40:39 /ZV4wLD2
何故else条件でボールのフラグを落とすのか、40文字以内で説明せよ(5点)
フラグ落とすのは選手だけでいいと思うんだが。そもそもボールのフラグもいらない。
ボール持ってる選手しか蹴る(移動の初期値を与える)ことができないのなら
ボール支配できたときにボール蹴る関数にでも飛ばせばいいと思うが、どうか。
603:436
09/03/05 00:50:31 LR5dYdvr
ああああせりました;
窓枠ドラッグ時の拡大率を取得する為SetAlwaysRunFlag();をON-OFF多用してたら
なぜかSetAlwaysRunFlag();をOFFにするとデバッグに行く途中で止まり、
ON状態の一文を入れないと動かなくなり、とうとうそれを入れても入れなくても動かなくなり・・・
VCリインストールしたら今度はヘッダファイルを読まなくなり(パスは渡してるのに)、
レジストリからVC関連を全消去してリインストール、さっきようやくまともに動いたっぽい
SetAlwaysRunFlag();を乱用乱発してたのが悪かったのかなぁ
604:SGGK ◆6pZCoAtaxk
09/03/05 23:27:28 hIYt1MGi
>>602
else条件でボールのフラグを落とすのは、(Xキー押し)&&(ボール接触フラグON)がボールを蹴れる条件なので、
選手がボールから離れている(else)時には、ボール接触フラグをOFFにする必要があった為。
今のプログラムでは、ボールに接触してるので蹴ろうとしても、ボールに接触していない選手がいたら、elseが成立してしまい
ボールの接触フラグをOFFされてしまうという問題がありました・・・。
確かに今思うとボールのフラグは必要無かった様です。
選手全てにボールに接触してるかどうかを表すフラグを持たせておいたのは、同時に複数の選手がボールを蹴る様な場合を考えてました。
同時蹴りの時にボールに接触してる複数の選手から一人を選ぶ仕組みが必要かと思いながら実装の案はまだ何もなし・・・。
バグの修正はもう少し検討中~、今のボール移動関数は、選手のデータを引数に持っていないので、選手のフラグ変数を使えないのデス・・・orz
>>603
レジストリとか全然わからないので、自分もその関数には注意しておきます~。
605:名前は開発中のものです。
09/03/06 00:01:32 zNsEmWk0
>同時に複数の選手がボールを蹴る様な場合を考えてました。
それは「蹴った」時の処理であって、
接触したかどうか判定する時点では関係ないんじゃないかな。
同時蹴りの優先度は確かに悩むところだね。
606:436
09/03/06 00:30:05 SvQUccHR
拡大率取得する関数がすでにあったorz
拡大率変えるとSetMousePointが元のウィンドウの大きさ基準で動く為、
元の解像度を超える座標を指定出来ないorz
ので、新たに思い付いたインタフェース案はモロにその影響を受ける為、
すっぱりあきらめられたw
今は構造をもっとスッキリ出来ないかイジクリ中
>>604
今後は念の為C:とソースのバックアップを取る様にしました;
607:SGGK ◆6pZCoAtaxk
09/03/06 23:39:57 Fo+vpfkW
>それは「蹴った」時の処理であって、
>接触したかどうか判定する時点では関係ないんじゃないかな。
た・・・確かにそうです。
メインループ内での処理を移動、当たり判定に分けておいて、当たり判定内で
いろいろな組み合わせの当たり判定をあらかじめ行い、その結果を各種フラグ変数に記憶させておいて
移動関数でそのフラグ変数を参照するようにすれば、移動関数から当たり判定関数を呼ばなくても済み、
プログラムが整理できそうな気がしたけど、なかなか上手く行っていないです・・・orz
>>606
そういえば自分もバックアップ全然取っていないです。もしもハードディスクがクラッシュしたら・・・。(汗;)
やっと>539のバグがなんとか取れました。(もっと日数かかるかと思ってた)
このスレでやってたおかげでVC++2008EEに移れた影響も大きかった。
ボール移動関数に選手のオブジェクトのアドレスを渡して、選手のメンバ変数の中から
ボールとの当たり判定用フラグにアクセスして、(Xキー押し)&&(ボールとの当たり判定用フラグON)が真なら
ボール移動処理に移る様にするとOK!