[過去ログ]
1人でゲームが作れるように修行します。 (984レス)
1人でゲームが作れるように修行します。 http://peace.5ch.net/test/read.cgi/gamedev/1006284805/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
577: SGGK ◆6pZCoAtaxk [sage] 2009/02/25(水) 23:02:59 ID:yn9MVXN6 バグ変化無し・・・。 一行ずつ実行させようとすると勝手にWinMain関数から始まり、内部の関数を呼ぶところで 「現在の場所のソースコードを記述できません」と表示され先に進まず。 それならばと思い、昨日問題があると思ったゴール関係の処理関数内部一行目にブレークポイントを設定し、デバッグ開始し、 ブレークポイントで止まったところからF11キーを押して一行ずつ実行させてみたら いつの間にかエディタ画面内に「list」というタブが付いた画面が表示され、 その画面中身は見覚えのない理解不能なソースが書かれていて、何故か一行実行がこの画面に移ってしまっている・・・orz ちなみにエラー文は、「Experssion:list iterator not dereferencable」 一応検索してみたけど、自分に分かりそうなのは見つからず・・・。 気持ちを切り替えた方がいいと思い、今日はここで終了。 http://peace.5ch.net/test/read.cgi/gamedev/1006284805/577
580: 名前は開発中のものです。 [sage] 2009/02/26(木) 04:04:36 ID:qHLjortN >>577 ひょっとしてiteratorを++とかやってたり http://peace.5ch.net/test/read.cgi/gamedev/1006284805/580
589: SGGK ◆6pZCoAtaxk [sage] 2009/02/28(土) 23:41:24 ID: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の最後尾の要素に登録 } http://peace.5ch.net/test/read.cgi/gamedev/1006284805/589
716: SGGK ◆6pZCoAtaxk [sage] 2009/04/15(水) 23:12:09 ID:CRJPsQ0r >>715 ありがdです〜(←2ちゃん風)、>577の頃のバグと似た感じでした。 (間違い) if( ボールとカメラ範囲の当たり判定式){ (*it).anim->draw(0, (*b).getx()-camera.x, (*b).gety() -camera.y);//ボール座標をカメラ内で見た時の座標に変換して表示する。 } (正解) if( ボールとカメラ範囲の当たり判定式){ (*b).anim->draw(0, (*b).getx()-camera.x, (*b).gety() -camera.y);//ボール座標をカメラ内で見た時の座標に変換して表示する。 } 間違いにある(*it)は選手8人のデータを指すイテレータ。ここを本当はボールの(*b)にするべきだけど、写し間違えていた。 選手全員の処理を行ってから、ボール( (*b)でボールのオブジェクトにアクセスする)の処理を行うので、 間違いでは(*it)の選手で描画しても良さそうだけど、実はこの時点では(*it)は最後の選手の「次」の要素を指しているので、 指摘されていたように「変なメモリに」アクセスしようとして実行中エラーになったと思われる。 そして選手、ボール、ゴールが表示されないのは、今のカメラ初期位置からではどう動かしても最初に見えるのがボールだったので、 そのボールを描画しようとした瞬間にエラーになっていたので、結局、選手やゴールも表示されていなかったと思われる。 http://peace.5ch.net/test/read.cgi/gamedev/1006284805/716
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s