トップページgamedev
1001コメント387KB

初心者専用スレ「シミュレーションゲーム」を作らない?

レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。04/03/20 10:18ID:HjCApWI8
ここはシミュレーションゲームをみんなで作るスレです。
各レベルの課題に沿って作ってみてあぷしてみましょう。

まとめ:
SLGを作らない?
http://gamdev.org/w/?%5B%5BSLG%A4%F2%BA%EE%A4%E9%A4%CA%A4%A4%A1%A9%5D%5D

あぷろだ:
http://gamdev.org/up/

話題元:
初心者のためのゲームプログラミング
http://pc2.2ch.net/test/read.cgi/gamedev/1023119134/852-

関連スレは>>2
各レベルの課題は>>3
0952ステフ242007/02/07(水) 01:25:32ID:ALqVWg08
>>951
256行目の fff=ff-'0' を fff=ff+'0' に直してみて。
それで移動させるとキャラが消える問題は直ります。

カーソルを合わせた時に、Q太郎だけ画像とセリフが出ないのは
*cricri内でQ太郎だけ処理が記述されてないからだね。
0953名前は開発中のものです。2007/02/07(水) 01:28:28ID:hiPzJEZt
移動先に格納しなければならない値は?



つーか、デバッグを人に頼むやつはスキル上がらない。
0954名前は開発中のものです。2007/02/07(水) 01:29:00ID:hiPzJEZt
>>952
あ、お前…。
0955名前は開発中のものです。2007/02/07(水) 01:29:44ID:ALqVWg08
名前欄消し忘れたorz

あと、ソースを見ている中で気になったのが
・cx(キャラID), cy(キャラID) にX軸とY軸の座標を格納する
・マップと同サイズの2次元配列 charc を作って、キャラがいる座標にキャラIDを格納する
という2種類の方法でキャラクターの位置管理をしている事。
片方で統一した方がいいような気もしますが…
0956名前は開発中のものです。2007/02/07(水) 01:31:39ID:hiPzJEZt
いや、答えを出すなと。ヒントを出せと。
0957名前は開発中のものです。2007/02/07(水) 01:46:50ID:ALqVWg08
>>956
す、すまねぇ…ベジータ
つい調子に乗っちまって…
09589512007/02/07(水) 04:13:15ID:0o0vmDxN
うぉ知らない間にレスが・・・
>>952
そ・・・そんな一文字変えるだけだったんて・・・結局あれから原因がわからなくて
全体的に書き直してやっと正常に動くようになりました。
ttp://gamdev.org/up/img/8854.lzh
ありがとうございました
ところで教えてもらったのに
-'0'と+'0'の違いがニンともカンとも全くさっぱりわからないのですが・・・
どう違うのでしょうか?

>>953
全くその通りです、すいませn
ヒントありがとうございます

自分の好きなキャラクターを動かせたらいいなぁとか思って
初めてゲーム制作ってのをやってみたんですが
めっちゃ面白いですね!ゼルダの伝説とか好きだからかハマるなぁ。。。
0959名前は開発中のものです。2007/02/07(水) 09:39:11ID:hiPzJEZt
ffの中身は文字データではなく数値データでしょ。
2 と '2' は違う。
09609512007/02/07(水) 21:53:50ID:flBw1LVK
>>959
ふむ・・・
文字データに-'0'としたら
数値データに変わるものと思っていました・・・どう違うんですか?

移動範囲むずい・・・
ttp://gamdev.org/up/img/8860.lzh
0961名前は開発中のものです。2007/02/07(水) 22:16:52ID:hiPzJEZt
'0'を数値に直すと48
0962名前は開発中のものです。2007/02/07(水) 22:17:35ID:hiPzJEZt
文字コードの基礎を勉強した方がいい。
0963名前は開発中のものです。2007/02/07(水) 22:21:53ID:5CLYr9a5
>>960
ASCIIコードでぐぐれ。
0964名前は開発中のものです。2007/02/07(水) 22:55:25ID:flBw1LVK
なるほど・・・コードと普通の数字を理解せずにごっちゃに使ってたんですね。
理解しました!ありがとうございます
09659512007/02/09(金) 17:55:52ID:cJebzufJ
ttp://gamdev.org/up/img/8877.lzh
level4くらいまで・・・たぶんできた?
ひし形に移動範囲が表示された瞬間は嬉しくてたまらなかった;;
0966名前は開発中のものです。2007/02/09(金) 18:09:23ID:Uo/kSmzQ
>>965

適当に動かした感じバグも見当たらないね
先は大変だろうが頑張ってくれ

にしてもあのキャラはなんだw
スーパーフジコフジオ大戦でもつくるつもりかw
0967名前は開発中のものです。2007/02/09(金) 18:30:48ID:cJebzufJ
>>966

