1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
45: 887 [sage] 2010/05/23(日) 23:27:33 ID:ne7zja47 >>44 ごめん。SRPGって書いてるけどRPGなんだ。 SimpleなRPGってことでSRPGにしたら、シミュレーションRPGとかぶっちゃったんだ。 分かった。全滅とか作ってみる。 ちょっと敵も増やしてみようかな。 意見もらえてモチベーション上がった。ありがとう。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/45
46: SGGK ◆6pZCoAtaxk [sage] 2010/07/14(水) 23:35:58 ID:E0crx8nl 久しぶりに書き込み。 887氏、もしかして開発中止だろうか。 再開して戻って来れるように、こちらの進捗0でも何か書いてみる。 自分の方は2か月の空白を作ってしまい、>>42で辞めないと言ったものの、開発続行はやはり怪しい。 とりあえず、>>42、>>7で言った頭の整理は時間が掛かりすぎるので中止。 ゲームのメインの部分で前半、後半で同じような内容が書かれてあり、 長すぎてわかりにくい感じがするので、少し改善できないか考えてみる予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/46
47: SGGK ◆6pZCoAtaxk [sage] 2010/07/15(木) 22:11:02 ID:K2yOe2RI や…やめた。>>46で言ったソース改善も中止〜! バグが出てるわけでもないし、わかりにくくてもなんとかソースを読むこともできるから、 整理に時間をかける程でもないなと思った。 とりあえずこのままにして、前スレで言っていた以下の目標をやってみる。 >967 :SGGK ◆6pZCoAtaxk [sage]:2010/04/27(火) 23:03:19 ID:puWvjObW >次の小目標は、 >今まですべての選手が一斉にボールを追いかけていたのをやめて、 >FWは前1/3、MFは中1/3、DFは後ろ1/3の範囲にボールがある時だけ >ボールを追いかけるようにプログラムを直す。 >…にしてみる予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/47
48: SGGK ◆6pZCoAtaxk [sage] 2010/07/19(月) 23:53:37 ID:Enn47Jg4 ということで、取り組んでみたものの案の定うまくいかない…orz まず、メインループの中にある選手の移動関数について。 移動関数の中で今が前半か後半かを判断する変数を使えるようにしたいけど、 いまのままではおそらく使えないと予想。 現在のプログラムは、選手関係の変数や関数をひとまとめにしたクラスの オブジェクトをゲーム処理を主とした関数内に作ってあり、そのオブジェクトのメンバ関数で選手移動処理をするようになってるので、 ゲーム処理を主とした関数で定義した変数を認識させるにはたぶんその変数のアドレスを渡さなければいけないと思い、 とりあえず、 1.選手関係の変数や関数をひとまとめにしたクラスを宣言してるヘッダファイルに「前半か後半かを判断する変数」を 定義してる別のヘッダファイルを加える。 2.選手関係の変数や関数をひとまとめにしたクラスを宣言してるヘッダファイルの中の 選手移動処理の関数の引数に「前半か後半かを判断する変数」を追加する。 3.選手移動処理の関数の定義がfieldplayercontrol.cppの中にあるので、 これにも同様に「前半か後半かを判断する変数」を追加する。 ここまで書けば関数の中身を後回しにしてもコンパイラは通るはずだと思い、 コンパイルするとエラー。 error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。 運よくバグは取れたけど、詳細は進まない作業の代わりにネタおよび自分の作業メモとして少しずつ書く予定。 てっきり、また全角の空白をどこかに入れてしまったのかと思ったが、そうではなかった。 知ってれば一瞬なのに何時間か掛かってしまい、これがプログラムのしんどいところ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/48
49: STG [sage] 2010/07/21(水) 20:04:43 ID:jGZViznh もうサッカーの人しかいないのかな(ヽ´ω`) ゲーム仕様でどうしても2Dでは実現しづらい部分が出てきたので3Dに移行。 サンプルプログラムで大体どんな感じに組めばいいかはわかったのでモデル製作の勉強開始。 モデリングソフト高すぎワロタ…のでBlenderを使うことに。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/49
50: SGGK ◆6pZCoAtaxk [sage] 2010/07/22(木) 00:32:00 ID:umEPonN6 >>49 こんばんは!。見ている人がいるからには、諦めずにもう少し頑張ってみようと思います。 自分もいつかは3Dをやりたいと思っているので、Blenderの事は記憶に留めておきます。 >48のバグは、最初「error C2146: 構文エラー : ';' が、識別子 の前に必要です。」で検索したところ、 その中で、「変数宣言の位置によってエラーになったりならなかったり ...」という言葉が目に付き、 ソースを見たところ、ヘッダファイルの左端の縦棒が太く表示されていて何かここに問題のあるしるしなのかと思い、 考えてみると、今回、選手の移動関数の引数として読み込ませたいと思っている変数は、 enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; で、これはsoccergame.hで宣言されてて、しかし、選手の移動関数は fieldplayercontrol.hで宣言されているので、ならば、fieldplayercontrol.hの上の行に #include "soccergame.h"をいれてやればいいのではと思ってそうした。 しかし、先ほどのMATCHSTATEはクラスなどの外側に記述してあるので、コンパイルしたら、 soccergame.hと#include "soccergame.h"したfieldplayercontrol.hとで重複してしまうのではと思い、 #include "soccergame.h"を消したら、コンパイルできた!…という話。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/50
51: SGGK ◆6pZCoAtaxk [sage] 2010/07/22(木) 22:16:41 ID:lTzR4XWC >>47(前スレ>967)の目標完了。珍しく予想以上に早く出来た。 ソースはifとswitchの組み合わせなので長文になってしまっているのが相変わらずの難点。 次の目標は、出来れば走ったり、ジャンプをさせたりとかいろいろ思いつくけど、 選手それぞれの近くにライフゲージを表示させて、ライフが少しずつ減り、0になったら 選手が停止する に挑戦。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/51
52: 名前は開発中のものです。 [sage] 2010/07/23(金) 02:53:39 ID:C4gQhbld >>50 つまり・・・どういうことだってばよ いやすまん、偶然スレ覗いたら気になったんでちょっと質問させて欲しい enum A{}; enum A{}; void main{} 例えばこう書くと、VisualC++では「error C2011: 'A' : 'enum' 型の再定義」っていうエラーになるんだけど >>50の下6行で言いたいのは、こういう事とは違うの? http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/52
53: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 12:32:50 ID:p6Ls+avh > >>50の下6行で言いたいのは、こういう事とは違うの? そうです。その通りです。 「選手移動処理の関数」に「前半か後半かを判断する変数」つまり enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; を引数として持たせたい。 でも、この「前半か後半かを判断する変数」の宣言は、soccergame.hにあり、「選手移動処理の関数」の宣言はfieldplayercontrol.hにあるので、 fieldplayercontrol.hの中でsoccergame.hを#includeしなければ、引数として認識できないかなと思った。 でもそうするとfieldplayercontrol.hとsoccergame.hの両方に enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; があるので、コンパイルしたときに enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; void main{} と2重になるので、 C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。 というエラーが出てるのかと思った。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/53
54: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 12:35:16 ID:p6Ls+avh しかし、>>52氏の指摘が気になり、試しにfieldplayercontrol.hに enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; だけを直接書きこんでみると、 error C2011: 'MATCHSTATE' : 'enum' 型の再定義 というエラーが出た。 自分が思っていたバグの原因は間違いで、 >>50で >#include "soccergame.h"を消したら、コンパイルできた! ときのコンパイルできた理由はほかにあるらしく、 しかもenum MATCHSTATE{略};は問題なく認識されていたらしい…orz (>>52←指摘ありがとうございます!) http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/54
55: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 14:01:28 ID:p6Ls+avh 「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」というエラーメッセージが出る原因について調査。 #include "soccergame.h"で発生したバグだから、そのsoccergame.hの中に';' が抜けてるところがあるのかと思ったが、良く見たけど見つからない。 他のヘッダーファイルに#include "soccergame.h"をやってコンパイルすると、 「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」 が出る。"soccergame.h"に何かあるのか…。 もしかするとヘッダーファイル2重読み込み防止(いわゆるインクルードガード)の書き方が "soccergame.h"だけ何かの作業でずれたか消えたかしてたか?と見てみたがなんともない。 ためしに「ヘッダファイル 2重読み込み」で検索するとやっぱりこれといったのが無く、しかし、 その中に「ヘッダーファイルは慎重に扱わないと危険です」という言葉が目に付き、 クリックすると内容が難しすぎて解らなかったけど、雰囲気的に「循環参照」というのが気になる。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/55
56: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 14:03:02 ID:p6Ls+avh 自分のソースを見てみる。 fieldplayercontrol.h に soccergame.h をインクルードしたときを考えてみる。 soccergame.h は #include "fieldplayercontrol.h" してるので、 お互いがお互いをインクルードしあってる。 念のため、soccergame.h がインクルードしてないヘッダーファイルにsoccergame.hをインクルードしてみる。 これなら循環じゃないから、バグが出ないはずだと思ったが、 バグが出る場合と出ない場合がある。 バグが出ないと予想したのにバグが出たヘッダーファイルは、もしかするとsoccergame.hのインクルードしたヘッダーファイルからまたヘッダーファイルが呼ばれてて…のような感じで呼ばれていたのかもしれないが、調べきれず。 さらに error C2146: 構文エラー : ';' が、識別子 の前に必要です。 ヘッダーファイル 循環参照 で検索してみると、掲示板関係ばかり引っかかるけど、どうも循環参照が原因の可能性が高い。 「ヘッダーファイル内でのインクルードはできるだけ避けたい。」という書き込みもあるし。 仮に循環参照が原因として何故、「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」というメッセージになるのかわからないけど、 とりあえずヘッダーファイルをインクルードしているうちに循環参照になっていたのが原因の可能性が一番高いと考えて、 >>51の課題挑戦を再開。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/56
57: 名前は開発中のものです。 [sage] 2010/07/25(日) 16:05:50 ID:7RX0IWHa ('A`) http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/57
58: 名前は開発中のものです。 [sage] 2010/07/25(日) 16:13:03 ID:Vl6SpnXH ふむふむ まずヘッダーの重複読み込みを気にしているようだけど、「#pragma once」は記述している? ちなみにマクロを使って同じ事も出来る ttp://www.geocities.co.jp/SiliconValley/6071/technic/16.html そして「error C2146: 構文エラー : ';' が、識別子〜」は、行数を特定しにくいエラーの一つだけど これを発見するには、デバッグの基本技の一つ「コメントアウト」が有効 例えば、以下のように4つの関数があったとする void A(){} void B(){} void C(){} void D(){} このCとDをコメントアウトしてコンパイル void A(){} void B(){} /* void C(){} void D(){} */ これでC2146エラーが消えたようならCかD、残るようならAかBに絞り込める 消えた場合Cだけコメントアウトすれば、特定の関数まで絞り込める この方法を使えば、例えば500行のソースが書かれている場合 その約半分250行くらいから下をコメントアウト、さらにその半分、さらにその半分・・・と機械的に絞り込む事が出来る http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/58
59: 名前は開発中のものです。 [sage] 2010/07/25(日) 16:24:34 ID:vN3nsQ+l インクルードガードでggrks http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/59
60: 名前は開発中のものです。 [sage] 2010/07/25(日) 20:13:54 ID:bN26srjK >>59 >>52 インクルードガード関係ない可能性が高い http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/60
61: SGGK ◆6pZCoAtaxk [sage] 2010/07/26(月) 22:44:04 ID:HmEvw+7E >>57>>58>>59>>60 たぶんまだ正解ではないんだろうなという雰囲気が伝わってきたので、再考。 まず、>>58氏の#pragma onceを試して、もう一度soccergame.hをfieldplayercontrol.hにインクルードしてみたがやはり同じバグが発生。 でも、#pragma onceなら1行で、しかも同じ書き方でインクルードガードできるから便利。(感謝!、絞り込みも活用します。) 次に昨日書いた循環参照について。 soccergame.hをfieldplayercontrol.hにインクルードした時、soccergame.hの中では、FieldPlayerControlクラス型の実体を定義してるけど、 fieldplayercontrol.hの中でSoccerGameクラス型の実体を定義してはいないから、循環参照ではなかったかもしれないという気がしてきた。 お互いをインクルードしあってるだけでは循環参照に必ずしもなるとはいえないかもしれない。自信はないけど。 そこで、soccergame.hをfieldplayercontrol.hにインクルードした時のfieldplayercontrol.hの中身はどうなっているのかソースにして追いかけてみようとふと思った。 ひとつ気になった。 soccergame.hはその中で#include"fieldplayercontrol.h" してるので、soccergame.hをfieldplayercontrol.hにインクルードしたら、 fieldplayercontrol.h の中で #include"fieldplayercontrol.h"されるのだろうか? なぜなら、もともとのfieldplayercontrol.hは、#include"fieldplayercontrol.h"なんてしてないから、インクルードガードされないんじゃないかなと思ったので。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/61
62: SGGK ◆6pZCoAtaxk [sage] 2010/07/26(月) 23:01:02 ID:HmEvw+7E そこで、「ヘッダファイルに同じヘッダファイルをインクルードできるか」のようなキーワードで何度か検索。 「ヘッダファイルは、自分とは別のヘッダファイルを #include でインクルードできるので、(略)」 という記述があったので、 それ前提でソースをエクセルに張って考えてみたら、自分としては今までで一番正解に近そうな答えが出た。 soccergame.hをfieldplayercontrol.hにインクルードしたときにsoccergame.hの中にある#include"fieldplayercontrol.h"がキャンセルされていたら、 soccergame.hからインクルードした部分の処理を進めているときは、まだFieldPlayerControlクラス型が宣言されてないから、 soccergame.hからインクルードした部分にFieldPlayerControl fieldplayercnt; と書いても、 「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」 というエラーが出る…というのが答えかもしれない。 一応、エクセル→jpgでうp ttp://gamdev4.hp.infoseek.co.jp/cgi-bin/up/No_0129.jpg http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/62
63: STG [sage] 2010/07/28(水) 04:37:11 ID:ttdS5Bl4 3Dの勉強が楽しい 忘れていたわくわく感があふれてくるっ 知らない用語がどんどん出てくるこの冒険感っ 練習ソフトクリーム http://www.dotup.org/uploda/www.dotup.org1057678.jpg http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/63
64: SGGK ◆6pZCoAtaxk [sage] 2010/07/28(水) 23:06:54 ID:6+SmVQnU 3D、色々な事が出来そうですね。 自分もサッカーゲームの3D化を目指して開発を急ぎたいです。 >>51の課題に挑戦。 ソースはまだ書いてないけど、選手クラスにライフ値を記録するためのメンバ変数を追加して、 選手の描画関数を実行するときに選手の座標を基準にDXライブラリの四角形描画関数を2回使重ね書きして実現できないかなと脳内設計。 ライフ値をソースのどこでどのくらい減らせばいいのかを検討中。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/64
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 423 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s