ずっと前に2chでそういうスレを見てから、そんなんがあったらいいなぁなんて思っていて、
ペイントで絵だけ描いてあったんでw<スーパー藤子不二雄大戦
そのまんま使ってみました。
0968名前は開発中のものです。2007/02/09(金) 22:48:10ID:466X9rh2
>>965
GJ。移動関連は問題なさそう。

ただ別の部分で1個バグがあるので報告を。
マウスカーソルをX座標640の位置(ウィンドウの右端)に移動させると、エラーが発生します。
0969名前は開発中のものです。2007/02/10(土) 00:37:12ID:/F07fJXK
>>968
報告どうもありがとうございます。
自分の方ではちょっとエラーは確認できなかったんですが、
ちょっと変えてみました。まだエラー出ますかね?

ttp://gamdev.org/up/img/8884.lzh
レベル5くらい?
09709512007/02/11(日) 13:09:16ID:Wt+73Vfk
レベル6〜7くらいでしょうか
ttp://gamdev.org/up/img/8899.lzh
どうもだんだんごっちゃになってきた・・・・
0971名前は開発中のものです。2007/02/11(日) 13:13:18ID:Wt+73Vfk
すいません間違えました。こっちです
ttp://gamdev.org/up/img/8900.lzh
0972名前は開発中のものです。2007/02/11(日) 13:55:20ID:X9ZBd4xs
>>971
http://gamdev.org/up/img/8901.png
ターン終了?の文字が文字化けする。
環境はwin98。
ちなみにウキベデアでも文字化けする。
0973名前は開発中のものです。2007/02/11(日) 14:01:45ID:Wt+73Vfk
>>972
うぉマジすか。報告ありがとうございます
クリックしたときに出る「OK?」以下の文字は大丈夫ですか?
0974名前は開発中のものです。2007/02/11(日) 16:21:13ID:X9ZBd4xs
>>973
そっちも文字化けする。
http://gamdev.org/up/img/8903.png
0975名前は開発中のものです。2007/02/12(月) 06:12:33ID:0Mxjt6Di
>>974
わざわざスクリーンショットまで取ってくださってありがとうございます。
フォントを変えてみたんですがどうでしょうか?
レベル8〜9くらいです
ttp://gamdev.org/up/img/8912.lzh
0976名前は開発中のものです。2007/02/12(月) 14:03:43ID:YvDlmQGu
>>975
文字化けされずちゃんと表示されるようになった。
0977名前は開発中のものです。2007/02/13(火) 10:58:37ID:BB4mZt4F
>>975
おつかれー
順調にすすんでますな
コロ助ぬっころした後無敵になって再登場するのは仕様?
0978名前は開発中のものです。2007/02/14(水) 05:55:14ID:ynv9xeAn
>>977
仕様です。何度もテストしているうちに可哀相になってきたので…
こんな扱いだけどコロ助は大好きですw


やっと前にだれかに指摘していただいたキャラクター管理の変数を統一できました。
今までやり方が見つからなかったのでごっちゃになってましたw。
0979名前は開発中のものです。2007/02/14(水) 20:26:39ID:sHkOF+QZ
>>975
カーソルをウィンドウの右端に持っていくとエラーが出て終了する。
0980名前は開発中のものです。2007/02/19(月) 22:10:39ID:G+TSHHmY
ttp://gamdev.org/up/img/8976.lzh
あまり変わってないかもしれませんが一応レベル12くらい?です。
>>979
うーん以前にもご指摘いただいたんですが、自分の環境だとエラーにはならないんですよね・・・。
↑でmxの値が638のときに出ますか?
できれば環境なども教えていただけると嬉しいです。
0981名前は開発中のものです。2007/02/20(火) 00:12:32ID:nQEJE7+o
>>980
そのエラーを最初に指摘した者だけど、俺の環境だと>969以降は発生してません。
エラー発生の原因は
mousexの値が400以上になるとmousex/32が20以上になって、mapc等の配列の要素数を超える為。

【以下対処方法】
1)カーソル位置取得の処理を1箇所にまとめる。
 ソースを見ると、「mx=mousex/32 :my=mousey/32」が複数箇所に記述されてるけど、
 この処理をメインループの最初の方でやれば1箇所の記述で済む。
2)カーソル位置がマップの外に出ないように(配列の要素数を超えないように)する。
 カーソル位置取得の処理を下みたいな感じに
 mx = mousex/32 : if mx >= mmaxx : mx = mmaxx-1
 my = mousey/32 : if my >= mmaxy : my = mmaxy-1
3)以降のmousex/32とmousey/32を、全てmxとmyに置き換える。
0982名前は開発中のものです。2007/02/20(火) 21:29:33ID:8gXApLCK
人少なそうだけど質問してもいいでしょうか。
HEXセルのMAP上で、二点間の距離を求めたいのですが、どなたか計算式をご存じないでしょうか。
距離は直線距離ではなく、1セルずつ移動する場合の最短歩数です。

具体的には、二次元配列
cell[x][y] (0=<x<cols, 0=<y<rows)
において、奇数列のセルが半セル分上にずれる形で表示されるHEX表現を行うとき、
このマップ上の任意の2セル間の移動距離(=歩数)を返す関数を作成したいのです。

参考:
 ・奇数列のセルとは、x%2=1となるx座標を持つセルである。
   具体的には、x=1,3,5...のセルである。
 ・隣接するセル間の距離は1である。
 ・例:cell[0][0]に隣接するセルは、
   cell[1][0](右上)、cell[1][1](右下)、cell[0][1](下) である。

もし教えていただけるなら、「段階的学習」のレベルのうち、
「戦闘描画」以外のほぼ全てを実装したサンプルをアップできます。
というか上記の部分以外はほぼ全部できているわけなのですが・・・。
0983名前は開発中のものです。2007/02/20(火) 23:47:16ID:5TPql8m6
>>980
とりあえず、スクショ。
ttp://gamdev.org/up/img/8981.png

見て分かるようにWinXPのスタイルを変更してます。
なぜか、これをデフォに戻すとエラーが出なくなりました。
09849832007/02/20(火) 23:56:42ID:5TPql8m6
ググってみるとこんなん出ました。キャッシュなんですぐ消えるかも。
ttp://72.14.253.104/search?q=cache:J4s8x9xl4W4J:dream.freespace.jp/perl-bin/puma/lng/joyful.cgi%3Fprint%2Blog3/04120004.txt+hsp+mousex&hl=ja&ct=clnk&cd=3&gl=jp&lr=lang_ja&client=firefox
0985名前は開発中のものです。2007/02/20(火) 23:59:30ID:EXLCFI7m
>>980
味方に個性があって面白いな。
飛べるキャラは移動コストが低く、素早そうなキャラは移動力が高く、
女の子は間接専用とか、攻撃法が多いキャラは直間両用とか。

気になった所は、移動する時、一歩毎のウェイトが短いのと、
コースが遠回りで移動力が足りなくコースを通る場合がある。

>>982
ヘックスのは作ったこと無いから良く分からんが、
スクエアの場合は、回り4方向チェックをマップ全体にやるのを
何回か繰り返してチェックする感じだから、
ヘックスは6方向に同じようにやる感じなんかな。
0986名前は開発中のものです。2007/02/21(水) 00:29:41ID:k8mWChj0
>>982
>>985の通り、基本はスクエアの方法と同じだね。
移動方法の設定の仕方は色々なやり方があるから、調べたりするといい。
周り6方向のセルだけど、cell[x,y]を中心とすると、
真上=cell[x,y-1]
真下=cell[x,y+1]
左上=cell[x-1,y-x%2]
左下=cell[x-1,y-x%2+1]
右上=cell[x+1,y-x%2]
右下=cell[x+1,y-x%2+1]
になる。X軸が奇数か偶数かで要素が変わってくるのが厄介だけど頑張れ。
0987名前は開発中のものです。2007/02/21(水) 01:52:18ID:vYb6bbT/
>>982
最短経路探索の話じゃないよね?

少し解答からズレるけど、
奇数と偶数に分けるのはデータ形式としてはいいが
ずれた配列をそのまま使うとコードが複雑になる。

なので 配列<->仮想座標 の座標変換メソッドを作り、
仮想座標で色々計算した方がよいと思う。

この辺のノウハウは↓のサイトの Hexagonal Grids の項目に沢山ある。
http://www-cs-students.stanford.edu/~amitp/gameprog.html
0988名前は開発中のものです。2007/02/21(水) 07:04:24ID:dBNuLTUt
座標の右上、右 右下…の座標を求めるメソッドを作る(このなかで奇数偶数の場合分け)
スタートの地点からさっきのメソッドを使って外周上をぐるりと回す(X)
Xの外周上にXまでの必要コストとXからのコストを足したものを代入(それより小さい値が入っていればそのまま)
ゴールの周に来て終わったら、逆に数字が小さいますを辿ってスタートへ戻り、経路を記憶する

こんな感じで僕はやってました
0989名前は開発中のものです。2007/02/21(水) 10:31:11ID:tXUNnTZV
>>980
HSP 3.xでは実行ファイル内にデフォルトでWindows XP以降向けの「Luna」スタイル
データを持っているのが原因だったり?

HSPIC!ていうソフトで除去できるみたいだから試してみては?
UPX圧縮、icon変更、バージョン情報付与、でウマー
09909822007/02/21(水) 12:02:48ID:Mxu0R3yn
>>987 さん
ありがとうございます。とりあえず読んでみます。

ご指摘のとおり、最短経路探索ではなく、最短「距離」の話です。
ぶっちゃけますが、A*アルゴリズムで最短経路を探索する際に、
この最短距離の計算が必要になるので調べていました。

矩形セルを使用する場合については最短経路まで問題なく計算できています。
どうせならHEXにも対応しておきたいなーと思いまして質問しました。
0991名前は開発中のものです。2007/02/21(水) 12:12:11ID:juyyBLL1
>>980
984のが当たりだろう
どうせwait/awit時しかマウス座標は変化しないんだから
最初に

#undef mousex
#undef mousey
#undef wait
#undef await

#define wait(%1) wait@hsp %1 :mousex=limit(mousex@hsp,0,640):mousey=limit(mousey@hsp,0,480)
#define await(%1) await@hsp %1 :mousex=limit(mousex@hsp,0,640):mousey=limit(mousey@hsp,0,480)

って、定義しちゃえば他は変更しないで、そのまま動く
0992名前は開発中のものです。2007/02/21(水) 12:31:24ID:Az2RuQ79
>>990
最短距離を求めるのに最短経路探索を使うのではないの?
0993名前は開発中のものです。2007/02/21(水) 12:53:39ID:Pu4x1zp+
考えてみたけど、合ってるかは試してない。
X = Abs(X1-X2)
Y = Abs(Y1-Y2)
if (X1 % 2 = 0) {
 if (X2 % 2 = 1) { if (Y1 > Y2) Y++; }
}else {
 if (X2 % 2 = 0) { if (Y1 < Y2) Y++; }
}
Y = Y-(X+1)\2;
if (Y < 0) Y = 0;
Value = X+Y;
09949822007/02/21(水) 14:53:21ID:Mxu0R3yn
>>987のリンクの、さらにリンク先
http://www.drking.plus.com/hexagons/misc/grid.html
に欲しい式がありました。ありがとうございました。
HEXをこう並べるのは気づきませんでした。

http://gamdev.org/up/img/8986.lzh
に、作成したサンプルをアップしました。
.NetFramework2.0が必要になりますので、すみませんが
Windowsupdateなどからインストールをお願いします。

その他の注意点はreadme.txtを参照してください。

>>992 さん
A*法で最短経路を求めるとき、残り距離の見積もりとして、最短距離を使用します。
ルートAとルートBのどちらが短かそうか、などという判断です。
詳しくは
http://ja.wikipedia.org/wiki/A%2A
をどうぞ。
0995名前は開発中のものです。2007/02/21(水) 16:58:44ID:Az2RuQ79
>>994
どうもです
教えていただいたのですが
どうプログラムに反映するのかさっぱりわかりません orz
独自で作って後でこれは〜法だったのか!ってのが多いので
数式見てもピンと来ないです
0996名前は開発中のものです。2007/02/22(木) 01:04:54ID:tSJbMxqg
良い読み物として読ませてもらっているが、そろそろ次スレよろ。
0997名前は開発中のものです。2007/02/22(木) 19:05:52ID:Qy+LhnRX
立てようとしたが無理だった。誰か頼む。
----------------------------------

ここはシミュレーションゲームをみんなで作るスレです。 
各レベルの課題に沿って作ってみてあぷしてみましょう。 

まとめ: 
SLGを作らない? 
http://gamdev.org/w/?%5B%5BSLG%A4%F2%BA%EE%A4%E9%A4%CA%A4%A4%A1%A9%5D%5D ;

あぷろだ: 
http://gamdev.org/up/ ;

前スレ:
http://pc10.2ch.net/test/read.cgi/gamedev/1079745509/

関連ページ: 
段階的学習! 
http://gamdev.org/w/?%5B%5B%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%A1%AA%5D%5D ;

各レベルの課題はまとめ参照
0998名前は開発中のものです。2007/02/22(木) 19:47:27ID:LXiAekOY
あい。もろコピペでいいんだよね。

初心者専用スレ「シミュレーションゲーム」を作らない?2
http://pc10.2ch.net/test/read.cgi/gamedev/1172141181/
0999名前は開発中のものです。2007/02/22(木) 21:45:54ID:Qy+LhnRX
次スレ

初心者専用スレ「シミュレーションゲーム」を作らない?2 
http://pc10.2ch.net/test/read.cgi/gamedev/1172141181/ ;
1000名前は開発中のものです。2007/02/22(木) 21:46:46ID:Qy+LhnRX
次スレ

初心者専用スレ「シミュレーションゲーム」を作らない?2 
http://pc10.2ch.net/test/read.cgi/gamedev/1172141181/ ;
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。