C/C++言語でRPGを作ってみるスレ2

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
作りたい人がきてください。

まとめサイト
http://himatanuki.hp.infoseek.co.jp/
まとめサイト(Wiki)
http://gamdev.org/w/?%5B%5BC%2FC%2B%2B%B8%C0%B8%EC%A4%C7%A3%D2%A3%D0%A3%C7%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%EB%A5%B9%A5%EC%5D%5D

前スレ
C/C++言語でRPGを作ってみるスレ
http://pc8.2ch.net/test/read.cgi/tech/1114834076/

2デフォルトの名無しさん:2005/07/09(土) 15:17:31
>>1 乙
3デフォルトの名無しさん:2005/07/09(土) 15:17:59
>>1
乙カレチャーン
4デフォルトの名無しさん:2005/07/09(土) 15:18:22
>>1
ゲーム製作技術板でやれよ クズ
5デフォルトの名無しさん:2005/07/09(土) 15:22:15
終了。

ゲーム製作技術板に逝け。
6デフォルトの名無しさん:2005/07/09(土) 15:23:15
>>1
7デフォルトの名無しさん:2005/07/09(土) 15:33:26
Report Program Generator
8デフォルトの名無しさん:2005/07/09(土) 15:39:00
RPGツクールを使うといいと思うよ
9デフォルトの名無しさん:2005/07/09(土) 15:43:15
ロケットランチャーだろ

でじゃぶー?
10デフォルトの名無しさん:2005/07/09(土) 15:45:13
板違い&重複

C++でRPGゲームを作成する
ttp://pc8.2ch.net/test/read.cgi/gamedev/1101161690/
11デフォルトの名無しさん:2005/07/09(土) 16:32:45
>ゲーム関係の話題はゲーム製作板へどうぞ。

注意書きくらい読もうねw
12デフォルトの名無しさん:2005/07/09(土) 17:13:38
前スレの最初と同じ荒れ方にワロス
13デフォルトの名無しさん:2005/07/09(土) 18:30:08
RPGツクールを使うといいと思うよ
14武家諸法度@co.jp:2005/07/09(土) 18:45:50
いつの間に作られてる・・・

つくってみたーよさん来てるかな。
15デフォルトの名無しさん:2005/07/09(土) 19:02:37
>>14
お、前スレ1さん。
お勉強の方はどうっすか?
16デフォルトの名無しさん:2005/07/09(土) 19:55:08
>>14
キテルーヨ
17デフォルトの名無しさん:2005/07/09(土) 21:13:17
ゲーム製作技術板より同人ゲーム板向けのネタだな
18デフォルトの名無しさん:2005/07/09(土) 22:08:07
ム板なんで、RPGを作るというよりは

RPGを作るためのシステムを作る

にしたほうがいいかもな。
で、実際にゲーム作るのはゲ製板でやればいいし。
19デフォルトの名無しさん:2005/07/09(土) 22:21:34
某スレより転載

・クラス
Object
├Controler - 一階層かます(なくても良いかも)
|├GameControler - ゲームの進行を管理
|├GraphicControler - 表示を管理
|├SoundControler - 音の管理をする。
|├ButtleControler - 戦いを管理。
||         行動の順や、「この人が"戦う"選んでるからこの人にダメージ」なジャッジをする
|└MapControler - マップを管理(町、ダンジョンの切り替えなどをつかさどる)

└GameObject - 一階層かます(ゲーム内登場物という共通特性がある場合に。Nameとか)
 ├Actor - 演者。主に有生物。
 |├People - 町の人とか、戦わないマップキャラで終わる人々。
 |├Enemy(Monster?) - 敵。Battleable実装
 ||└[性格を持った敵] - 振る舞いが特化されていて、個々に実装必要な奴。ボスなど。Battleable実装
 |└MainActor(Player?) - 主人公とその仲間。Battleable実装。
 | └[性格を持った仲間] - それぞれ実装を必要とする場合のキャラ。
 |             NPCを含むためControlable実装は任意。
20デフォルトの名無しさん:2005/07/09(土) 22:22:45
>>19
OOとしてはイマイチだな。
コントローラーて・・・
21デフォルトの名無しさん:2005/07/09(土) 22:26:01
 ├Map - マップの名前とマップチップのデータを持つ。
 ├MapChip - マップの特性を持った構造体(構造定義せずに配列とかでも良い?)
 ├Item - アイテム共通の性格。
 |└[個々のアイテム] - 性格を持ったアイテム。振る舞いは個々に違うため別個に記述。
 ├Magic
 |└[個々の魔法] - 性格を持った魔法。振る舞いは個々に違うため別個に記述。
 └Skill(Action?) - スキル。プレイヤーごとにインスタンスを4つまで保持し、戦闘時コマンドとして表示。
  ├Spel - 呪文をとなえる。(PlayerのMagicリストを参照したい)。
  ├Fight - たたかう。
  ├UseItem - アイテムを使う。(Playerのアイテムリストを参照したい)
  ├Defence - 防御
  ├Escape - 逃げる。(隊列先頭の奴に強制的に付加されるって、なぁ)
  └[その他] - 昨今のドラクエの"とくぎ"など。

さっきの続き
22デフォルトの名無しさん:2005/07/09(土) 22:32:40
なんと、ドアに話しかける必要が出てきたんですよ。
23デフォルトの名無しさん:2005/07/09(土) 23:13:36
>>19
昔ム板でRPGのクラス設計のスレがあって、そんときもそんな感じだったな
24デフォルトの名無しさん:2005/07/10(日) 00:17:05
人物クラスをドアとして扱えばいいだけ
25デフォルトの名無しさん:2005/07/10(日) 00:30:53
魔法とアイテムとスキルと「戦う」と「防御」は、振舞いほとんど同じだ。
26デフォルトの名無しさん:2005/07/10(日) 00:47:04
そうだよなー汎用コマンドがあって、「戦う」はMPを消費しないとか、
「防御」はダメージを与えないで防御力一時アップとか、あとはナレーションの辻褄だけだし
27デフォルトの名無しさん:2005/07/10(日) 00:49:42
戦闘中のコマンドは外部に出してパラメータを編集するようにしておけば追加する時便利
逆にアイテムはクラスのほうが柔軟性が増す
28デフォルトの名無しさん:2005/07/10(日) 01:17:18
スレの趣旨としては議論より「作ってみたぽ!」なんだが。
29デフォルトの名無しさん:2005/07/10(日) 01:33:00
ゲ製作みたいに議論中に新しいネタが出てきたらうpするって流れだと思ってた
ノウハウ貯めるためのスレじゃないんだねスマソ(^^;
30デフォルトの名無しさん:2005/07/10(日) 01:40:10
だから作るっていうならム板じゃなくてゲ製って話だろ
31デフォルトの名無しさん:2005/07/10(日) 02:01:30
>>30
そういうのは自治スレでやってくれ
32デフォルトの名無しさん:2005/07/10(日) 02:15:23
>>31
ゲーム関係の話題はゲーム製作板へどうぞ。

この注意書きが読めない基地外でつか?
誰が見ても100%板違い。議論の余地は無い。OK?
33デフォルトの名無しさん:2005/07/10(日) 02:22:17
>ゲーム製作板

そんな板はありません。
34 ◆mCEJQ9Ki/Q :2005/07/10(日) 02:29:20
俺も最初このすれ見たときさ 、何でむ板にあるのかと思ったよ。
で、なんかコンソールベースのRPG見てああなるほどって思ったけど
グラフィック使ってるとこ見ると、やっぱゲ製作のがいいんじゃないかと思った。
荒れるからさここらへんで定義を見直そう。
プログラム板でRPGを作ってみるということは
ようするにプログラムの勉強のためだよね?よくわからんが・・・
それならライブラリなど使わずにテキストベースかGDIでアルゴリズムの勉強としてなら
ここでもいいんジャマイカ?
で、openglとかdirectxとか使うともうゲームの勉強になっちまうから、ゲ製作のほうが適している。
荒れないですむと思う。
そもそも作ってみるスレというのがあまりよくわからない。
作って何がしたいのか。
それでおれは作って勉強してみるスレと解釈したがまあわからんもんねる
35デフォルトの名無しさん:2005/07/10(日) 03:05:59
ライブラリの話題、ツールの設計製作まではセーフ

SDL=Simple DirectMedia Layerでゲームだ
http://pc8.2ch.net/test/read.cgi/tech/1103655588/
Irrlicht初心者質問スレ
http://pc8.2ch.net/test/read.cgi/tech/1104179696/
【C++】 DirectX初心者質問スレ Part4【C++】
http://pc8.2ch.net/test/read.cgi/tech/1115484821/
OpenGLスレ Part7
http://pc8.2ch.net/test/read.cgi/tech/1118151979/
各板対抗 RPGツクールでゲームinム板
http://pc8.2ch.net/test/read.cgi/tech/1059441167/
36デフォルトの名無しさん:2005/07/10(日) 03:27:56
>>33
んなーこたーないw
37デフォルトの名無しさん:2005/07/10(日) 03:34:22
一度はアマチュアゲーム板で引き取るって話がついたのにまた再燃してるね
そういう不確定な話やごたごたをこのスレに持ち込まないで欲しい
ローカルルールの揚げ足を取るのイクナイ
38デフォルトの名無しさん:2005/07/10(日) 06:49:05
俺はゲ製に移動しとくか・・・
39デフォルトの名無しさん:2005/07/10(日) 07:07:13
ここ叩いてるのってゲ製作のスレ片っ端から叩いて奴と同じかな
40武家諸法度@co.jp:2005/07/10(日) 07:07:40
別にRPG関連で、C/C++なら、実際に作ったコードを載せてもいいし、
その前の過程でここに載せて、この先どうやって作ったらいいかとか聞いてもいいし、(それだったら、その専用スレのほうがいいかも)
初心者のために、>>19>>21みたいなことを書いてもいいし、
まっ、とりあえずRPG関連で、C/C++なら、何だっていいわけ。

楽しく書いて、楽しく学ぶ。
これが一番かな。

そろそろデフォルトの名無しさんにもどろ。
41デフォルトの名無しさん:2005/07/10(日) 07:32:44
>>40
で、今どのヘンまで進んでるん?
42デフォルトの名無しさん:2005/07/10(日) 09:04:42
RPG製作を通してC/C++言語と関連知識を学ぶスレで
いいんじゃない。
43デフォルトの名無しさん:2005/07/10(日) 09:10:17
ゲ製作がIDなしならこんなことにならないのに
44デフォルトの名無しさん:2005/07/10(日) 09:21:14
>>42
なんかそんな本でてそーw
45デフォルトの名無しさん:2005/07/10(日) 09:33:35
そしてろくな本じゃない。
46デフォルトの名無しさん:2005/07/10(日) 09:36:40
っていうか、プログラム板的にはRPGコンパイラ/インタープリンタを
作るスレにすべきでしょ? ゲームの話をする所じゃないんだから。
47デフォルトの名無しさん:2005/07/10(日) 10:16:09
前スレからゲームデザインの話はあんま出てなかったかもね。
プログラムの話ばっかだったかと。
48デフォルトの名無しさん:2005/07/10(日) 10:26:19
ム板だからね
49デフォルトの名無しさん:2005/07/10(日) 11:06:30
>>46
>>19>>21ぐらいからやっとそういう話になってきたけど
本題に入る前に話がそれていくw
50デフォルトの名無しさん:2005/07/10(日) 11:54:23
>>18
それいいな。ゲ製板からは歓迎されそうな気がする。


 [  マ板  ]

システム提供↓↑ゲーム本編作成。システム要望

 [  ゲ製板  ]
51デフォルトの名無しさん:2005/07/10(日) 12:12:09
>>50
大間違い。ここは「ム板」。
52デフォルトの名無しさん:2005/07/10(日) 12:24:11
ム板ってなにするところ?
53デフォルトの名無しさん:2005/07/10(日) 12:52:27
人々を鬱にするところ。
54デフォルトの名無しさん:2005/07/10(日) 13:44:22
たしかに「ム」だな・・・
55デフォルトの名無しさん:2005/07/10(日) 14:11:29
じゃあ。
C/C++言語でRPGシステムを作ってみるスレ

RPGシステムに関するC/C++プログラミングの話題。アルゴリズム・
データ構造・処理の効率化・ライブラリ等など、プログラミング
の話題限定で語りませう。ゲーム製作の話はゲ製板で。
でOK?
56デフォルトの名無しさん:2005/07/10(日) 14:53:43
それだな。
57デフォルトの名無しさん:2005/07/10(日) 15:08:17
2スレ目に入っているのに今さら四の五の言うなよ。迷惑だ。
58デフォルトの名無しさん:2005/07/10(日) 15:20:16
また前スレ前半の流れに戻るわけだ
59デフォルトの名無しさん:2005/07/10(日) 16:29:25
つーか、もうこんな話題でスレが5%消費された時点で鬱い。
ム板なんだから、前スレにあったように「作ることを楽しむ」スレであって欲しい。
一番の問題は「実際に作ってる人」が少ないってことだな。
60デフォルトの名無しさん:2005/07/10(日) 16:44:51
一番の問題は「板違い」(プゲラッチョ
61デフォルトの名無しさん:2005/07/10(日) 18:15:20
いい加減、話戻さない?
62デフォルトの名無しさん:2005/07/10(日) 18:16:34
>>41そこそこ。
63デフォルトの名無しさん:2005/07/10(日) 20:09:48
>>62
そか。がんがれ。
64デフォルトの名無しさん:2005/07/10(日) 20:49:17
クラス設計を考える時間>>>>>>>>ゲームの動かし方考える時間>>ゲームのアイディアを考える時間

ですわ。。
汎用性とか考え出すとキリが無いよ orz
65デフォルトの名無しさん:2005/07/10(日) 20:58:15
ときどきでいいから、アイデアを考える時間を、増やしてあげてください。
66デフォルトの名無しさん:2005/07/10(日) 20:58:33
ある程度妥協しろ。
67デフォルトの名無しさん:2005/07/10(日) 21:04:11
妥協したり計画を立てないと、どんどん膨らんじまうからなぁRPGって

orz
68デフォルトの名無しさん:2005/07/10(日) 21:43:34
RPG作りで一番時間がかかるのはバランス調整だよ。
コーディングしている時間なんて全然大したことない。むしろ楽な部分。
一人で延々とテストプレイを繰り返してるとイヤになること請け合い。
まじでテストプレイヤーが欲しくなるよ。
6964:2005/07/10(日) 23:08:42
妥協しててもあんま進まなかったり ^^
ゲームを本格的に作るの初めて+クラスを本格的に使うの初めてなので。
勢いで始めましたけど、やぱちょっと無謀だったか。。

>>68
超小規模なのになる予定なので、
そこは一番心配してないです ^^
70デフォルトの名無しさん:2005/07/11(月) 00:43:03
いやー、敵が10種類とかでも相当大変だよ?(w
まあ頑張って。実際に作ってる人が少ないから期待してるよ。
71デフォルトの名無しさん:2005/07/11(月) 02:33:08
>>64
自分もそうなりがち。頭でっかちというか。
だから、初心者の頃の、とにかくコーディング
という気持ちも忘れないようにしてる。
72デフォルトの名無しさん:2005/07/11(月) 13:38:51
とりあえず、第一ゴールを決めるべし。
73デフォルトの名無しさん:2005/07/11(月) 13:45:47
yoshaaaaaa, kisya----! orz
74デフォルトの名無しさん:2005/07/11(月) 20:52:31
>>68
ム板的な視点で見ると、バランス調整自体をコーディングしたい。
インターフェイスをカットしたモードでAIが超高速でレベル上げする。
その統計を収集して、ここら辺で詰まるみたいなグラフを描くとかね。
進化するAI(GAとかか)ならFF6のバニシュデスみたいな穴も発見可。
つかプロのコンシューマのRPGでは既にそういうことやってんのか?知らないけど。
75デフォルトの名無しさん:2005/07/11(月) 20:56:26
単純な戦闘だけじゃないんだけどな…。
プレーヤーがどこで迷って、その分どれだけ歩いてどれだけ敵に遭遇してレベルが上がるか
ってのはやっぱり人間がテストしないと分からん気がする。
76デフォルトの名無しさん:2005/07/11(月) 21:01:22
AIを進化させたとして、そのAIをどこに置くのだい?
ROMに焼いた時点で進化を止めるのかい?
77デフォルトの名無しさん:2005/07/11(月) 21:13:41
おいおい何故ROMに焼く。
デバッグとかバランス調整に使うだけなんだからゲーム本体には含めないだろ。
78デフォルトの名無しさん:2005/07/11(月) 21:20:34
>>74
それは1つ楽するために10倍ぐらい苦労するアプローチだな(w
俺的には>>75に同意。やっぱ実際にプレイしてみないことには
バランスの善し悪しは分からん気がする。
79デフォルトの名無しさん:2005/07/11(月) 21:31:49
そもそもバランスの最適値なんてないんじゃないかね。
ゲーマーもさまざまなんだし。
FF4なんかは2バージョンあったよね、普通のとムズいのと。
80デフォルトの名無しさん:2005/07/11(月) 21:32:57
バランスはともかく、イベントフラグのデッドロック的なバグは
AI(に満たちないほどの単純作業のルーチンだが)で発見できるといいかもしれん。
総当りだとものすごい時間かかりそうだが。
81デフォルトの名無しさん:2005/07/11(月) 21:52:46
なんにせよ、動くものがなければ話にならんだろ。
最初はシンプルでいいから、なるべく後から構成要素の追加拡張が容易なフレームワークを設計するのが先だな。
82デフォルトの名無しさん:2005/07/11(月) 22:09:30
DirectXAppWizaedってVS.net2003じゃ選択できないの?
8374:2005/07/11(月) 23:20:37
>>75
人間は必要だって。その省力化
>>78
■だったら開発に一億位かかっても十倍位元が取れそうだ
84デフォルトの名無しさん:2005/07/12(火) 01:49:22
>>80
イベントの到達不能バグの自動検出は
未踏ソフトなんとかでどっかの学生が題材にしていた
なんつーか、微妙だったけど。
85シープラ勉強中 ◆ryjMYLsfPA :2005/07/12(火) 15:08:54
http://49uper.com:8080/html/img-s/65902.zip

途中経過です。
前回のと動きはあんま変わってません。
キャラが動くだけです。
中身はメチャクチャかき混ぜたので、いまいち把握できてません。
メモリリークとかあったらホントごめんなさい。

絵がでるオブジェクトに使うために、基本クラスを作ったのですが、
GetX() とか、SetWide() みたいなのが大量にできちゃっいました。
これは一般的なんでしょか?
ソースがいたずらに長くなってしまう・・。

町の人とPlayerのクラスも共通のとこがいっぱいあるから、
もう一個基本クラスを作ったほうがいいかもしんないし。
あー、基本クラスのことだけで、三日は費やしてるわ orz
86デフォルトの名無しさん:2005/07/12(火) 15:47:30
あう、またMSIMG32.dllで弾かれた・・・。
LoadImageとTransparentBltを適当に補ったら動いたんだけど、
ほとんど真っ暗だった(つд`

GetXとかはinlineするといいかも。
87デフォルトの名無しさん:2005/07/12(火) 16:45:50
OOPでは設計に時間を費やすべきだ。
設計次第でコーディング時間は短縮される。
88シープラ勉強中 ◆ryjMYLsfPA :2005/07/12(火) 17:32:40
>>86
あ、やぱしww
前スレでもそう言ってるの見ましたから、エラーがでると思ったんですが。
描画はあとで差し替える予定ですので、そのときまでは解決しないかもです。
前スレ821さんのような技術がないんで。。
ちなみに、実行ファイルは正常に動作するんでしょうか?

>>87
オブジェクト志向ってのがなんなのか全然わからない orz
そのクラスの中で自己完結的に動作すれば
オブジェクト志向を名乗っていいんでしょか?
(初期化→動作→表示→開放 みたいな・・)

ポリモーフィズムってのはあきらめました ^^
89デフォルトの名無しさん:2005/07/12(火) 17:37:06
>>85
いいたい事は色々あるが、
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0007.png
これで正常な動作なのかどうかだけ聞きたい。
9089:2005/07/12(火) 17:53:19
ああ、ごめん。
パスにスペースが入ってるのが駄目だったのかもしれん。
移動したらちゃんと表示されるわ。

しかしなぜデバッグビルド?
91デフォルトの名無しさん:2005/07/12(火) 18:01:01
>>89 >>90
ひえ〜えぇ、
そんなんなっちゃったんすかww
↓が意図した絵です。だいじょぶでしょか。
http://49uper.com:8080/html/img-s/65914.jpg

ところで、質問ばかりですみませんが
デバッグビルドってなんですか?
ちなみにツールは VC++6.0 Standard です。
9289:2005/07/12(火) 18:09:08
>>91
OK。ばっちりだ。

デバッグビルドっていうのはデバッグするためのビルド。
デバッガをつかってステップ実行したりできるように
ソースの情報が入っていたりする。

VC6なら
ビルド->アクティブな構成の設定->Win32Release
とかにすればReleaseビルドになるとおもう。多分。

あと、メモリリークしてると思う。
ベースクラスのデストラクタもvirtualじゃないし。
93デフォルトの名無しさん:2005/07/12(火) 18:13:56
>>88
オブジェクト指向って、要はメッセージの送受信だけでプログラムの
流れを表現しましょうとゆー考え方だと思う。

例えば、プレイヤーオブジェクト P と敵オブジェクト E があって、
PがEを攻撃して2ポイントのダメージを与えたとする。
このとき、オブジェクト指向では E に「体力を2ポイント減らしなさい」
というメッセージを送る。例えば E.hp_herase(2) という具合。

ここでのミソは、E の内部構造がどうであれ、.hp_herase() という
メッセージ(つまりメソッド)が分かっていればプログラムが書ける、
というところ。仮に体力が E.hp というメンバで表されているとしても、
その値を外部から変更するのは無しにして、体力を変更するメッセージ
(メソッド)を使いましょう、ということ。

ゲーム全体がオブジェクト間のメッセージのやりとりだけで破綻なく
記述できれば、オブジェクト指向の設計として成功しているといえる。
しかし実際は、往々にしてオブジェクトの関係(メッセージのやりとり)が
チョー煩雑になったり内部メンバを直接変更したくなったりする。
「それは設計が悪いから」とゆーのがオブジェクト指向設計の切り捨て方。
94デフォルトの名無しさん:2005/07/12(火) 19:05:01
大雑把すぎるなあ。
95シープラ勉強中:2005/07/12(火) 19:05:44
>>92
おお、役に立ちそうな情報をありがとうございます。
設定を変更したら、いつもより小さめな実行ファイルができました!
てゆか、デバッガ使ったことない、、今まで無駄なことしてたのかああぁ。

メモリリークはしてますか・・
実行しちゃった人、ごめんなさい m(__)m

仮想関数はちょっとやってみた程度なのでよくわからないです。
私のお勉強本には、デストラクタの virtual は乗ってないし。。
ちょっと研究してみます。
ホントありがとうございます。

>>93
こっちにも役にたちそうな情報が!
クラスを使いはじめて思ったんですが、
他のプログラマさんが作ったライブラリを使ってみないと、
自分ではうまく作れないような気がしてます。
(標準のやつ以外使ったことないww)

わかりやすくて安全で使いやすくて見やすい
プログラムを書けるようになるには、あと何年かかるんだろうか。
どもです。
96デフォルトの名無しさん:2005/07/12(火) 22:32:27
>>95
とりあえずデストラクタをvirtualにしないと継承したクラスを
ベースクラスに入れて使ったときにメモリリークする。

CPeopleとCPlayerにはどちらもDrawメンバ関数があるけど
こういうやつをベースクラスに落とし込む。

ついでに例えば
CPlayerのメンバ変数に
HBITMAP hBitmap;
とでもしておいてCreateでビットマップをLoadImage、
DeleteでDeleteObjectとしたりする。
DrawではHDCを渡すだけ。
とか。
97デフォルトの名無しさん:2005/07/12(火) 22:41:07
そういうのは、スーパークラスにDrawableObjectをおきたいな。
描画管理はここに任せて、派生クラスは継承したメンバ関数で、
なるべく描画処理の細かいロジックは気にしない。
98デフォルトの名無しさん:2005/07/12(火) 22:47:58
>DrawではHDCを渡すだけ。
>とか。

デザパタのVisitorパターンもどきになるな。
描画オブジェクトはデバイスコンテキストを受け取って、自分自身を描画する。
systemの描画イベントが発生したら、リストアップされている描画オブジェクトに
順にdraw要求を出していけば、自動的に各オブジェクトが条件や状態に合わせ
た個別描画をしてくれる。

さらに複数の描画オブジェクトをまとめた集合を現すクラスにも同様のI/Fをつ
けることで、コンポジットパターンを活用できる。
99デフォルトの名無しさん:2005/07/12(火) 23:21:38
こういうときデザパタ便利だね。
100デフォルトの名無しさん:2005/07/12(火) 23:29:20
100を誘拐する
101デフォルトの名無しさん:2005/07/13(水) 00:10:25
void SONY () {
while (1) {
gijutsu--;
burando--;
kabuka--;
timer++;
}
}
102デフォルトの名無しさん:2005/07/13(水) 00:55:04
最強だなw
103デフォルトの名無しさん:2005/07/13(水) 00:56:01
そのうちすげーことになるが
うちどめしとかんといかんな
104デフォルトの名無しさん:2005/07/13(水) 01:13:45
アンダーフローが楽しみだな。
オーバーフローの方もな・・・。
105デフォルトの名無しさん:2005/07/13(水) 11:44:22
>>101
俺ソニー株持っているけど、そのうち文字通りの「億万」長者になれそうだなw
106デフォルトの名無しさん:2005/07/13(水) 13:01:15
途中でCtrl+Cで破綻するだろうけど。
107シープラ勉強中:2005/07/13(水) 17:26:48
やぱこのスレは親切な人が多いなぁ (´ー`)

>>96
前スレ821さんが描画専用のクラスを作ってたみたいなので、
私もそれに習おうと思ってました。
明日あたりに、試作型をつくってみまっす!ども。

スーパークラスのデストラクタのvirtualは、昨日いくつかググってみたのですが、
イマイチよくわからず。。
とりあえず付けときますw

関数名はオーバーライドして使う気が無いなら、
同じ名前はさけたほうがいいのかなあ。
(効果的なvirtualの使い方がわからないだけなんですけどね・・)
108デフォルトの名無しさん:2005/07/13(水) 18:28:00
>>107
デザパタの本買うといい、できればGOFの。
virtualの使い方が分かるだけでなく、
パターンの組み合わせで設計することができる(と嬉しいな)。
設計の会話になると〜〜パターンって出てくるくらいだから、意識はしてたと思うけど。
がんばれ!(おれもがんばる・・・)。

実際にC++の例が見たいなら
ttp://www.01-tec.com/document/cpp_design_pattern.html
あたりが揃ってるかな。
109デフォルトの名無しさん:2005/07/13(水) 19:47:10
オブジェクト指向の概念は
ttp://www.atmarkit.co.jp/fjava/devs/object01/object01.html
あたりで勉強すると良いと思う。
110デフォルトの名無しさん:2005/07/13(水) 19:55:26
>>108
お、いいなそこ。ブックマークしとこ。

と思ったら既にブックマークしてあった。orz
ブックマーク膨らみすぎ…
111デフォルトの名無しさん:2005/07/13(水) 20:57:36
>>110
あるある、いいなと思ったら既にブ(ry

極論すれば、オブジェクト間の情報伝達は全てパケット通信でできる。
localohostを使ってもいいし、あるオブジェクトは地球の裏側にあってもいい。
しかしそれでは実現が難しいケースがある、というのが現実。
理論としては、聞いただけでオラなんだかワクワクしてこまいか?
112シープラ勉強中 ◆ryjMYLsfPA :2005/07/13(水) 22:10:40
ttp://49uper.com:8080/html/img-s/66048.zip

ちょっとためしにグラフィック専用のクラスの雛形を作ってみました。
PlayerはTransparentBlt()で描画して、
BackGroundはBitBlt()で描画するプログラムです。

どうもいまだにHBITMAPとHDCをいつ開放していいのか
よくわからないのですが、これ、大丈夫ですかね?

描画クラスとPlayerクラスでHDCとHBITMAPを引数として
いっぱい受け取ってるのに何一つ開放してないし、
*m_pHbitmapはBitmapOriginalのアドレスを記憶したあとも
開放しないでそのまんまなんですが・・。
描画クラスのhBitmapOldもそのままですし。

うー、毎度のことですが、メモリリークしてたらごめんなさい。

あ、あと、*m_pHbitmapはBaseクラスに持たした方がいいですかね?
ファイルも分けてないし、見にくいプログラムですみませんが、お願いします m(__)m

>>108 >>109
なんかわかりやすそうなサイトですね。
私もブックマークしときました!
どうもありがとー。
113シープラ勉強中 ◆ryjMYLsfPA :2005/07/13(水) 22:26:01
うはー、
void BitBlt (int x, int y, RECT rect, HBITMAP hBitmap, HDC hdc, HDC hMemDC)
関数の一番下で、
::SelectObject(hMemDC, hBmpOld);
するのを忘れてました orz
これやんなきゃまずいんですよね?
追加お願いします。
114デフォルトの名無しさん:2005/07/13(水) 23:01:01
なんでDirectX使わないの?
115デフォルトの名無しさん:2005/07/13(水) 23:09:50
ながれはさわやかにぶった切り、
ちょっと遊びで作ってみてひけらかし。
ソースはださない。あまりにも行き当たりばったりで見れたもんじゃないし、
文句をいわれそうだから。
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0009.lzh
116デフォルトの名無しさん:2005/07/13(水) 23:20:52
>>114
さぁ、実行環境がGDIより限られるからじゃないかな。

>>115
どろどろしたものが湧いて出た!!!
やべー!逃げる!
おれもひけらかしてぇ・・・。
もしや、(・∀・)作ってミターヨさんでは?
117デフォルトの名無しさん:2005/07/14(木) 00:14:43
>>116
ちがうよん。
118デフォルトの名無しさん:2005/07/14(木) 00:17:37
ノートン先生大激怒
119117:2005/07/14(木) 00:26:00
>>115
おおー、よくできてますね。アスキーアートよりずっと見栄えがする(w
SDL 使ってるのかな。コードに興味があるのでソースを希望してみるテスト。

余談だけど、ちゃんと動くプログラムは汚いことが多いです。
もし気にしてるならその必要はないですよ。
あと、コードを流用していたとしても無問題です。
コードそのものをこのスレに貼ってる時点で著作権とか放棄してるつもり。
120安倍なつみ:2005/07/14(木) 00:53:49
でも、そのコードがどっかからのパクリだとまずいことになるかもね。
121デフォルトの名無しさん:2005/07/14(木) 01:10:13
君に言われてもなぁ
122デフォルトの名無しさん:2005/07/14(木) 01:16:01
>>112
オブジェクト指向はそのソースとは程遠いので、
提示されたリンク先を読んでも、そのソースの
どこをどうするということには繋がりにくいだろうな。

具体的な視点から考えるのも良いかもしれない。

現状の CGraphic や CObjectBase は、クラスとしての意義が全く無い。
何のメリットも無いクラスを作るのは無駄にプログラムを複雑にしていると言えるだろう。

クラスを作る前に、クラスを作ることによるメリットを考えると良いよ。
クラスによるわかりやすいメリットとしては
 ・解放を忘れてはいけないリソースがある場合
  RAII(Resource Acquisition Is Initialization) の考え方でリソースリークを根絶
 ・2つ以上の変数について整合性が必要な場合
  変数を private にして整合性が崩れる可能性を根絶
というようなものがある。

HBITMAP や HDC のリークが心配なら、
それらをクラスにしてコンストラクタで取得し
デストラクタで解放すればいい。
とは言っても、いつ解放して良いのかわからないのでは問題外なので、
まずはMSDNでよく調べてくるべきだろう。
123デフォルトの名無しさん:2005/07/14(木) 02:50:22
>>112

<気になった点>

・RECT型変数の値渡し
・大域変数と仮引数のシンボルが同じなので危険な香り (今は問題になっていないが・・・)
・ハンドル型のアドレスを保持しておく意味が分からない
・属性を持たない具象クラスは必要ないぽ
・WM_DESTROYでのリソース解放部分が怪しげ
・hMemMemDCにちょっとワラタ

<修正・改良すべき点>

・ある程度のサイズを持った構造体orクラスインスタンスは参照・アドレス渡しにする
・DCを削除する際は初期の状態に戻すべき (SelectObject)
・リソース管理クラスを作っておけば解放(や所有権)が明確化される
・HDCは必要な時にGet、Createすれば解放のタイミングは問題にならない。
 (ハンドル数の節約にもなるが、フラグメンテーションが発生する可能性はないのだろうか・・・謎)
124デフォルトの名無しさん:2005/07/14(木) 09:52:02
>>122 >>123
丁寧なご指摘、感謝です m(__)m

>>122
>現状の CGraphic や CObjectBase は、クラスとしての意義が全く無い。
いや、おっしゃるとおりで。。
今は絵を出すのに必死で、絵に必要なの以外のメンバは書いてないので、
オブジェクト指向もなにもあったもんじゃないです orz
MSDNは、がんばって調べてみます。
どうもありがとうございます。

>>123
広域変数とローカルの名前が同じなのは、全然考えてなかった・・変えときます。
ビットマップの読み込みと開放、バックバッファの作成と削除
この二つは制御するクラスを作ってみます。
::SelectObject()の話は、バックバッファ用のやつ(広域のhMemDC)のことでしょうか?
そえば最後に戻してないですね。。
作成したときの情報を、どっかに保存しておくべきか。
構造体やらの参照渡しも心がけておきます!
MemMemは、hWorkDCとかにすべきですかね ^^
色々ありがとうございました。

>>115
おー、すごい!
人の見ると刺激になります。
私もがむばらねば。
125デフォルトの名無しさん:2005/07/14(木) 16:06:56
アドレス渡しに比べた参照渡しのメリットがいまいちわからんぽ。
126デフォルトの名無しさん:2005/07/14(木) 16:50:09
オーバーロード演算子で大活躍してることを
時々でいいから思い出して下さい。
127デフォルトの名無しさん:2005/07/14(木) 17:32:15
>>115
よく出来ていると思う。ややCPU率が高い気も。
ドラクエ系ではすぐにたどり着けるマップも、wiz系だとムズい。
ソースは自由でいいと思う。自分も作品をうpしたい時に出しやすいし。

>>123
自分はCだけど、そういうのは1つの関数の中でやってしまうかな。
BitBlt2() {
CreateCompatibleDC();
SelectObject();
BitBlt();
SelectObject();
DeleteDC();}
128115:2005/07/14(木) 21:13:41
CPU利用率が高いのは手抜きです。
実は迷路生成と、迷路表示だけが目的で
切った張ったしてでっち上げたもので、
悪影響しかないと思いますのでソースは勘弁してください。

一応肝の迷路生成と迷路表示だけは抜粋しておきます。
// マップを全部壁にして、穴掘り法で迷路を生成する。
// 周りには番兵として道がある。
void MazeSub(int x, int y){
if(Map[y][x] != MAP_ROAD){
return;
}
int r = rand() & 3; // 次の道の方向
int p = (rand() & 2) - 1; // 回転方向を適当に変えて遊ぶ(-1か1)
for(int i = 0;i < 4;i++){
int px = GetDirX(r);
int py = GetDirY(r);
if(Map[y + py * 2][x + px * 2] == MAP_WALL){
Map[y + py][x + px] = MAP_ROAD;
Map[y + py * 2][x + px * 2] = MAP_ROAD;
MazeSub(x + px * 2, y + py * 2);
}
r = (r + p) & 3; // 回す
}
}
129115:2005/07/14(木) 21:15:26
// 3Dで表示する部分。
void DrawField(SDL_Surface *screen){
SDL_Color col;
col.r = 255; col.g = 255; col.b = 255;
DrawBox(screen,
X_CENTER - X_HALF, Y_CENTER - Y_HALF,
X_CENTER + X_HALF, Y_CENTER + Y_HALF,
255, 255, 255);
int px = GetDirX(chara_dir);
int py = GetDirY(chara_dir);
for(int i = 0;i < 3;i++){
bool front = Map[chara_y + py * i + py][chara_x + px * i + px] == MAP_WALL;
bool left = Map
[chara_y + py * i + GetLeftY(chara_dir)]
[chara_x + px * i + GetLeftX(chara_dir)] == MAP_WALL;
bool right = Map
[chara_y + py * i + GetRightY(chara_dir)]
[chara_x + px * i + GetRightX(chara_dir)] == MAP_WALL;
DrawFieldSub(screen, left, right, front, i);
if(front)// 前に壁があったらそれ以上描画しない
break;
}
}
130115:2005/07/14(木) 21:20:04
void DrawFieldSub(SDL_Surface *screen,
bool wall_left, bool wall_right, bool wall_front, int depth){
if(wall_left){// 左上
SDL_DrawLine(screen, (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * depth))), (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))), 255, 255, 255);
// 左下
SDL_DrawLine(screen, (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * depth))), (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))), 255, 255, 255);
}else{// 左
SDL_DrawLine(screen, (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * depth))), (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * depth))), 255, 255, 255);
if(depth < DRAW_DEPTH){
SDL_DrawLine(screen, (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
255, 255, 255);SDL_DrawLine(screen, (int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
255, 255, 255);if(!wall_front){SDL_DrawLine(screen,
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
255, 255, 255);}}}
// 右については略
// 左と座標を逆にして処理しているだけ。
131115:2005/07/14(木) 21:20:38
if(wall_front && depth < DRAW_DEPTH){
// 上
SDL_DrawLine(screen,
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER + (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),255, 255, 255);
// 下
SDL_DrawLine(screen,
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER + (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),255, 255, 255);
if(wall_left){
SDL_DrawLine(screen,
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),255, 255, 255);
}
if(wall_right){
SDL_DrawLine(screen,
(int)(X_CENTER + (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER - (Y_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(X_CENTER + (X_HALF / (1 + Z_BLOCK * (depth+1)))),
(int)(Y_CENTER + (Y_HALF / (1 + Z_BLOCK * (depth+1)))),255, 255, 255);
}}}
132115:2005/07/14(木) 21:24:47
荒らしっぽくなってしまった…
ごめんなさい。適当に整形してみてください。
整理すると消せる部分があるんですが、面倒でやっていません。

あと、文字表示にはSDL_kanjiを使っています。
配布ファイルに含めてしまったBDFは実は権利関係がまずいかもしれません。
FreeBSDからぶっこ抜いてきたものですから大丈夫だとは思いますが…
もし次があるとしたら、あるいは次の人は東雲あたりを使ったほうがいいとおもいます。
133デフォルトの名無しさん:2005/07/14(木) 23:15:28
>>132
次からはアップローダを使おうな。
134デフォルトの名無しさん:2005/07/15(金) 14:46:40
 良スレage
135デフォルトの名無しさん:2005/07/15(金) 15:20:10
(´ー`)俺もひそかにROMってるぜ
136デフォルトの名無しさん:2005/07/15(金) 16:55:07
(´ー`)俺もひそかに作りたいぜ
137127:2005/07/15(金) 17:16:11
>>128
SDLは分からないけど、結構簡単に3Dが作れるっぽいね。
SDL_DrawLineの引数の、(int)(X_CENTER - (X_HALF / (1 + Z_BLOCK * depth))),
とかは、同じコードを複数で使っているみたいだから、
LEFT_OVER_Xとかマクロ値にしてしまうとすっきりしそう。

僕も部分うp。BitBlt2。変数名がダサい・・。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/730.txt
BitBltは、引数がHDC限定だけど、これはHWNDかHBITMAPでもOK。
C++なら、BitmapBefore、BitmapAfterをコンストラクタとかにすればいいのかな。
138デフォルトの名無しさん:2005/07/15(金) 18:25:26
139デフォルトの名無しさん:2005/07/15(金) 19:48:12
140デフォルトの名無しさん:2005/07/15(金) 21:02:37
3Dじゃなくて、疑似3Dじゃないのか。
141115:2005/07/15(金) 22:16:22
ちなみに
Draw*という関数は自作です:-)
142127:2005/07/16(土) 05:06:00
>>137のを少し修正。頻繁に表示する場合か何が原因か分からないけど、
ウィンドウに描画したつもりが、デスクトップに描画にされる場合があるので。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/734.txt
143デフォルトの名無しさん:2005/07/17(日) 02:35:29
HWNDやHDCやHBITMAPが元々ポインタなのに
何故そのアドレスを渡そうとするのかよく分からないのですが。
あと、0か1しか返さないのにint型を返すと言うのも違和感が・・・。
boolとintはほとんど一緒ですけどね。
144デフォルトの名無しさん:2005/07/17(日) 03:29:02
>BitmapBefore/After

インターフェースがすごくわかりにくい。
せめて構造体を使ったほうが分かりやすいしバグも出にくい。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/740.txt

C言語だと関数のオーバーロードができないので
BitmapBefore0,1,2っていう名前になっちゃってるけど…。
145デフォルトの名無しさん:2005/07/17(日) 04:54:43
>>143
Cではbool型がないからintを使うのは普通(C99はべつ)。
146デフォルトの名無しさん:2005/07/17(日) 06:34:06
HWNDやHDCやHBITMAPは、やぱポインタなのか。
サイズも4バイトだし。
147デフォルトの名無しさん:2005/07/17(日) 08:22:32
before/afterってネーミングは良く使われるのかな?
俺は初期化と終了処理は慣例的にopen/closeにしてる。
148127:2005/07/17(日) 14:09:13
HWNDらのポインタは意味ないね。一般関数でNULLを返すのがある所からも。
intとかでやってたので、そのままやってしまってた。

戻り値は大体あんな感じかな。場合によっては、正負0の3パターンを返すとか、
引数にchar *型を渡すと、エラーメッセージを得られるとか。

引数は、構造体にまとめた方がいいのか。
増やす時に、ちょっと直すだけでいいとかもあるし。

before/afterはダイエットとかの広告のをいただいた。違う人だろと思いつつ。
149シープラ勉強中 ◆ryjMYLsfPA :2005/07/17(日) 15:52:14
http://49uper.com:8080/html/img-s/66654.zip

定期あげ。
あんま変わってませんが。

当たり判定のとこが激しくキモいので、もうちょっと練らなきゃです。
町の人と主人公と主人公の仲間を統括するような
クラスを作らなきゃいけないような気がするけど、
いいのが思いが浮かびません orz

早く村人いっぱい出したい。。
150シープラ勉強中 ◆ryjMYLsfPA :2005/07/17(日) 15:57:05
斜め移動がなくなって、操作感覚が悪くなったような。
でも斜め移動を残したら、判定たいへんそうですし。
あとスクロールさせたら画面がチラつくから、
バグってるのかどうかがわかりにくいです (T_T)
151デフォルトの名無しさん:2005/07/17(日) 16:47:37
WinMain.cppで
CreateWindowにWS_VISIBLEをつけるとShowWindowがいらなくなるし、

while(GetMessage(&msg, 0, 0, 0) > 0)
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
のようにした方がいい気がする。

関係ないけど自分がコーティングするときと比べると
だいぶ横幅が結構狭いですね。
ディスプレイの解像度はどのくらいでしょうか?
152デフォルトの名無しさん:2005/07/17(日) 16:54:38
あと、何故スレッドやマルチメディアタイマーを使わずに
精度の低いタイマーを使うのかと、開発環境を聞きたいです。
他にも色々あるけど。

153デフォルトの名無しさん:2005/07/17(日) 18:04:27
まあまあ。経験者はいろいろツッコミ入れたくなるだろうけど
アドバイス程度にしておこうよ。
154シープラ勉強中:2005/07/17(日) 18:20:42
>>151 >>152
どもです。windowsに関しては無知そのものなので
ちょこっと調べてみました m(__)m

WS_VISIBLE
可視状態のウィンドウを作成します。

::GetMessage()の戻り値
WM_QUIT メッセージを取得すると、0 が返ります。
エラーが発生すると、-1 が返ります。たとえば、hWnd パラメータが
無効なハンドルを指していた場合、エラーが発生します。

とありました。
いずれもご指摘の通りにした方が良さげですね。感謝!


パソの解像度は 1400*1050 です ^^
画面の半分ちょいぐらいでプログラム書いてますので、幅は狭めかも。
空いてる部分で2ちゃんとかしてるので、こうなってしまいました。
使ってるのは東芝のノートパソで、celelon1.8ギガのやつです。
コンパイラはVC++6.0 Standerdです。

Timerは、とりあえず30フレ出ればなんでも良かったのと、
マルチスレッドが全然わからないんで。。
あと::PeekMessage()と::Sleep()使う方法は知ってるのですが、
あんまパソに負担かけたくなくて。
今のタイマーだとCPU使用率も5〜15%なので、
パソにやさしそうなのでこれ使ってます。
最終的にはマルチスレッドというのをやりたいと思ってます。

ご指摘ありがとうございました。
155127:2005/07/17(日) 18:53:39
>>149
CPU率が高いかな。

RPGとか動きの少ないゲームは、移動とかしない時は、FPS4でいいと思うけどな。
3枚の視界サイズのメモリビットマップに、視界の全キャラの全足踏みパターンを
書いておいて、WM_TIMERで250ミリ秒毎に0→1→2→1と描画するだけ。

キャラが移動した時、画面がスクロールした時には、
3つの歩行パターン全部に更新部分を描画する。
156デフォルトの名無しさん:2005/07/17(日) 19:12:22
RPGプログラミングの書籍とかないかなぁ…
157デフォルトの名無しさん:2005/07/17(日) 19:18:40
>>155
俺の環境だとCPU利用率が1%ぐらい。
158157:2005/07/17(日) 20:38:48
勘違いされると困るから一応言っておくけど、
俺のマシンのスペックは今となっては高くない。
CPUはPentium3 900MHz
グラフィックはVIAのオンチップで
159デフォルトの名無しさん:2005/07/17(日) 21:31:04
>>158
OSは?
160157:2005/07/17(日) 21:35:51
Windows 2000
メモリは256M
161デフォルトの名無しさん:2005/07/17(日) 21:50:04
>>149
>// 開放(この開放のしかたはいいのか?)
>void Free ();

よくねーよボケー!!!
Free(); としましょう。それじゃ宣言止まりです。
162デフォルトの名無しさん:2005/07/17(日) 22:01:12
ワロタw
それじゃ解放処理呼ばれて無いわw
メモリリークしまくりんぐ
163デフォルトの名無しさん:2005/07/18(月) 07:33:37
おいらも参戦するっす
まだカーソルキーでスプライトを動かせるだけですが、マルチスレッド使ってます
画像データに、シープラ勉強中◆ryjMYLsfPAさんのものを使わせてもらっています
あと、コードはいろんなところからパクってます:-)
ttp://gamdev.org/up/img/2912.zip
164デフォルトの名無しさん:2005/07/18(月) 09:11:05
165デフォルトの名無しさん:2005/07/18(月) 09:54:21
>>156
http://pc8.2ch.net/test/read.cgi/gamedev/1086023829/
推薦図書/必読書のためのスレッド in ゲ製作技術
166デフォルトの名無しさん:2005/07/18(月) 13:14:38
>>157
うちは600MHzぐらいorz。すごく重いとかいう意味ではなくて、
一般的にfpsが高い方が作品としてすぐれているみたいに考えられているけど、
RPGや、ゲームではないけどテキストエディタとかは、
描画の回数を減らせるなら減らした方がいいのではという意味で書いた。

>>163
まずは、基本的な移動という感じですな。
お互いレベルアップできるようにがんばりましょう。
167シープラ勉強中:2005/07/18(月) 14:40:07
>>155
おお、そんな技もあるのかあ。
プログラムはどんどん重くなっていきますし、
いずれはそんな方法も使ったほうがいいのかなあ。
ちょっと難しそう・・どうもありがとうです。

>>156
わたしも欲すぃ。
町の人のセリフとか、どうやって個々に持たせるのか
全然思いつかないし (T_T)
あと、イベントとか、ホントどうするんだろうか・・。

>>161
うはwwほんとだwwww
いちおうFree()の中で開放してるやつは
全部デストラクタにも入ってるので
このプログラムではあんま結果は変わらないのですが、
過去のヤツでは問題アリアリのもあったかも。。
てゆか、たぶんFree()作ったときからそのヘンテコ記述でしたよぉ。
気づいてくれて、ありがとうございます m(__)m

>>163
おー、なんか私の知らない未知のテクノロジーがいっぱいww
絵はどう使っても問題ないんですよ。
でも、、ホントにあんなんでいいんですかね ^^
改変とかもバシバシやっちゃっても全然かまわないので。。

マルチスレッドうらやますぃ。
168デフォルトの名無しさん:2005/07/18(月) 15:30:29
>>163
クリティカルセクションをコンストラクタとデストラクタで
ロック/アンロックしてる部分は知らなかったんで「なるほど」と思いますた。
定石なのかもしれませんが・・。

wineからMSIMG32.dllの部分だけとって使おうと思ったら、
まだ実装すんでないのね。
169デフォルトの名無しさん:2005/07/18(月) 15:32:39
と思ったらyaneSDKのものだったんすね。<CriticalSection
ふむふむ。
170デフォルトの名無しさん:2005/07/18(月) 15:59:30
>168-169
御指摘通り、yaneSDKからパクってます(;´Д`)
コードを抜き出して組み込んでも良いと書かれていたので、
そうさせてもらってます:-)
(他の部分もコードを読んでいるんですが、
yaneSDKの中身はおいらにとっては難しすぎますorz)

使えるオープンソースは使っていこうという方針っす
171デフォルトの名無しさん:2005/07/18(月) 16:11:16
ロック/アンロックじゃなくて生成/破棄だね。

CriticalSectionはEnter回数をWin32側がカウントしているんじゃなかったけ。
そもそも動作しているスレッドがロックしているとか、ロック回数を保持するとか
必要あるのかな?
172デフォルトの名無しさん:2005/07/18(月) 17:44:10
>>171
ソース読んでない&&Java屋の戯言だから間違っているかもしれんが...
コンストラクタでロック、デストラクタでアンロックしているようだから>>168で合ってるはず。
再帰ロックすると、単純にデストラクタでDeleteCriticalSectionを実行するとバグるからだと思う。
173デフォルトの名無しさん:2005/07/18(月) 23:27:26
ゲームの場合、スレッドよりコルーチンの方が使いやすい希ガス。
WinでもConvertToFiber(うろ覚え)みたいなAPIで使えるよね。
ライブラリでも拾えるし。
174デフォルトの名無しさん:2005/07/18(月) 23:38:01
そもそも初心者スレだし、
無理してスレッドやらコルーチンやら使わなくてもいい希ガス。
175デフォルトの名無しさん:2005/07/19(火) 00:44:11
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0010.lzh
本当は出したくなかったんですが参考になればと思って出します。

数年前に某所で発表したものです。
見た記憶のある人は黙っておくこと。

問題があるソースだということは分かっています。
いまさら作り直すのも手間ですし、時間もかかるのでパス。
あと、バグがありますが消してません。場所も特定済みですが。

マップチップは前スレの852あたりから拝借。
マップエディタ、NPCエディタ、イベントエディタは…公開しない。
176デフォルトの名無しさん:2005/07/19(火) 02:16:24
>>175
わお!スクリプト記述キター!
やはりゲームシステムとゲーム内容は分離すべきですね。

なんかちょっとやる気出てきたゾ。
177175:2005/07/19(火) 06:33:50
言い忘れ。
マップが適当なのは組み立て方が
良く分からなかったのと面倒だったから。

ソース自体は素敵処理が満載で、
まんま使ったりしようとすると恐らく
痛い目にあうからやめた方が無難。
ただし、スクリプトの実現や、
NPCの実現の一つの手法としては
もしかしたら参考になるかもしれない。
178デフォルトの名無しさん:2005/07/19(火) 19:03:03
>>175
うあっ、また未知のテクノロジーがw
NPCエディタとか、イベントエディタとか
やぱ作らなきゃいけないのかぁ。
どこまでできるかな。。
179デフォルトの名無しさん:2005/07/19(火) 19:16:45
作らなきゃいけない、とゆーことはない。
作った方が楽できることもあるし、ゲームよりもエディタの方が
大掛かりになってしまうこともある(後者はある意味本末転倒)。
それに、一口にエディタといってもコンバータに毛が生えたようなものから
GUIベースの凝ったものまで色んな形があり得る。

エディタはプレイヤーには見えない(ゲーム開発者だけが使う)道具だから、
「何がしたいか」をはっきりさせて手抜きできるところは手を抜かないと。
何から何まで本格的にやってたらとてもじゃないけど完成しないよ。
180デフォルトの名無しさん:2005/07/19(火) 20:33:55
やっぱり、人のソース見るとやる気出てくるわ…
がんばろっと…
181デフォルトの名無しさん:2005/07/19(火) 21:50:32
やること満載なのがわかって、落ち込む人もいます orz
182デフォルトの名無しさん:2005/07/19(火) 21:51:59
夢が広がりんぐwww
183デフォルトの名無しさん:2005/07/19(火) 21:58:56
あんまり全体ばっかりを見て途方にくれるより
今できそうなことを着実にこなして、脳内を快感物質で満たし続ける方がいいよ
そうすればやる気も持続しやすくなるはず
184デフォルトの名無しさん:2005/07/19(火) 22:10:40
RPGはひとつひとつのルーチンは簡単だけど
全体の量が多くなるからねぇ…
185デフォルトの名無しさん:2005/07/20(水) 08:43:08
>>184
基礎だけなら、シューティングやシュミレーションなんかとそれほど変わらんとおもうが、
大抵、RPGはドラクエとかFFみたく凝りたがる人が多いからね。

とりあえず、Rogueのソース読みこなせればいっきに世界が広がるよ
と言ってみるテスト。
186デフォルトの名無しさん:2005/07/20(水) 11:24:43
Rogueやってみた。

ソース以前に操作方法でつまづいた orz
187デフォルトの名無しさん:2005/07/20(水) 16:34:12
スクリプトの作り方なんて激しく人に依りけりだからなぁ。
まずは外部依存でイベントを実行できるアドベンチャーを作ってみるとか。
188デフォルトの名無しさん:2005/07/20(水) 20:09:45
まずは2DマップでWizardryのシステムを作ったほうがいい気がする。
本家#1のやつね。あれはイベントスクリプトなんてものはないし、
そもそもNPCがいないし。フラグ管理もアイテムのみだ。

NPC以外の全てが詰まってるステキなゲーム。
189デフォルトの名無しさん:2005/07/20(水) 20:20:12
本家#1って?
190デフォルトの名無しさん:2005/07/20(水) 20:25:05
>>175
SUGEEEEEEEEEE
やっぱレベルが違うわ
自分はまだマップ読み込み+表示レベルっす

あと、スクリプト初心者な俺には
ttp://www4.nasuinfo.or.jp/~hobby/index.shtml
がかなり参考になった。AVGだし、C言語だけどね。
191デフォルトの名無しさん:2005/07/20(水) 20:39:53
>>189
一番最初のシナリオ。ASCIIの外伝とかじゃないやつ。
Wizardryはシナリオごとに#1、#2〜と番号が振ってある。
192デフォルトの名無しさん:2005/07/20(水) 20:41:57
I see.
193デフォルトの名無しさん:2005/07/20(水) 22:52:12
Wizardryって何
194デフォルトの名無しさん:2005/07/20(水) 23:50:13
おおっと! テレポーター
195デフォルトの名無しさん:2005/07/21(木) 00:48:55
石の中にいる
196デフォルトの名無しさん:2005/07/21(木) 16:45:17
なにやら面白そうなスレ
>>149が落とせなかったんで現状把握が出来てないのだが、
今どこまで進んでて、どの辺りが詰まってるん?
197デフォルトの名無しさん:2005/07/21(木) 16:53:55
きみょうなウサギは3かいかみついた
せんし1のくびをはねた
せんし1はまひした
せんし1はどくにおかされた
せんし1はいしになった
せんし1ははいになった
せんし1のレベルが7さがった

どうする?
198デフォルトの名無しさん:2005/07/21(木) 17:15:45
>せんし1ははいになった

それでも生きてるのか…?
199デフォルトの名無しさん:2005/07/21(木) 17:40:37
「くびをはねた」の時点で死んでる。
Wizには死より悪い状態がある。それが灰。
灰よりさらに悪い状態もあって、それがロスト。
200デフォルトの名無しさん:2005/07/21(木) 17:44:19
>>196
>>149は、プレイヤーらしきキャラが画面上を歩くだけのプログラムです。
今はフィールドのプレイヤーと町の人の共通の処理を、
なんとかクラスにまとめられないかを考え中です。

動きうんぬんよか、どういうクラスにするのかが難しい。
早くゲームっぽい動きを考えるとこまで行きたいよぉ。


>>188さんの提案は凄く魅力的。
まずはイベントとか無いのを作るほうが、
モチベーションを維持できそうな気がする。

スクリプトってなに?
201デフォルトの名無しさん:2005/07/21(木) 18:18:43
>スクリプトってなに?

たとえば王様のイベントがあったとして、

event.cpp
----------
void king()
{
 if(dead){
  msg("おおぅ、勇者のくせに死んでしまうとは情けない");
  msg("明日から来なくていいよ");
  sound("derodero.wav");
 }
}

↑こんな風に直接コーディングするのではなく
↓こういうテキストを用意して、プログラムからこのテキストを解析することにより
 上のコードと同じような動作を再現させる。

event.txt
----------
event king
 if $dead
  msg おおぅ、勇者のくせに死んでしまうとは情けない
  msg 明日から来なくていいよ
  sound derodero.wav
 endif
endevent
202デフォルトの名無しさん:2005/07/21(木) 19:13:11
>>201
げっ、マジですか?
それってメチャ難しそうなんですけど・・
たまにサイトとかで「独自のスクリプトを組んで〜」みたいなのを
見かけるのですが、コレのことだったのかぁ。

こりゃ無理ですわ orz
203デフォルトの名無しさん:2005/07/21(木) 19:15:10
>>200
動く物(その場でアニメーションを含む)はスプライトを扱う基底クラスを
作って、それを継承すると後々楽になると思う。
下はパッと考えで書いたので甘すぎるクラスになっているが、
基本的にはdoMove()で次の位置を決めdraw()で描画といった形。
NPCObjectはそれぞれランダムで決めた方向に進む処理をdoMove()に実装し、
UserObjectはkeyDirectionに従って進む方向を処理する。
その他オブジェクトは移動なしのスプライトアニメーションに使う等。

class MoveableObject{
MoveableObject(void);
MoveableObject(int controller, int xPos, int yPos);
virtual ~MoveableObject(void);
virtual void doMove(void);
virtual void draw(void);
protected:
int controller; //0 = user controll, 1 = non player controll
int xPos, yPos;
};
204デフォルトの名無しさん:2005/07/21(木) 19:17:02
改行多すぎたので分割、インデントが付けられないので醜くなってしまった

class UserObject: public MoveableObject{
UserObject(void);
UserObject(int xPos, int yPos);
virtual void doMove(void);
virtual void keyEvent(int direction);
protected:
int keyDirection;
};
class NPCObject: public MoveableObject{
NPCObject(void);
NPCObject(int xPos, int yPos);
virtual void doMove(void);
};
class OtherObject: public NPCObject{
..その他、小爆発アニメーションなど
};
205デフォルトの名無しさん:2005/07/21(木) 20:26:21
ぶっちゃけ、スクリプトはなくてもどうにかなる。
けれども、自由にNPCを追加したりするときに重宝する。
マップとスクリプトあれば、同じシステムでいくらでもゲーム作れるからね。
まあ、それがRPGツクールなんだけど。

何も完全構文である必要はない。@eとか@nとか、プレフィックス+1文字で
どうにかするとかもできる。
206デフォルトの名無しさん:2005/07/21(木) 20:44:10
大規模ゲームになると、スクリプトがないとやってられないよ。
RPGならどうしても大規模ゲームになるよね。
207デフォルトの名無しさん:2005/07/21(木) 20:46:26
>>202

スクリプトは、バイナリの簡単な仮想マシンにすると実装は楽だね。
大きなスクリプト書くのはしんどいがw
208207:2005/07/21(木) 21:15:22
小規模なRPGの場合、スクリプトなし、あるいはバイナリベースのスクリ
プトシステムに簡易アセンブラ(ラベルのアドレス化と簡単なニーモック、
フラグレジスタの変換程度)、といった形が現実的かも。

実行時にテキストを読み込んで処理するのはちょっとしんどいし、配布
にも不利だからね。
209デフォルトの名無しさん:2005/07/21(木) 21:19:08
まあスクリプトの処理方法が皆目分からないヤシはAhoのドラゴン本でも読んでなさいってこった。
210シープラ勉強中 ◆ryjMYLsfPA :2005/07/21(木) 21:23:10
http://49uper.com:8080/html/img-s/67378.zip

定期です。
本格的に>>149と変わってないのですが。
当たり判定で、ちょっとハマってしまいまして。。

>>203
私のプログラムでは、
CObjectBase ってのが MoveableObject に当たると思います。
てゆか、ベースクラスのメンバ変数を protected のとこで宣言すると、
派生クラスで直接使えるのにびっくりしてしまった。

あー、C++を覚えながらRPGを作るのは、やぱ無謀だったか。

>>203>>204に仮想関数がやたらと多いのは、
いったいなぜでしょうか?
アフォな質問で申し訳ありませんが、
お願いします m(__)m
211デフォルトの名無しさん:2005/07/21(木) 21:24:40
>>209
それはちょっと大袈裟すぎ…
212デフォルトの名無しさん:2005/07/21(木) 21:25:26
派生クラスでオーバーライドするから
213デフォルトの名無しさん:2005/07/21(木) 21:37:44
プログラマがスクリプト書くならLuaみたいな
既存の組み込みスクリプトでええじゃないか。
214デフォルトの名無しさん:2005/07/21(木) 21:39:41
構文解析の処理とかプログラミングの基礎だろ?
ゲーム作りたがる人は地味だから、これを飛ばしたがるけどねw
簡易電卓をまず作ってみるといい
215デフォルトの名無しさん:2005/07/21(木) 21:45:57
>>210
仮想メンバ関数を多用しているのは、端的に言うと>>212の意味。
基底クラスなどでvirtual宣言している仮想メンバ関数は継承クラスで再定義できる。
>>203を例にとると、

static MoveableObject spriteTable[MAX_SPRITE_COUNT];

int eventLoop()
{
 for(int i = 0; i < MAX_SPRITE_COUNT; i++){
  spriteTable[i]->doMove();
 }
 return(returnCode);
}
void intialize()
{
 memset(spriteTable, 0, sizeof(spriteTable));
 spriteTable[0] = new MoveableObject();
 spriteTable[1] = new UserObject();
 spriteTable[2] = new NPCObject();
 while(!exitFlag){
  eventLoop();
 }
}
こんな感じで使うとして、i==0の時はMoveableObjectクラスのdoMoveに制御がまわり、
i==1 -> UserObjectクラスのdoMove()
i==2 -> NPCObjectクラスのdoMove()に制御がまわる。
使う側はその実際のクラスがなんであれ基底クラスとして扱えば
実際の制御は派生クラスで行ってくれるという感じ。

詳しくは派生クラスとバーチャル関数辺りを調べれば出てくると思う。
216デフォルトの名無しさん:2005/07/21(木) 21:46:04
>スクリプト
BulletMLみたいにXML使ってもよかですかい?
217デフォルトの名無しさん:2005/07/21(木) 21:51:34
>>214
>これを飛ばしたがるけどねw
飛ばすもなにも、自己流で勉強した人はまず、そんなプロセス通らないだろ。

役に立つのは確かだから俺からもオススメするが。
なによりも知的好奇心が気持ちよく満たされる。
218207:2005/07/21(木) 21:54:01
>>216
「状態の設定」には良いんだけどね>XML。
処理の「流れ」をどう表現するか……。

結局、XMLに記録するものがまた「テキストスクリプト」になる気がw
219デフォルトの名無しさん:2005/07/21(木) 21:56:43
>>215
誤: static MoveableObject spriteTable[MAX_SPRITE_COUNT];
正: static MoveableObject *spriteTable[MAX_SPRITE_COUNT];
220デフォルトの名無しさん:2005/07/21(木) 22:00:52
>>217
自己流でやっていて、Cを覚えようとして、
BASICインタプリタ作った俺はなに?
221デフォルトの名無しさん:2005/07/21(木) 22:01:38
222デフォルトの名無しさん:2005/07/21(木) 22:02:29
223デフォルトの名無しさん:2005/07/21(木) 23:47:07
WideとHeightとかWi、Hei、Ceeate、Oll、Animaあたり
224(-_-;):2005/07/22(金) 05:38:41
前スレとちがって、なかなか面白くなってきたけど、今受験に専念したい自分には2ch自体が甘い誘惑。

だれか、このスレのLogを取って置いてくださいませ。
来年の4月には取りに着ますので。
よろしくお願いします。
225デフォルトの名無しさん:2005/07/22(金) 06:58:57
VC++6.0 Standerdで、Cはコンパイル出来るんですーか?
そもそも、VC++6.0 Standerdってなんですか?Yahooで調べてみたけど、いまいちよく分からん。
というより、Cで3DRPGを作れるの?聞く話によると、Javaの方がいいという。
まったく初心者の俺は、これだけで混乱してしまう。
だれか、厨房と思わずに教えてくれー!!
226デフォルトの名無しさん:2005/07/22(金) 07:10:02
>Cで3DRPGを作れるの?
>聞く話によると、Javaの方がいいという。

言語なんて飾りです
エロい人にはそれが分からんのです

・・・つまり
センスがある人ならCだろうがJavaだろうが作ってしまう
センスが無い人は、どの言語を選ぼうが作れない
ただそれだけのこと
227デフォルトの名無しさん:2005/07/22(金) 07:33:32
>>225
VC++6.0 Standerd とは マイクロソフト製のC言語、C++言語でプログラミングをする統合開発環境
Cで開発する場合、画像を表示する窓(ウィンドウ)から作らなくてはならない
Javaで開発する場合は、その窓を作らなくてもよい
3Dゲームを作る場合は、すでにあるライブラリーを使う場合が多いけどその時はCのほうがライブラリーを使いやすく、使用例が多くあります
228デフォルトの名無しさん:2005/07/22(金) 09:53:58
>>227の律儀なレスに全米が泣いた。
229デフォルトの名無しさん:2005/07/22(金) 11:02:16
>>210
あたり判定
ソースを読んでみたのだが、今プレイヤーが壁に向かっているか否かは
CPlayer::HitCheckMap()の中でcMap.GetMap()を使用して背景スプライト番号で
判定しているが、これを障害物マップに置き換えてみてはどうだろうか。
あるいは背景スプライト番号(m_pbyMap)の意味を拡張して、
障害物フラグも内包するなど、今は8ビットだがこれを16ビットにして
下8ビットをスプライト番号、上位8ビットを障害物フラグなど。
unsigned short mapItem;
mapItem = cMap.GetMap(...);
if(!(mapItem & 0xff00) && ((mapItem & 0x00ff) == 1)){
 mapItem = cMap.GetMap(進行方向);
 if((mapItem & 0xff00) || ((mapItem & 0x00ff) != 1)){
  m_byWalkFlag &= ~WALK_XXXX;
  nHit = true;
 }
}
この場合CMap::m_pbyMapの内容は村人の移動とともに書き換えることになる。
絵付きで細かく説明しないとわかりにくいかもしれないが、ご容赦。
230デフォルトの名無しさん:2005/07/22(金) 11:13:43
>>229
訂正
誤:この場合CMap::m_pbyMapの内容は村人の移動とともに書き換えることになる。
正:この場合CMap::m_pbyMapの上位8ビットは村人の移動とともに書き換えることになる。
231シープラ勉強中:2005/07/22(金) 17:56:03
>>215
なるほど。一つのインターフェイス、複数のメソッドってやつですかね。
う〜ん、でも効果的な使い方が思い浮かばないです orz
>>215のを利用すると、プレイヤーキャラと町の人をソートして、
上から順番に表示するプログラムとか、やりやすそうに
なるような気がしなくもないですけど、、うーん。
もうちょっと考えて見ます。
ども!

>>229
おー、それはいいかもです!
マップチップの種類はそんなに多くならなそうですし、
8ビットのうち、1ビットは進入可能か不可能かの判定フラグにしてもいいですね。
村人の移動で書き換えるのも良いさげ!
でもそれだと、もう一個フラグが必要になるかなあ。

マップチップデータはunsigned short型にして、上位8ビットには
なんか他のデータを入れようかと思ってました。
敵の出現情報とか(川の向こうとこっちじゃ出てくる敵の種類が違う、みたいなやつ)は、
マップチップに持たせたほうがいいんですかね?
232デフォルトの名無しさん:2005/07/22(金) 18:57:27
>マップチップデータ

構造体の配列にするといいと思う。

struct CHIP{
 int image;
 int movable;
 int enemy_type;
};

class CMap {
 CHIP *m_pbyMap;
 …
}
233207:2005/07/22(金) 19:23:37
>>231
>敵の出現情報とか(川の向こうとこっちじゃ出てくる敵の種類が違う、みたいなやつ)は、
>マップチップに持たせたほうがいいんですかね?

それは別にした方が良い(出現情報自体が、地形情報とは異質の一つの
マップになるから)のでは?

配列で持つなら

地形(表示用マップチップ)
遭遇する敵
イベント情報(イベント番号)

はそれぞれ別にする方がわかりやすいと思う。
234デフォルトの名無しさん:2005/07/22(金) 19:50:54
さて、色々といわれる速度ですが簡単な測定exeを作ってみました。
GDI+については良く分かってないもので適当ですが多分もっと早くなると思う。
DirectDrawとGDI_DDBが早いのはデバイス依存形式で
ビットマップを使っていて、かつビデオメモリにイメージがあるからです。
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0011.lzh
235デフォルトの名無しさん:2005/07/22(金) 22:58:58
>>234
GDI+はどうやっても速くならないと思う
236デフォルトの名無しさん:2005/07/22(金) 23:48:54
GDI+対応のアクセラレータが無いからGDI+は滅法おそい、って誰の話だったか
237デフォルトの名無しさん:2005/07/23(土) 00:55:37
MMOに挑戦してみてるんだが、こりゃ大変だわ・・・。
微妙にチャットできるようになったらUPします。
238デフォルトの名無しさん:2005/07/23(土) 05:19:34
>>232 >>233
どうもです。
そうか、構造体って手段がありましたね。
そのほうがわかりやすそうです。
マップエディタ作るまえに、最終的な仕様を決めとかないと
あとで大変なことになりそうですね。。
イベント情報もマップデータが持つのか。

マップチップ構造体
○絵
○敵のタイプ
○イベント情報
○なんか1ビットずつのフラグ

こんな感じになるのかなあ。
↑のやつだと、全部BYTE型ですみそうですけど、
念のためint型で宣言しといた方がいいのかなあ。
でもそれだとメモリいっぱい使いそうだし。

>>234
おつです。
やっぱ、けっこう差があるんですね。
ウチでもDirectDrawのビデオメモリverが異常に早かったようです。

>>237
うはww なんか、高レベルな感じ。
がんばってください。
239デフォルトの名無しさん:2005/07/23(土) 06:21:09
>>235
ttp://lamoo.s53.xrea.com/develop/gdiplus/gdiplus_blt.html
GDI+はここのBitmap-OFF と Bitmap-ONの状態で、
Cache-OFF Cache-ONを使えば1.5倍ぐらいになるのは目に見えてる。
内部はDIBだと思うのでその程度の速度にはなるはず。

基本的にGDI+はゲームにつかうためのものじゃ無いとは思うけど。
240デフォルトの名無しさん:2005/07/23(土) 06:37:00
>>238
仮に1チップあたり贅沢に16バイト使うとしても
たとえば50x50チップの町を表現するのに 40KBytes。
これは256色ビットマップ200x200程度の容量。ぜんぜん気にならない。

ちなみに SFC の RPGツクールでは、世界マップが 256x256 だった。
これだとちょうど 1MBytes 必要になるな…。今の PC なら気にならんだろうけど。
(それに1チップ16バイトも使わないだろう)

設計さえしっかりしてれば
メモリの節約なんて、完成の1歩手前でも十分間に合うから、
今は作りやすさを優先したほうがいいと思う。
241デフォルトの名無しさん:2005/07/23(土) 11:19:21
>設計さえしっかりしてれば
>メモリの節約なんて、完成の1歩手前でも十分間に合うから、


通常、それは設計がしっかりできていないというんだよ。
242デフォルトの名無しさん:2005/07/23(土) 11:56:53
ちゃちゃ入れるなや。勉強中なんだからどのくらいっつー感覚ないだろうしな。
それにちっと位贅沢設計でも問題ないだろ。
仮に出来上がったものが1Gbyte以上必須だとしても、それはそれで面白い。
ま、1Gは大げさだが256M位だったら問題なしだろ。
243デフォルトの名無しさん:2005/07/23(土) 13:32:20
いまどき設計でメモリのことなんかちまちま考える必要はない
それより重要なことがある

設計者として節約の感覚はあったほうがいいとは思うが、
ゲームやるPCのメモリは潤沢だろ
244デフォルトの名無しさん:2005/07/23(土) 13:45:00
大富豪プログラミング
245デフォルトの名無しさん:2005/07/23(土) 13:46:49
大貧民プログラミング
246デフォルトの名無しさん:2005/07/23(土) 14:44:08
だからまともなやつが育たない
247デフォルトの名無しさん:2005/07/23(土) 14:46:02
大富豪はな
248デフォルトの名無しさん:2005/07/23(土) 15:45:31
>>241
設計がしっかりしているとメモリの節約さえ柔軟にできないのですか?(ニヤニヤ
249デフォルトの名無しさん:2005/07/23(土) 15:51:34
日本語編だなあぁ。
設計がシッカリしているのがまるで悪いことのように思える文章だ。
250デフォルトの名無しさん:2005/07/23(土) 15:56:54
251デフォルトの名無しさん:2005/07/23(土) 16:02:26
ぐだぐだと御託を並べても始まらない。
まずは、完成させることが大事であるわけだが。
252デフォルトの名無しさん:2005/07/23(土) 20:09:17
>>251がイイ事言った。
253デフォルトの名無しさん:2005/07/23(土) 20:16:30
>>253はイイヤツ
254デフォルトの名無しさん:2005/07/23(土) 21:56:15
・・・・
255デフォルトの名無しさん:2005/07/23(土) 23:26:46
何だか、>>253で 雰囲気が一気に消沈した。

255ゲット。
256デフォルトの名無しさん:2005/07/23(土) 23:38:17
>>255=FF
257みふね:2005/07/23(土) 23:42:26
脳内メモリーは節約しておけ Noobどもが!
258デフォルトの名無しさん:2005/07/24(日) 01:59:55
口で言うより作ったプログラム(RPG)でアピールしる!
259デフォルトの名無しさん:2005/07/24(日) 12:07:47
3get
260デフォルトの名無しさん:2005/07/24(日) 12:28:14
つーかみふねさんじゃないですか!
ネトゲ進んでますか?
陰から応援してまつ。
261デフォルトの名無しさん:2005/07/24(日) 20:00:43
おこらないで ね おこらないで
好きにさせてね 大人にはわかんない
ステキ 奇跡 完璧(ハイ!
262デフォルトの名無しさん:2005/07/25(月) 19:08:57
氏牢徒に長編3DRPGは作れるのか。
263デフォルトの名無しさん:2005/07/25(月) 19:35:19
すでにできているプログラムをいじくりまわすのが一番楽しい。
それ以外は苦行です (T_T)
264デフォルトの名無しさん:2005/07/25(月) 19:49:18
一日中資料を漁り続けていると
さすがに気が滅入ってくる。(ハァ...
265デフォルトの名無しさん:2005/07/25(月) 20:19:57
ヒント:プログラマ
266デフォルトの名無しさん:2005/07/25(月) 23:55:15
>>262
悪いことは言わん
2Dの短編から作れ
267デフォルトの名無しさん:2005/07/26(火) 06:53:15
まとめサイト
http://himatanuki.hp.infoseek.co.jp/
の内容が更新されてないようだが、
いったいどうゆうマネかね。
268デフォルトの名無しさん:2005/07/26(火) 07:04:20
君の日本語は若干おかしい
269デフォルトの名無しさん:2005/07/26(火) 07:11:35
ゲームはアイテム等のデータを作るためのエディタ作りからはじめなければならない
そう思っていた時期が俺にもありました
今は反省して全てテキストファイルに手書きです
270デフォルトの名無しさん:2005/07/26(火) 07:47:35
まぁアイテムくらいならな…
271デフォルトの名無しさん:2005/07/26(火) 08:03:14
>>267程度なら諸概念をテンプレートライブラリとして構成できそう
お決まりのルーチンを一からコーディングするなんて無駄が大きすぎる
272デフォルトの名無しさん:2005/07/26(火) 11:59:45
今更だけど、出来れば、前スレのログを・・・
273デフォルトの名無しさん:2005/07/26(火) 15:13:37
>>272
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/upload.cgi
へtxt形式でうpしますた。
up0012.txtが該当ファイルです。
274デフォルトの名無しさん:2005/07/26(火) 18:45:34
>>262
>氏牢徒に長編3DRPGは作れるのか。

>>269
>ゲームはアイテム等のデータを作るためのエディタ作りからはじめなければならない

こんな考え方もありまする。

デザインの「悪い方がよい」原則 "Worse is Better"

http://chasen.org/~daiti-m/text/worse-is-better-ja.html
275デフォルトの名無しさん:2005/07/26(火) 19:07:11
じゃ〜、RPGより先にそっちのソフトを作れということ?
276デフォルトの名無しさん:2005/07/26(火) 20:55:42
ぶっちゃけ、RPG を含めてゲーム作りにセオリーなんて無い。
「こうしなければいけない」とか「こうするのがベスト」なんて一概には言えない。
10人いれば10通りの作り方があるのがゲーム作りであり RPG 作りだ。
耳学問をいくら積み重ねても絶対に作れるようにはならない。
唯一確かなのは他人のソースコードを参考にして自ら作ってみることだ。
それ以外に道は無い。
277デフォルトの名無しさん:2005/07/26(火) 21:01:51
RPGなんてこの世に産まれてからたかだか20年
数学なんて7000年以上前と言われてるんだから
278デフォルトの名無しさん:2005/07/26(火) 21:43:56
うう、ただただ時間が無い (ノω`)・゚・。。
279デフォルトの名無しさん:2005/07/27(水) 00:37:41
フレームワーク
280デフォルトの名無しさん:2005/07/27(水) 01:20:36
>279
それがどうした?
281デフォルトの名無しさん:2005/07/27(水) 11:47:50
.net Framework
282デフォルトの名無しさん:2005/07/27(水) 13:23:50
それがどうした
283デフォルトの名無しさん:2005/07/27(水) 13:26:14
人大杉なのか。
284デフォルトの名無しさん:2005/07/27(水) 14:53:31
ヽ(`Д´)ノ
285デフォルトの名無しさん:2005/07/27(水) 20:16:12
 ̄/ ̄ジー
286デフォルトの名無しさん:2005/07/27(水) 20:36:37
(・∀・)v
287シープラ勉強中 ◆ryjMYLsfPA :2005/07/27(水) 20:50:08
http://49uper.com:8080/html/img-s/68300.zip

定期です。とにかく村人出してみました。
週に二回のペースで上げようと思ってたんですが、
無理っぽいです ノω`)・゚・。。
着手してそろそろ一ヶ月がたつというのに、終わりが見えない。。
8月中に完成させたいと思ってたのですが、絶望的な感じです。

次はなにをやるべきですかね?

音か・・描画か・・はたまた戦闘とか。。
マップエディタも作らなきゃだし、そえばメニューもまだ無いし、
村人はセリフをしゃべれないし。

てゆか、そもそも本来の目的である、クラスの使い方はこれでいいのか、
メモリリークは本当にしてないのか。

orz...
288デフォルトの名無しさん:2005/07/28(木) 00:29:58
乙。形になってきてるね。

残念ながらオブジェクト指向の持ち味はあんまり生かされてないぜ…
完成させるほうが大事だと思うのであんまり突っ込まないけど。

>音か・・描画か・・はたまた戦闘とか。。
>マップエディタも作らなきゃだし、そえばメニューもまだ無いし、
>村人はセリフをしゃべれないし。

絵をゴージャスにするとやる気が出る。これオススメ。
セリフ機能を入れるだけでプチ物語が作れる。これもやる気出る。
マップエディタを作ると疲れてやる気が消耗する。初めはテキストファイル手書きがオススメ。
289デフォルトの名無しさん:2005/07/28(木) 17:22:50
マップエディタってフリーのPlatinumとかで良いと思うんだけど。
290デフォルトの名無しさん:2005/07/28(木) 18:44:18
> 絵をゴージャスにするとやる気が出る。これオススメ。
> セリフ機能を入れるだけでプチ物語が作れる。これもやる気出る。
> マップエディタを作ると疲れてやる気が消耗する。初めはテキストファイル手書きがオススメ。
>>288の要望だなw
291シープラ勉強中:2005/07/28(木) 20:16:53
>>>288

オブジェクト指向・・。
今はカプセル化とか全然考えてなかったり ^^
最終的にはインターフェースっぽいの以外は隠蔽しちゃうのが
理想的だと思うのですが、私が雑魚なためにどれがインターフェースに当たるのかが
作った段階でイマイチ判断できないので、結果的に全部publicに置くことに・・

あと、オブジェクト間のメッセージのやりとりってのが全然わからないです orz
今は、たとえばマップ動かしたときPlayerの座標を修正する場合、
マップクラスのメンバ関数にPlayreをドーンと参照渡しして、
その中でPlayerの座標をバンバン変えちゃってるんですが、
これはオブジェクト指向的には大丈夫なんでしょうか?
うーん、よくわからず・・

提案してくれた「絵をゴージャス」にってのは私の画力では
不可能なのであきらめるとして、次はセリフに挑戦してみまっす!
とりあえず、

msg1:ここはアリアハンの城下町です。
msg2:北には洞窟があるらしいですよ。
msg3:スライムは弱いけど、おおアリ食いには注意してください。

みたいなテキストファイルを用意しといて、
村人にしゃべりかけたときメッセージの番号で判断して
しゃべらせばいいんでしょうか?
ファイル操作とかほとんどやったことがないので、メチャてこずりそう。
292シープラ勉強中:2005/07/28(木) 20:18:17

>>289
マップエディタはとにかく自分で挑戦してみて、ダメっぽかったら
それ使ってみます。ども。

子ウィンドウとか、どうやって出すんだろ。
あー、課題がいっぱいだわ。
293デフォルトの名無しさん:2005/07/28(木) 20:47:17
>>1さん、クラスって今いくつあるの?
294シープラ勉強中:2005/07/28(木) 21:11:44
>>293
誤爆?私のことなら、今10個ぐらいですけど。
295デフォルトの名無しさん:2005/07/28(木) 22:10:39
>>291
>オブジェクト指向
>オブジェクト間のメッセージのやりとり

例えとしては、
class Player{             //プレイヤークラス
    Position m_charaPosition; //メンバ変数 キャラクタの座標)
public:
    Position getPosition(){return m_charaPosition}; //キャラクタの座標を返す
    void setPosition(Position position){m_charaPosition = position;};//メンバ変数にキャラクタの座標をセットする
}
こんな感じ
Positionはユーザー定義の座標クラス(か構造体)
set〜で外から受けて、get〜で外へ渡す
メンバ変数を直接扱うと、間違った使い方をされてもエラーを返せないから
メンバ関数にしてエラーが出にくいようにしてやろうって事
本当はちょっと違うんだけどね
296デフォルトの名無しさん:2005/07/28(木) 23:02:39 BE:5425128-
オブジェクト指向っていうのは、データと、それに関する操作を
クラスにまとめましょうっていうことですよ。
例えば、NPCなら現在の座標、どっちを向いているか、
グラフィック、会話データなんかをまとめるわけですよ。

オブジェクト間のメッセージというのは、
例えばNPCが移動したいとするわけですよ。
そうしたときに、マップオブジェクトに問い合わせるわけですよ。
「(x,y)に行ってももいいですか?」
「はい。いいですよ。」
とか。そんな感じですよ。
297デフォルトの名無しさん:2005/07/28(木) 23:13:49
オブジェクト指向はその人間の世界観や哲学による。
>>291が世界は神がチェスのごとく物体を動かすことで構成していると思うならその手法が最も自然である。
しかし物体が意思を持って自分の判断で歩いていると思うなら>>296のようにするのがいい。
298シープラ勉強中:2005/07/29(金) 19:38:53
>>295
ご丁寧にありがとうございます。
参考にしまっす!

>>296 >>297
うーん、メッセージのやりとりはそんなに限定的にやらなくても良さげですね。

座標を変えたい場合は必要なデータだけconstで渡して、
結果を戻り値でPOINT構造体あたりに受け取ったほうが
いいのかとか思ってたんですが、そうすると無駄にプログラムが長くなるし、
どうしようかと考えてました。

とりあえず今まで通り、オブジェクト全体を参照渡しする方法で行ってみます。
毎度毎度、どうもありがとうございます m(__)m
299デフォルトの名無しさん:2005/08/01(月) 04:39:47
( ゚Д゚)y─┛~~ どうよ?
300デフォルトの名無しさん:2005/08/01(月) 12:53:48
300ゲト
301デフォルトの名無しさん:2005/08/02(火) 09:07:40
とっとと夏休み中に仕上げやがれ!
302シープラ勉強中 ◆ryjMYLsfPA :2005/08/02(火) 14:58:42
windows再インストールしたら、なぜかメモリが壊れた orz

http://49uper.com:8080/html/img-s/69247.zip
テキストファイルから、任意の文字列を読み込むプログラムを作ってみました。

msg:00000>0です!
msg:00001>aaa
msg:00002>(*^ー゚)b

てな感じのテキストファイルを用意して、

まずテキストファイル全体をメモリ上に読み込む →
メモリ上で「:」を探す → 「:」から「>」の間の数字を読み込む →
数字が指定された数字といっしょなら「>」の後ろの文字列を表示 →
「\n」まで表示されたら関数終了

という流れになってると思うんですが、
文字を出すだけならこれでいいでしょうか?
なんか無駄にプログラムが複雑になってるような気がするのですが・・。
303デフォルトの名無しさん:2005/08/02(火) 15:02:52
おいおい、そのテキストファイルを手打ちすること考えたか?
専用ツールを作るまではエディタで手打ちすることになるわけだが、
そんなフォーマットじゃ毎回毎回面倒だと思うぞ。
ついでに言えば、csvかtsvにしておくとExcelで一覧できるし何かと便利だぞ。
#と言うわけで、仕様にダメだししたのでソースは見ないw
304デフォルトの名無しさん:2005/08/02(火) 15:59:47
>>302
Cのソースからテキストデータだけを分離するのが目的なら
それでも構わんが…全くスマートでは無いw
まぁ、イベントをハードコーディングする方向でいってみるのも
勉強になるだろw
305シープラ勉強中:2005/08/02(火) 17:35:04
>>303 >>304
ひえー、なんか、めちゃめちゃアフォプログラムって言われてる気がww

>>201みたいなのは私には無理っぽいので、
仕様が決まるまでとりあえずテキストの書式は保留ということで ^^
てゆか、永久に保留しときたい・・

エクセルは触ったことないので、使わない方向で。
どもです m(__)m
306C++初心者:2005/08/02(火) 17:37:50
class CText{
 std::vector<std::string*> messages;
 bool LoadFile(char* fname){
  std::ifstream ifs(fname);
  char line[512], buf[512];
  int idx;
  if(ifs == false)
   return false;
  while(ifs.getline(line, sizeof(line))){
   if(strstr(line, "msg:") != NULL){
    sscanf(line, "msg:%d>%s", &idx, buf);
    messages.push_back(new std::string(buf));
   }
  };
  return true;
 }
public:
 CText(char* fname){
  if(LoadFile(fname) == false){
   std::cout << "失敗" << std::endl;
   exit(1);
  }
 }
 ~CText(){
  std::vector<std::string*>::iterator it;
  for(it = messages.begin(); it != messages.end(); it++){
   delete (*it);
  }
 }
 void Draw(int idx){std::cout << messages[idx]->c_str() << std::endl;}
};
暇なんでちょっと書き換えてみたお、どうなんだろ。
307デフォルトの名無しさん:2005/08/02(火) 18:57:51
>>305
こんな感じのをお勧めする。間の改行数自由で。そんな難しくはない。

:msg0
0です!

:msg1
aaa

:msg2
(*^ー゚)b
308デフォルトの名無しさん:2005/08/02(火) 19:05:26
だからぁ、フォーマットがダメなんだからコード以前だってば。
例えば、
msg.....1.......aaa
msg.....2.......(*^ー゚)b


みたいなんでいいじゃん。
#ドットのところはタブね。
それなら、1行分の解析もsscanf(line, "%s%d%[^\n]", ...)でいいし。
>306
文字列を%sにしちゃうと空白入れられないぞ。
そもそもmsgも固定でいいなら、
3.......orz
で充分だしね。
309デフォルトの名無しさん:2005/08/02(火) 19:09:18
あーそうか、RPGなら>307も自由度高くていいね。
私は文字列中に\nがあったら改行するなんて仕様をよく作るけど。
310307:2005/08/02(火) 19:18:32
暇な俺が>>307のサンプル作りましたよ。鵜呑みにはするなよ。
こういうの初めてな人には数字読取のところで「??」ってなるかもしれんが、たぶん定石なので覚えるべし。

bool get_message(const char* in,int id,char* out)
{
 const char* p=in;
 char* q=out;
 int c,n;
 //
 while(p=strstr(p,":msg")){
  //数字までシーク
  p+=4;
  //数字読取
  n=0;
  while(*p>='0' && *p<='9'){ n*=10; n+=*p-'0'; p++; }
  //メッセージ
  if(n==id){
   //メッセージ先頭までシーク
   while(*p=='\n')p++;
   //メッセージ読取
   while(*p!='\n'){
    *q++=*p++;
   }
   *q++='\0';
   //成功
   return true;
  }
 }
 //失敗
 return false;
}
311307:2005/08/02(火) 19:23:14
うはwww読みにくスwwww固定幅フォントにすればまともに読めるwwwのかwうぇww

使用例

int main()
{
 char in[]=
  ":msg0\n"
  "0です!\n"
  "\n"
  ":msg01\n"
  "aaa\n"
  "\n"
  ":msg23\n"
  "(*^ー゚)b\n"
  "\n";
 int id=23;

 puts(in);
 printf("--↑抽出(ID=%d)↓--\n",id);
 char ret[256];
 if(get_message(in,id,ret)){
  puts(ret);
 }else{
  puts("Error");
 }
}
312デフォルトの名無しさん:2005/08/02(火) 19:43:14
>>310
うはwwスゴイwww
なんかいろんな技がいっぱいつまってるww
めちゃめちゃ鵜呑みにしちゃいます!
313デフォルトの名無しさん:2005/08/03(水) 02:26:54
アナクロ……

こんな小手先の技術を覚えるよりも、スタンダードな文字列操作を覚えた方がましだ罠。
314デフォルトの名無しさん:2005/08/03(水) 02:47:44
>>313にとってのスタンダードってなんだ?
315デフォルトの名無しさん:2005/08/03(水) 02:51:04
そりゃぁあんた、std::string以外に何があると?
#>313がそう想定したかはしらんが。
316デフォルトの名無しさん:2005/08/03(水) 03:03:33
正規表現だとか構文解析を想像したんだけどstd::stringってなんだよw
317デフォルトの名無しさん:2005/08/03(水) 03:09:56
だから、スタンダードなストリングだろ?
だれも構文解析なんて話はしてないと思うのだが。
318デフォルトの名無しさん:2005/08/03(水) 03:28:25
>>313
std::stringべったりな厨は使い物にならん
基本的な文字列操作のアルゴリズムは覚えておくべき
319デフォルトの名無しさん:2005/08/03(水) 06:34:59
>>318
まぁC/C++を使うなら、Cの文字列操作も覚えておくべきではあるな。
しかし、メモリ使用量や実行速度に余裕があれば std::string をおとなしく選択するべき。
std::string を必要以上に毛嫌いするような態度は無用。
320デフォルトの名無しさん:2005/08/03(水) 07:21:55
構文解析においては生の文字列のほうがずっとスマートに書けると思う。
ここで std:string を使う利点はほとんど無い気がする。std::istream ならともかく。
321デフォルトの名無しさん:2005/08/03(水) 07:29:41
>>320
> 構文解析においては生の文字列のほうがずっとスマートに書けると思う。

なんで?
322デフォルトの名無しさん:2005/08/03(水) 08:27:52
少なくとも俺は std:string では
>>310と同じ機能のものを>>310以上にスマートに書くことができない。
323デフォルトの名無しさん:2005/08/03(水) 08:34:01
少なくとも仕事なら>310は不採用だが菜。
324デフォルトの名無しさん:2005/08/03(水) 08:36:54
その理由は?(\0をチェックしてないとかは無しで。サンプルなんだから)
325デフォルトの名無しさん:2005/08/03(水) 08:58:53
サンプルだからなんて言い訳は仕事じゃできないのだが……
サンプルとしてならどうでもいいよ。
326デフォルトの名無しさん:2005/08/03(水) 09:08:57
そもそもなんで仕事が出てくるんだよ…
327デフォルトの名無しさん:2005/08/03(水) 09:16:00
>310がスマートって言うのもあれだが、
仕事で使えないとか言うのもあれだな。
ここは一つ、>323(=>325か?)が仕事で使えるコードを出してくれるってことで。
328310:2005/08/03(水) 09:24:46
>>323(=325?)
>>305が混乱しちゃあかんから極力単純に組んだわけだが。「鵜呑みにするな」と書いただろ?
目的を見失う奴のほうが仕事に使えない。
(初心者向けのscanfのサンプルに厳密なチェックを入れて読者を混乱させる奴は無能だ)
329デフォルトの名無しさん:2005/08/03(水) 10:09:45
メッセージを1つのファイル(テキストファイル内の1箇所)にまとめて置いておいて、それぞれにID割り振り、使うときにIDからメッセージ抽出して何かいいことありますか?
同じメッセージを何回も使いたいときは容量削減にはなるでしょうけど、非常に特殊な場合でしか使わないとおもうんですよ。。
ここはですね、単純に、msgという命令のあとにただ文章が続くと思ったほうがよいのではないかと、ぼくはおもうんですね。
ID方式にすると、開発者がイベントを編集してメッセージを発言させる命令を記述するときにIDとメッセージとの対応を把握しないといけなくなりますから。。。
しかしながら、>>302がどういうつもりで使用するのか知らないので、何か有効な使い道があれば教えてくださいな。
330デフォルトの名無しさん:2005/08/03(水) 10:18:19
キャラ0に話し掛けるとメッセージ0が表示される、みたいな。

それにしても君の日本語はなんだか読みにくいな。
331デフォルトの名無しさん:2005/08/03(水) 10:19:59
>>330
すみません。。MSDNを読んでるうちにこうなりました。。
332デフォルトの名無しさん:2005/08/03(水) 11:19:56
>>328
単純に組むのにキャラを一文字ずつ加工するのってどうなのよ。
sscanf()使ったほうがよっぽど単純だと思うけどねぇ。
>313の言うアナクロってのはそういうことでしょ。
#そりゃぁ、昔はライブラリに頼るより自分で書いたもんだが今時、ねぇ……
333デフォルトの名無しさん:2005/08/03(水) 11:45:38
今時はsscanfを使うのが流行りなのか。なんか嫌だな
334デフォルトの名無しさん:2005/08/03(水) 11:49:40
可読性の低いコードをちまちま書くよりはましだね。
335デフォルトの名無しさん:2005/08/03(水) 12:15:26
プレイヤーのクラス名は何がいいでしょうか?
336デフォルトの名無しさん:2005/08/03(水) 12:40:33
Ossan
337デフォルトの名無しさん:2005/08/03(水) 12:42:13
>>334
可読性の高いコードきぼんぬ
338デフォルトの名無しさん:2005/08/03(水) 12:55:59
scanfなんてデータファイル書き間違えただけで止まるじゃん
339デフォルトの名無しさん:2005/08/03(水) 12:56:57
それが最近の流行りらしい
340シープラ勉強中 ◆ryjMYLsfPA :2005/08/03(水) 15:08:21
可読性低すぎるソースなので上げにくい・・
http://49uper.com:8080/html/img-s/69433.zip

>>310さんのを入れてみました。
どうも「\n」の改行コードをフラグにしようとすると、うまくいきませんでした。
もしかしてこれがバイナリモードとテキストモードの違いってやつでしょうか。
もうちょっと研究が必要なようです。
いずれは条件分岐とか入れられるようになるんだろうか・・。

>>319
std::string使ったことない orz
やらなきゃとは思ってるんですけどねぇ。

>>329
今はただキャラクタにセリフしゃべらせたくて、コードに直書きするのもアレなので
無理にファイルから読み込んでるだけですので、あんま気にしないでー。

>>328
マジ勉強になりました。ホント感謝です m(__)m
341デフォルトの名無しさん:2005/08/03(水) 15:11:23
>>340
メモ帳で保存したファイルの改行は \r\n 。
これをテキストとしてオープンすると 「\r\n」→「\n」の変換が自動で行われるので \r を気にしなくてもいい。
バイナリとしてオープンすると \r が残るので解析がちょっとめんどくさくなる。
342シープラ勉強中:2005/08/03(水) 15:51:00
>>341
// 指定された文字がファイル中にいくつあるか数えて返す
int FileSearch (char _str) {
 int _num = 0;
 for (int i = 0; i < m_dwFileSize; i++)
  if (m_pchBuffer[i] == _str)
   _num++;
 return _num;
}

↑の関数をメンバに入れて、数を数えてみました

cout << cText.FileSearch('a') << endl;
cout << cText.FileSearch('m') << endl;
cout << cText.FileSearch('\n') << endl;
cout << cText.FileSearch('\r') << endl;

--結果--
3
12
63
63

どうも、\nと\rは同じ数だけあるようです。
うわさによると「\r\n」は二バイトらしいので、
解析もややこしそうですね。。
あれ?でも私のプログラムは改行一個飛ばすときは
一回しかインクリメントしてませんけど飛ばせたような・・。
あー、よくわからず。
343シープラ勉強中:2005/08/03(水) 17:42:16
http://49uper.com:8080/html/img-s/69487.zip

\rが入ってたら後で面倒なことになりそうなので、
\rはGetしないことにしました。
実行結果の「r=」ってのは\rの数で、
「n=」ってのが\nの数です。

こういうのって、普通はどう処理するんでしょうか?

1:最初から\rが入らない書式で保存しとく
2:\rが入らない形でファイルオープン
3:\rが入ってても、大丈夫なプログラムを組む
4:\rが入ってたら抜く

私はとりあえず4の手段を使ったのですが・・ (´・ω・`)
>>341さんの言ってるのは2ですかね。
どうやら::CreateFile()ではできないようです。。

ttp://bbs.wince.ne.jp/ch1/mqbbs.cgi?&FILE=bbs.log.29&MODE=MSG&NUM=2837
Q
>一つ気になったんですが、open()関数では、開き方にバイナリやテキストの指定が
>できますが、CreateFile()では、そういう指定はできないのでしょうか。

A
>無いです。
>常にバイナリモードでオープンされると考えてください。
344デフォルトの名無しさん:2005/08/03(水) 17:58:13
っていうかなんで CreateFile なんだ?
fopen や ifstream は使ったことないん?
345デフォルトの名無しさん:2005/08/03(水) 18:03:02
>>343
素直にifstreamかfopenを使って置け。
それらを使えば、改行コードは'\n'とだけ意識していれば事が足りる。
346デフォルトの名無しさん:2005/08/03(水) 18:14:34
>>344 >>345
うはwwそっちですかww
::CreateFile()は前にちょっと触ったことあったのと、
>>175さんが使ってたので、これでいいのかなとww
全然迷いもなく使ってました。


::fopen()を使ったほうがいいみたいですね ^^
ifstreamは知らないので、::fopen()の方を研究してみます。

てゆか、今日今まで凄い無駄なことしてたっぽい orz
347デフォルトの名無しさん:2005/08/03(水) 18:31:47
バッファは(ファイルサイズ+1)確保して、最後に\0を入れるべし…。

背中がかゆい…
348デフォルトの名無しさん:2005/08/03(水) 20:54:18
 FILE *pFile;
 pFile = ::fopen("msg003.txt", "r");

// ファイルのサイズ計る
 int n = 0;
 while (::fgetc(pFile) > 0)
  n++;

// ファイルポインタを先頭に戻す
 fseek(pFile, 0, SEEK_SET);

 char *pchBuffer;
 pchBuffer = new char[n + 1];
 ::fread(pchBuffer, sizeof(char), n, pFile);
 pchBuffer[n] = '\0';
 ::fclose(pFile);

 cout << "size = " << n << endl;
 cout << pchBuffer;

 delete [] pchBuffer;


いちおーできたんですが、
このファイルのサイズの計り方はアリなんでしょうか?
例文が一個も見つからなかったから、手探りでした (ノω`)・゚・。。
349シープラ勉強中:2005/08/03(水) 20:59:56
できたってのは読み込みだけです。
MSDNとのにらめっこはキツかった (T_T)
350デフォルトの名無しさん:2005/08/03(水) 21:11:42
SEEK_ENDは何のためにあるんだ……
と思ったが、テキストモードではftellを信用できないことに
気づいた。
351デフォルトの名無しさん:2005/08/03(水) 23:50:52
>343
>\rが入ってたら(中略)こういうのって、普通はどう処理するんでしょうか?
5:バイナリモードで開き、\rと\nを双方とも改行コードとして扱う(自前で処理)。\r\nと連続している場合はまとめて改行1つ分として扱う。
3の具体例の一つだが、これならSEEK_END→ftellでも問題ないし、直接fseekでも、
バッファに読む→直接インデックス作成→インデックスからポインタ指定で読み出しでもOK
作業してるソフトが違っても改行コードの違いはここで吸収できる。

もっとも、自分だったら簡易スクリプトコンパイラを作ってインデックス付きのバイナリ(ある意味で中間言語形式)にしてると思う。

(MinGWで出たerror/warning)
65行目と168行目 符号付数値と符号無し変数の比較で警告
352デフォルトの名無しさん:2005/08/04(木) 05:18:49
>>348
悪くはない。getcしまくるのはアレなんでfseekしましょう。

> int n = 0;
> while (::fgetc(pFile) > 0)
>  n++;
fseek(pFile,0,SEEK_END);
int n=ftell(pFile);

> ::fread(pchBuffer, sizeof(char), n, pFile);
> pchBuffer[n] = '\0';
n=fread(pchBuffer, sizeof(char), n, pFile);
pchBuffer[n] = '\0';
353デフォルトの名無しさん:2005/08/04(木) 05:22:20
それと…これ↓はよくないぞ…

while (::fgetc(pFile) > 0)



while(fgetc(pFile)!=EOF)
354デフォルトの名無しさん:2005/08/04(木) 11:21:13
sizeof(char)は常に1だから、
fread(pchBuffer, 1, n, pFile);
でいい。
355デフォルトの名無しさん:2005/08/04(木) 12:38:07
( ゚д゚)ポカーン
356デフォルトの名無しさん:2005/08/04(木) 12:43:08
win32はろくに知らんのだが、unixでいうところの stat() 関数はないの?
ファイルを開いて読んだりシークしたりしなくてもファイルサイズや属性を
得ることができそうなものだが。
357デフォルトの名無しさん:2005/08/04(木) 14:19:28
>>356
unix はろくに知らんが、win32 でも sys/stat.h の _stat ってのが使える。
俺はシークを好んで使うが。
358デフォルトの名無しさん:2005/08/04(木) 14:20:37
// >>307は仕様に反して一行メッセージしか扱えないのと毎回解析するのが無駄なので
// C++らしくstd::mapで作ってみた。
#include <string>
#include <map>
#include <iostream>

int main()
{
char in[]= (
":msg0\n"
"0です!\n"// 1行のみなら空行をあけない
":msg01\n"
"aaa\n"
"\n"
"\n"// 必要ならいくらでも改行を
":msg3\n"
"\n"// この場合はメッセージは空
":msg23\n"
"(*^ー゚)b\n"
"\n"
);

std::map<int, std::string> msgs = parseMessages(in);
std::cout << "msg" << 23 << '[' << msgs[23] << ']' << std::endl;
return 0;
}
// ':'の場所は(先頭の場合を除いて)行頭に限定→メッセージ中にも':'を使える
// 次のタグまでをメッセージとする→複数行のメッセージも扱える
// ":msg"以外のタグが追加される可能性を考慮
// ファイル末尾も適当に何とかする
// 関数本体は次に
359358 ジャスト32行かよw:2005/08/04(木) 14:22:03
std::map<int, std::string> parseMessages(const char * inputBuffer)
{
std::map<int, std::string> rtn;
std::string buf(inputBuffer);
unsigned pos = 0;
while ((pos = buf.find(':', pos)) != std::string::npos) {
++pos;// ':'の次をポイント
if (buf.compare(pos, 3, "msg") == 0) {// メッセージタグ
int id = atoi(buf.c_str() + pos + 3);// 必要ならstrtol()やsscanf()も
unsigned nextPos;
unsigned bodyPos = buf.find('\n', pos + 3);
if (bodyPos != std::string::npos) {
++bodyPos;
nextPos = buf.find("\n:", bodyPos);
if (nextPos == std::string::npos) {
// 次のタグがない場合は最終行まで(末尾の改行は除く)
nextPos = buf.size() - 1;
}
rtn[id] = buf.substr(bodyPos, nextPos - bodyPos);
std::cout << '[' << rtn[id] << "]\n";
}
pos = nextPos;
} else {// その他のタグでは改行を見つけておく
pos = buf.find('\n', pos);
if (pos == std::string::npos) {// 改行が見つからないなら最後をポイント
pos = buf.size();
}
}
}
return rtn;
}
360デフォルトの名無しさん:2005/08/04(木) 14:28:18
C版が欲しかったらfind()→strchr() or strstr()、compare()→strcmp()、size()→strlen() or strchr()、substr()→sprintf()でできるね。
361358:2005/08/04(木) 14:42:36
あー、ミスリーディングだ。>307は複数行メッセージじゃなくて、
隙間の空行が任意ってだけか。
つーことで、「仕様に反して」は割愛。

うーん、マジックナンバーの3が気になるなぁ……
#ちゃんと"msg"から長さを得るべきだね。
362デフォルトの名無しさん:2005/08/05(金) 07:57:21
CPUとM/Bをアプグレードしたよ。
でもあまり変ってないような。
363デフォルトの名無しさん:2005/08/05(金) 18:41:10

 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |  もっと濃い構文解析器きぼん!!!   |
 |_______________|
         ∧∧ ||
         ( ゚д゚)||
         / づΦ
364デフォルトの名無しさん:2005/08/05(金) 18:44:34
365デフォルトの名無しさん:2005/08/05(金) 19:44:32
ちぇっ
366デフォルトの名無しさん:2005/08/05(金) 19:50:13
perlじゃむりですかそうですか
367シープラ勉強中:2005/08/05(金) 23:18:13
やっぱこのスレは親切な人多いわー! ・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)

>>351
なるほど。プログラムでなんとかするってことですか。
今はバイナリモードで開く意義がわからないのでテキストモードを使いますが、
バイナリモードを使う必要がでてきたら、その方法を試してみます。ども。
簡易すくりぷとこんぱいら??

>>352
>>350さんも言ってましたが、どうもテキストモードで開いてもftell()は
改行コードを"\r\n"で計算するようです(私の環境だけ?)
ちょっとためしてみましたが、fread()の戻り値より、ftell()の戻り値の方が
"\r"分だけ多く返ってきました。
バイナリモードで開く場合は、その方法を使ってみまっす。ども。

>>353
MSDN調べてて、なんかやたら-1を見ると思ったら、EOFは-1なんですね ^^
知りませんでした。

>>359
STLカコイイ・・
私もいつかそんなプログラムを組んでみたいです。
368デフォルトの名無しさん:2005/08/05(金) 23:33:40
>>367

・ファイルサイズ
今回ファイルサイズが欲しい理由は、単純にバッファを用意するためなんだから
ftell()で行数分多く返ってきてもそのまま使えば医院で内科医?
>352のようにfread()の戻り値でナルキャラ書き込めば無問題。

・STL(つーか、map)
>358に書いたように、msgs[23]と書けてしまう単純さに注目。
セットする方も、固定値ならばmsgs[2] = "Whee!";で済んでしまう。
つまりこれらはいつか到達する目標ではなく、初心者こそ使うべき道具だと思うぞ。
369シープラ勉強中 ◆ryjMYLsfPA :2005/08/06(土) 05:46:57
とりあえず、今までのコンソールプログラムのまとめ。
やっつけで一文字ずつ表示するやつを作ってみました。
http://49uper.com:8080/html/img-s/69951.zip

ファイル関係はわからないことも多いのですが、次に進みたいと思います。

>>368
>ftell()で行数分多く返ってきてもそのまま使えば医院で内科医?

医院で内科医てww
fgetc()を何回も回すよりは、そっちのほうが良さげですね。スマートだし。
MSDNには

ftell 関数が返す値は、テキスト モードで開いたストリームに対しては、物理バイト オフセットを表さない場合があります。これは、テキスト モードでは CR-LF (キャリッジ リターンとライン フィード) シーケンスをライン フィード (LF) に変換するからです。

って書いてあったんですが、これは「"\r"も数える」って意味なんですかね?
「キャリッジ リターン」と「ライン フィード」はググってみたら、
どっちも改行に関係あるようですが。。

STLにはなんとなく苦手意識がww
まだ一個もやってません orz
「msgs[23]と書けてしまう単純さ」って素晴らしいです。
どうもありがとうございます m(__)m
370デフォルトの名無しさん:2005/08/06(土) 09:20:14
さらにググってみたところ、
CR = キャリッジリターン = '\r'
LF = ラインフィード = '\n'
CR-LF = "\r\n"
ということが判明。

で、上の文は、テキストモードで開かれてるファイルは
CR-LF が LF に変換されてるって書いてあるようですね。
でも、わざわざ「場合があります」って書かれてるってことは、
結果は環境によって異なるってことかなぁ。
371デフォルトの名無しさん:2005/08/06(土) 16:26:42
>>370
実装及び実行時依存なんだと思う。
例えば先頭からバイナリ読み込みの典型であるfread()やテキスト読み込みの典型であるfgets()、
1バイト読み込みであるfgetc()で読み進んだ場合のftell()は変換後の(先頭からの)オフセットを返すが、
読み込みを全く伴わない終端からのfseek(SEEK_END)の後のftell()では変換前のオフセットを返すとか。

しかし、面倒だからCrLfの解説しないで様子見てたんだけど、辿り着ける人はちゃんと解説に辿り着けるんだねぇ。
ちょっと>370に感心した。
372デフォルトの名無しさん:2005/08/06(土) 16:34:58
ネタで言ってるんだよな?おまえら
373デフォルトの名無しさん:2005/08/06(土) 17:31:43
クラスのこと考えるのが一番辛いです・・
作り間違ったら、後々大幅修正しなきゃいけないし。


>>371
うはー、複雑。
ちゃんと両方のモードに対応した関数を作っといてほすぃ。。

一段落したら std::ifstream をがんばってやってみようかなぁ。
どうやらバイナリかテキストを選択できるみたいですし。
読み込んだサイズを計る関数ぐらいありますよね。

>>372
めちゃめちゃ大まじめですけど o(T_T)o
374デフォルトの名無しさん:2005/08/06(土) 17:32:44
fopen でもバイナリ、テキスト選択できる
375デフォルトの名無しさん:2005/08/06(土) 23:30:47
ひどい低レベルなRPG作成スレになってきてるな。
376デフォルトの名無しさん:2005/08/07(日) 00:13:07
低水準と言いたまえ
377デフォルトの名無しさん:2005/08/07(日) 05:45:39
システムコールは流石に使わないよな
低水準であっても
378デフォルトの名無しさん:2005/08/07(日) 20:04:27
>ひどい低レベルなRPG作成スレ
最初から最後までレベルが高いなんて有り得ないと思われ。

それは仕方がないから傍観汁。
出来たとこまで投下…
http://gamdev.org/up/img/3008.zip

イベントスクリプトにXMLを使ってみますた

ゲームの形になるのは、まだまだ先だなぁ(;´Д`)
380デフォルトの名無しさん:2005/08/08(月) 00:25:42
一気にレベル上がったww
ワロス
381デフォルトの名無しさん:2005/08/08(月) 06:41:18
素人がハードコーディングするより
枯れたライブラリのほうがウマイよな。

というわけで関連ライブラリスレ。
http://pc8.2ch.net/test/read.cgi/gamedev/1008220559/l50

イケてるライブラリ見つけたら紹介よろしくきぼんぬ >ALL
382デフォルトの名無しさん:2005/08/09(火) 00:05:28
素朴な質問:C言語だけでRPGってできますか?
383デフォルトの名無しさん:2005/08/09(火) 00:13:38
できんじゃないの?
ってかできない理由がわからない
384デフォルトの名無しさん:2005/08/09(火) 00:58:30
たぶんあれだな。
C++にはRPGを作るためのいろんな機能が備わってると勘違いしてるな。
385デフォルトの名無しさん:2005/08/09(火) 01:06:28
RPG言語なるものがあると知って歓喜したあの頃
386デフォルトの名無しさん:2005/08/09(火) 02:32:54
>>385
業務でRPGにまわされたときにゲーム製作?と思って歓喜

業務についたあと、自殺を何度も考える
387デフォルトの名無しさん:2005/08/09(火) 02:54:53
>>385
おお!同志よ!
そして実態を知ったときのあの落胆。。。
388382:2005/08/09(火) 18:45:55
//いや、そう言うことを聞きたかったんじゃなくて…
//C言語だと絵の表示や文字色の変更さえもできないから、
//それだけで作ったRPGってどんなふうなのかなと。
//C言語だけでもこれだけできるんだぞ、みたいな、
//参考になるゲームがあったら教えて欲しいかなとか思ったりしたんだけど
389382:2005/08/09(火) 18:47:25
思い切りageてしまった。ゴメン orz
390デフォルトの名無しさん:2005/08/09(火) 18:47:26
>C言語だと絵の表示や文字色の変更さえもできないから
できるから上のようなレスが付くわけで
391382:2005/08/09(火) 18:48:10
>>390 っえ?そうなの? マジに知らなかった… お馬鹿でゴメン!
392デフォルトの名無しさん:2005/08/09(火) 19:06:46
なんだ、やっぱり>>384じゃん。
393382:2005/08/09(火) 19:25:00
ゴメンナサイゴメンナサイゴメンナサイ orz

っで。恥かきついでに教えて君させてください。
C言語だけで作った手本になるようなゲームってありますか?
できればソースも見られるようなのだと助かるんですけど?
394デフォルトの名無しさん:2005/08/09(火) 19:51:02
しゃあないDOSで作れ
395デフォルトの名無しさん:2005/08/09(火) 20:07:46
>>393
質問がちょっと的外れな気がするなあ。
君は今どの程度Cを使えるんだい?
396382:2005/08/09(火) 22:16:16
どの程度と聞かれても「全く使えない」としか言えないぐらいです。
ちょっと前に初級シスアドを取ったので、
それじゃあ今度はプログラムを勉強してみようかなと。思い立って、
C言語の本を買って見たけど、特に何かをしたい訳じゃなかったので。
ゲーム造りは前に「カードワース」というのでやったことがあるので、
配列とかポイントとか作りながら覚えるのにゲームを作りながらやったら、
分かりやすいかなとか。思ったんだけど。――百年早い?
397デフォルトの名無しさん:2005/08/09(火) 22:19:42
>>396
無理。いきなりRPG作ろうとか思うな。
まずちゃんとC勉強して来い。
もしくはRPGツクールで作れ。
398デフォルトの名無しさん:2005/08/09(火) 22:24:57
とりあえずCUIで動く数当てゲームあたりからかな
399382:2005/08/09(火) 22:47:19
うい、もう少し勉強してから出直します…
でもその前にちょっと質問。
文字色付けるのは見つけたんだけど、これでいいんでしょうか?

#include <stdio.h>
#define ESC ((char)0x1b)
int main(void)
{
printf("hello, world\n");
printf("%c[31m赤色にしてみる%c[0m\n", ESC, ESC);
printf("%c[4m青色にしてみる%c[0m\n", ESC, ESC);
printf("%c[32m緑字にしてみる%c[0m\n", ESC, ESC);
printf("%c[36m水色にしてみる%c[0m\n", ESC, ESC);
printf("%c[45;36mピンク字に青文字にしてみる%c[0m\n", ESC, ESC);
printf("%c[30m黒色にしてみる%c[0m\n", ESC, ESC);
printf("%c[45;30mピンク時に黒色にしてみる%c[0m\n", ESC, ESC);
printf("good-by\n");
return (0);
}

%c[以下のどの文字が何に対応しているのかとか、さっぱり分からないですけど。
この色とかってもしかして、機種依存になってますか? ってか、スレ違い?
400デフォルトの名無しさん:2005/08/09(火) 22:53:33
401382:2005/08/09(火) 23:03:22
…そうか、これってDOSだからC言語から離れるんですね。。。度々ゴメン。

みなさん、お騒がせしまた。orz
402デフォルトの名無しさん:2005/08/09(火) 23:12:55
おいおい
まあ本人が納得してるならいいか。
403デフォルトの名無しさん:2005/08/09(火) 23:19:33
>>399
激しく無駄なprintf()の使い方だな。
例えば
>printf("%c[31m赤色にしてみる%c[0m\n", ESC, ESC);

printf("\x1b[31m赤色にしてみる\x1b[0m\n");
でよい。
404デフォルトの名無しさん:2005/08/10(水) 07:15:59
そもそもC言語には入出力機能は言語レベルで実装されていないので
画面への表示をやりたかったら、全てライブラリを使うことになる
ANSIで決められた標準関数だけを使えば、どのコンパイラでも動くので
一見コンソール入出力関数群がC言語の組み込みコマンドのように見えるだけで
ライブラリが無ければ本来、ファイルの読み書きすらC言語単体では出来ない

初心者にありがちな、
C言語=printf scanf
っていう勘違いは入門書が悪いからだろうか?

C言語でもWin32APIを使えばグラフィカルなゲームは作れる
405デフォルトの名無しさん:2005/08/10(水) 09:26:30
C言語 = printf(), scanf()
って考えは間違いじゃないでしょ。

>C言語でもWin32APIを使えばグラフィカルなゲームは作れる
なかったら作れないじゃん、ない場合はC言語だけ使うってことだろうし。
406デフォルトの名無しさん:2005/08/10(水) 09:31:42
Win32API無いなら
GLUTでもSDLでも使えば?
大部分のコンピューターでグラフィカルなゲームが作れるぞ
407デフォルトの名無しさん:2005/08/10(水) 09:43:15
>>405
だから

C言語≠標準関数

勘違いしている奴多すぎw
408デフォルトの名無しさん:2005/08/10(水) 11:00:01
C言語つってもCの仕様通り実装されてる処理系は世の中にないのにね
409デフォルトの名無しさん:2005/08/10(水) 11:21:26
>>408
規格に完全に準拠している処理系は存在しないって意味?
そんなことないと思うけど。
410デフォルトの名無しさん:2005/08/10(水) 12:23:34
規格にも処理系は規格に合致したプログラムが問題なくコンパイルできる範囲で独自拡張しても良いと書いてあるはず。
411デフォルトの名無しさん:2005/08/10(水) 12:43:58
スレタイみてしゃべろうぜ?
べつにここじゃないと吐けない愚言でもなかろう。
412デフォルトの名無しさん:2005/08/10(水) 13:00:27
規格をほぼ満たすのはVC2003ぐらいしかない
boostスレ見ればわかるけど他はボロボロ
413デフォルトの名無しさん:2005/08/10(水) 13:38:18
>>412
CとC++の区別もつかないのはどうかと思うよ。
414デフォルトの名無しさん:2005/08/10(水) 13:41:17
C言語だけで作られたゲームなんて
コンシューマにゃ無数にあるんじゃねえの?
昔すぎるとアセンブラがたくさん混じってるだろうし、
最先端だとC++やその他何か違うものも使ってたりするだろうけど。
415シープラ勉強中 ◆ryjMYLsfPA :2005/08/11(木) 19:55:13
低水準&停滞気味な私がきましたよ
http://49uper.com:8080/html/img-s/70913.zip
なんとか村人をしゃべらせてみました。
Zでしゃべりかけて、Xで文字送りという不思議使用です


とにかくテキストを出す方法に疑問ありまくりなんですが、
私が考えた方法は

まずpFileBufferにファイルの全情報を読み込む
pTempBufferに表示したい分だけの文字列をpFileBufferから読み込む
テキストは4行なので、pDrawBuffer[4]を用意
(pDrawBuffer[0]は一行目、[1]は二行目・・ てな感じで使う)
pDrawBuffer[?]にpTempBufferから一文字ずつ入れて表示

という流れになってると思います。
細かい計算はなんとかするとして、特に疑問なのが、

一行にひとつずつバッファを用意するのは一般的なんでしょうか?
なにやら凄く無駄なことをしてる気がするのですが。
自力で改行をコントロールするのに、この方法しか思いつかなかった orz

あと、表示はTextOut()を使ってるのですが、これは大丈夫でしょうか?
DrawText()ってのも試してみたのですが、
自動改行がいまいちコントロールできなかったので、やめちゃったんですけど。

説明下手で申し訳ありませんが、
どなたかご意見お願いします m(__)m


>>379
すごいなあ (´・ω・`)
416デフォルトの名無しさん:2005/08/11(木) 20:18:18
えーっと
行末の改行コードは消そう。TextOutで表示されちゃってるから。
まあ表示処理に関しては好きにしていいと思う。
思うが、文字列をpTempBufferに置いてあるとして、
DrawTextで、nCount(3番目のパラメーター)を一文字分ずつ
増やしていけば、改行で云々せずともかってに描画してくれる気もする。

という感想。あくまで感想であってアドバイスではない。
417デフォルトの名無しさん:2005/08/11(木) 21:19:18
>>416
改行はウチでは出てなかったんですが↓
http://49uper.com:8080/html/img-s/70929.jpg
環境によって変わるのかな・・。
よくわかりませんが、改行は表示用文字列には入れない方向で行ってみます。
ども m(__)m

なぜか、フォントによっては出ることもあったんですよね。
418デフォルトの名無しさん:2005/08/11(木) 22:00:50
一応言っておくけど
『AR丸ゴシック体M』
なんてフォントは家のマシンには入っていない。
419デフォルトの名無しさん:2005/08/11(木) 22:24:35
>>415
クラスの階層図と、もうちょっとソース中のコメントがほしいです
あとはクラスによって.hファイルが無い(もしくは他のファイルに含まれている)のがちょっと見難いかも

改行はうちの環境でも出ませんでしたよ
420デフォルトの名無しさん:2005/08/12(金) 00:14:00
421420:2005/08/12(金) 00:17:49
あぁ、ちゃんとした台詞もあったんか…
つまんない台詞でスクリーンショット撮っちゃったな orz
422シープラ勉強中:2005/08/12(金) 17:21:01
>>418 >>420 >>421
スクリーンショットまでとってもらってすみません
フォントは「MSゴシック」あたりが一般的かもですね。なんかよく聞くし。
選べるのが一番いんんでしょうが。
あと、ちゃんとした台詞はひとつもないのでww

>>419
階層図ってのは、>>19 >>21 みたいなヤツでしょか?
継承してるのだけならなんとかなりそうなので、
どっかに書いときます。(ときたま自分でもわけわかめになりますから・・)

ヘッダーファイルは何をどこに入れればいいのかまだ研究中なので、
もうちょっと待ってください。

コメントは・・どうしよ。


お二方とも、ありがとうございます m(__)m
423デフォルトの名無しさん:2005/08/12(金) 20:10:59
簡単でいんで、クラス図があれば全体がわかりやすいけどな。
クラス図ってどう書いたらいいの?
書いたこと無いよ(´・ω・`)

>>422
フォントは「MS ゴシック」か「MS 明朝」
どのWindowsにも、この2つは必ず入っている筈
425デフォルトの名無しさん:2005/08/12(金) 21:42:44
Win95/NT4以降ならそれに加えて「MS Pゴシック」「MS P明朝」が入っている。
426デフォルトの名無しさん:2005/08/12(金) 22:50:47
CやっててC++はやったことないんですが
こんな感じのゲームを作るときってやっぱりクラスとかCにない機能を使ったりしますか?
427デフォルトの名無しさん:2005/08/12(金) 22:52:43
Cじゃ作れないとでも言うのか?
428デフォルトの名無しさん:2005/08/12(金) 22:58:50
>>426
C++使ってる意味がないじゃないか
429デフォルトの名無しさん:2005/08/12(金) 23:03:59
クラス図自分で書くのがいやならDoxygenでも使っとけ。
それと、ゲームでまで等幅フォントは見たくないぞ。
430デフォルトの名無しさん:2005/08/13(土) 00:51:59
ゲーム以外に等幅フォントが氾濫してるシーンなんてあるか?
2chもプロポーショナルやん。

あ、ソースが等幅フォントか・・・。
431デフォルトの名無しさん:2005/08/13(土) 01:17:41
俺は等幅フォント好きだが。デスクトップのフォントもMS ゴシック。
432デフォルトの名無しさん:2005/08/13(土) 01:22:20
ゲームって大体等幅じゃね?

PCゲームはやらんから知らんけど
433デフォルトの名無しさん:2005/08/13(土) 01:24:56
くだらん話が続いてるな
434デフォルトの名無しさん:2005/08/13(土) 01:53:41
>>424
doxygen 使えばそれっぽいのは生成できる。
コメントのスタイルとしても doxygen に対応させておくのがお勧め。
435デフォルトの名無しさん:2005/08/13(土) 01:58:44
>>430は2chの世界がすべての池沼
>>430はOutlookのデフォルトフォント設定のままの池沼
436382:2005/08/13(土) 02:27:40
数当てゲームできました(`・ω・´)
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0014.lzh
スレの底下げに来てるようだけど、本人いたってマジメです!
直す所とかヘンな所があったら教えてもらえると助かります orz
あと、データのセーブ方法がまったく分かりません orz
437これで動くはず・・・:2005/08/13(土) 13:09:51
#include <stdio.h>
#include <stdlib.h>
typedef struct _St{/* ココ ニ データ */ ; sturct _St * Prev, * Next}St; /* コノ コウゾウタイ ハ、 ヒツヨウ ニ オウジテ ヘンコウ シテクダサイ */
void ReleaseDataAll(St * data){St * fr; if(data){do{fr = data; data = data->next ,free(fr);}while(data);}}/* データ カイホウ ヨウ */
int LoadData(const char * fileName, St * data){FILE * fp; St * Save; if(!(fp = fopen(fileName, "rb"))/* バイナリ ヨミコミ センヨウ */{return -1;}
 Save = data = (St *)malloc(sizeof(St)); if(!data){fclose(fp); return -2;} data->Prev = NULL;
 while(fgets(data, sizeof(St)-sizeof(St *)*2, fp) != EOF){data->next = (St *)malloc(sizeof(St)); if(!(data->next)){ReleaseDataAll(Save);retrun -2;}
 data->next->prev = data; data = data->next;} data->next = NULL; fclose(fp); return 0;
}/* シタ ノ カンスウ ガ セイジョウ ニ ドウサ スレバ ウゴク ハズ */
int SaveData(const char * fileName, St * data){FILE * fp; if(!(fp = fopen(fileName, "wb+"))/* バイナリ シンキ ヨミカキ モード*/{return -1;}
 do{fputs(data,fp); fseek(fp,-(sizeof(St*)*2), SEEK_CUR); data = data->next}while(data); close(fp);, return 0;
}/* コノ カンスウ ハ ドウサ ノ ホショウ ハ ナシ */
438デフォルトの名無しさん:2005/08/13(土) 13:23:39
>>436
がんばってるな
好感持った
439デフォルトの名無しさん:2005/08/13(土) 13:29:28
>>436
処理がmain関数に集中しているので見通しが良くなるように
関数に分割してみよう。

static int flag_rand = YES;
元ソースでも可だけど、ここでは意味を明瞭にしたほうが良いと思う。

ランキングはスコアの配列(優れた順に並ぶ)を用意して、表示するだけ。
スコアと名前を構造体を使ってセットにする等、適宜工夫して。構造体や
配列の操作の良い練習になるはず。

セーブ・ロードはその配列をファイルに入出力するだけ。
C ファイル操作でぐぐれ。
440382:2005/08/14(日) 00:10:49
ありがとう!
構造体とか配列は、意味不明で読み飛ばしてた所でした… orz
なんかその辺りが分からないと、後が続かなそうですね。
関数の分割もいいかげん覚えないと、自分でも読みにくくなってきました。
もちっと勉強してきます。
んで、とりあえず、あれこれいじってできた所まで上げておきます。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0015.lzh
441デフォルトの名無しさん:2005/08/14(日) 00:17:30
>>382>>440
がんばりは分かるが、スレ違いってことに気づけ。
442デフォルトの名無しさん:2005/08/14(日) 07:03:47
情報が高校の教科に入ったせいか、最近がんばる人がふえてうれすぃい
443デフォルトの名無しさん:2005/08/14(日) 07:57:02
>440
#define YES 0に違和感。
真偽値を表すとき、慣例は真は0以外の値、偽は0にする。
444デフォルトの名無しさん:2005/08/14(日) 11:29:44
それ以前にYES/NOじゃなくてTRUE/FALSEにしようぜ。
#define TRUE 1
#define FALSE 0
大抵の人はコレを使う。他の言語でも似たような意味で使われるから。
445382:2005/08/14(日) 12:35:52
なるほど、そんな慣習があったんですか。
ではその辺りも変更しながらやってみます。
で、あとは自力、か他スレで聞いて勉強して、
RPG作れるようになったら、また来ます! (`・ω・´)
みなさん、色々ありがとう、おじゃましました!
446デフォルトの名無しさん:2005/08/14(日) 16:18:39
ガンガレ ノシ
447デフォルトの名無しさん:2005/08/14(日) 16:30:45
>>445
この短期間でめちゃめちゃ上達してますね。
末恐ろしい・・がんばってください。
448デフォルトの名無しさん:2005/08/14(日) 19:26:19
>444
慣習だと
#define TRUE (!0)
#define FALSE (0)
だよ
しかも if(ほにゃらら==TRUE)って使い方はしない
if(ほにゃらら)
って使う
449デフォルトの名無しさん:2005/08/14(日) 20:15:55
YES/NO的には
#define YES 1
#define NO 0
だろうな
450デフォルトの名無しさん:2005/08/14(日) 23:54:51
最近の賢いコンパイラは==TRUEが勝手に消えるね。
451デフォルトの名無しさん:2005/08/15(月) 00:47:10
それはないだろ
452デフォルトの名無しさん:2005/08/15(月) 01:58:45
>>448
>#define TRUE (!0)
>#define FALSE (0)
>だよ

これは間違いないが

>しかも if(ほにゃらら==TRUE)って使い方はしない
>if(ほにゃらら)
>って使う

これってどうなん?
あまり好きじゃないな
453デフォルトの名無しさん:2005/08/15(月) 02:07:36
if(はにゃーん==TRUE){ }
else if(はにゃーん==FALSE){ }
else{ ここに来ることがある }

ので、==TRUE は使いたくない
454デフォルトの名無しさん:2005/08/15(月) 02:18:56
( ゚д゚)ポカーン
455デフォルトの名無しさん:2005/08/15(月) 02:30:54
テストif ((a == b) == TRUE)
は(TRUEが1であるかぎり)期待したとおりの結果を返す。しかしバカ げたことである。
一般にTRUEやFALSEを相手に明示的にテストするこ とは望ましくない。
なぜならライブラリ関数の中には(有名なのは isupper()、isalpha()など)条件が
成立したときに非0の値を返すが、 その値は必ずしも1ではないものがある(さらに、
もし君が「if((a == b) == TRUE)」が「if(a == b)」の改良版であると信じるのなら、
な ぜそこで止めるのか。なぜ「if (((a == b) == TRUE) == TRUE)」を 使わないのか)。

おおまかな目安としては、TRUEとFALSEを(あるいは 似た物を)ブール値をあらわす
変数に代入する際や、関数の引数、ブー ル値を返す関数の戻り値としてだけ使うこと。
けっして比較に使って はいけない。
456デフォルトの名無しさん:2005/08/15(月) 02:39:39
>448
#define TRUE (1==1)
#define FALSE (1!=1)
457デフォルトの名無しさん:2005/08/15(月) 03:02:50
まだスレ違いの上、低レベルな話してるのか。
おまえら↓逝けよ。

すれ立てるまでもない質問はここで 第69刷
http://pc8.2ch.net/test/read.cgi/tech/1123220967/

C言語なら俺に聞け! Part 112
http://pc8.2ch.net/test/read.cgi/tech/1123432321/

C++相談室 part41
http://pc8.2ch.net/test/read.cgi/tech/1120190961/
458デフォルトの名無しさん:2005/08/15(月) 03:08:07
>>457
そっちへ誘導するなよ
低レベルの話はここでやってもらったほうがいい
459デフォルトの名無しさん:2005/08/15(月) 03:20:26
isupper()とかisalpha()をTRUEと比較する方がおかしいだろ…

if ((a == b) == TRUE)なんて書かないだろ…
460デフォルトの名無しさん:2005/08/15(月) 08:22:01
フォントが等幅なのはレンダリングが楽だからじゃないの?
461デフォルトの名無しさん:2005/08/15(月) 09:45:57
レンダリングって自分でやることなん?
スーファミとかの話か?
462デフォルトの名無しさん:2005/08/15(月) 19:57:45
>>461
何も考えずにBG面に描こうとするとそうなるな(スーファミとかの話)
最近はBG面にプロポーショナルで描くソフトも増えてるが(GBAとかの話)

プロポーショナルにすると、改行位置の調整が面倒くさいってのもあるんじゃないすかね
463デフォルトの名無しさん:2005/08/15(月) 20:06:06
プロポーショナルだと、横に書いたドット数数えないとダメだからな。
等幅だと文字数だけだから楽だし。
464デフォルトの名無しさん:2005/08/15(月) 20:12:59
てか、昔のテキストモードスクリーンで
プロポーショナルフォントなんてありえない話だったから。

プロポーショナルフォントって単に文字幅が文字毎に異なるだけじゃなくて
前後の文字の組み合わせによっても字間が変わるような面倒なこともしてる。
465デフォルトの名無しさん:2005/08/17(水) 21:38:43
RPG で難しいのは
攻撃力と守備力の関係ではないでしょうか。
勇者の攻撃力が 10、魔物の守備力が 3 なら
単純に 10 − 3 = 7 が魔物に与えるダメージってわけにはいかないような。
たとえばドラクエとかではどうなってるんでしょうか。
攻撃力−守備力> HP なら絶対 1 発で倒せるのか、とか考えると
そうでもないような。
ほかにもすばやさとか属性、魔法の効き目なんかを考えると
ややこしい。
当方 C++ 初心者でコマンドプロンプトで動く RPG を勉強しながら作ってるんですが
一番悩むのは上記ほか経験値をどのくらい稼いだら次のレベルに上がるか
レベルが上がると HP、MP がどのくらい上昇するか、
それに応じてどこに行けるようになるか、どのくらいの強さの魔物と戦うか、
ということなんですが。
466デフォルトの名無しさん:2005/08/17(水) 21:58:26
戦闘の計算式とバランス調整は難しいと思います

私は、とりあえず適当に作ってますがw
467デフォルトの名無しさん:2005/08/17(水) 21:59:27
>465
その辺は完全にゲームバランスだからね。RPGツクール(体験版もあり)を参考にするもよし、市販のRPGを参考にするもよし。
本来はこっちなんだろうけど。
http://pc8.2ch.net/gamedev/
468デフォルトの名無しさん:2005/08/17(水) 22:17:12
いかりのひでよしvsラッシュやまのて
を思い出す俺ももう歳だな
469デフォルトの名無しさん:2005/08/17(水) 22:22:09
どのくらい経験値稼げばレベル上がるか・・・っていうのは
どういうゲームにしたいかによるでしょ
レベル上げ必須なのか、サクサク進むのか、程よいのかって

全体的に自分の理想から指針を練っておくといいね
あとはテストプレイのみ
470デフォルトの名無しさん:2005/08/17(水) 23:30:29
市販ゲームの攻略サイト漁れば?
471デフォルトの名無しさん:2005/08/18(木) 04:03:17
>>468
のみ001
472デフォルトの名無しさん:2005/08/19(金) 17:02:29
スレの勢いが失速しはじめたね
473デフォルトの名無しさん:2005/08/19(金) 20:56:28
何書き込んでも的外れなバカ意見しか聞けないからな
474デフォルトの名無しさん:2005/08/19(金) 21:42:31
もともと2chの意見にはあまり質を期待できない上、
ゲームと名が付く話題は特に馬鹿ばっか集まってくるからな。
475シープラ勉強中 ◆ryjMYLsfPA :2005/08/19(金) 22:10:34
的外れな意見しか書けない&完全に停滞中の私がきましたよ
みんなどうやってモチベーションとか維持してるんだろうか orz

http://49uper.com:8080/html/img-s/72602.zip

無理やりパーティーキャラーを出してみました
当たり判定はつけてないんですが、
こいつらは無くてもいいですよね・・(バグりそうでつけるのが怖い・・)

次は戦闘に行くのが筋のような気がするのですが、
最近まんねり気味で、なんか新しいことがやりたいので、あえて音楽に挑戦してみます。
噂によると、MCIというのを使うと、比較的簡単に鳴らすことができるらしいので。。

>>465
早くバランス調整とかで悩んでみたいです (T_T)
476デフォルトの名無しさん:2005/08/19(金) 23:27:22
>475
MCIは確かMCIデバイスを開いてコマンドを(テキストで)送って制御するはず。言うなればCDプレーヤーの再生、停止、早送り、
トラック選択のボタン操作をコマンドに置き換えているようなもので、細かい制御には不向き。(MP3はActiveMovieの機能を使えば・・・)
勝負はどんな音楽を使うかなんだけどね。

スクリプトなら多少は相談に乗ります。でも自分だとADV仕様+RPG対応な物を作るかも。
477デフォルトの名無しさん:2005/08/19(金) 23:51:36
>>475
おぉ、台詞枠もゴージャスになったネ
クラスも増えてきて、もはや解析する気が起きねーぜバーローwww

>みんなどうやってモチベーションとか維持してるんだろうか orz
セックル

マジレスするとやっぱり絵だって。さすがに全部自作は無理があるだろう。
誰かに頼むか素材使ったほうがいいんじゃね?

しかし素材使うと、「どっかで見たことある感じで萎え...orz」ってことになりかねない諸刃の剣
478デフォルトのたぬきさん:2005/08/20(土) 00:20:01
お久しぶりに登場。

http://himatanuki.hp.infoseek.co.jp/test_rpg1.zip

この2日で新たに作ってみまシタ。
何だか、色々な所から勝手に使ってるモノが多いのでヤヴァイかも。

タイトル画面や、コマンドメニューもお粗末ながら付いてマス。
音楽の再生もMCIでやってるケドも、>>476の言う通り、細かい制御には不向きだった。

詳しい事は同梱してるテキストを参照して下さいな。


>>475
一ヶ月でスゴイ進歩に驚いた。
この調子なら今年中に完成しそうな予感がするヨ。

>>477
>どっかで見たことある感じで萎え...orz
スゴイ当てはまる悪寒。
479デフォルトの名無しさん:2005/08/20(土) 00:57:15
>478
ソース眺めてみた…
継ぎ接ぎだらけのフランケンシュタインに見えた…

ガンガレ
480シープラ勉強中 ◆ryjMYLsfPA :2005/08/20(土) 07:34:36
まずはMCIより簡単そうなPlaySound()関数を使ってみました

http://49uper.com:8080/html/img-s/72687.zip

二行書いたら音が鳴ったのにびっくりです。
まだ複数ファイル同時再生の方法がわからないので、
もうちょっと調べてからMCIに移行しまっす。
音はフリーのを盗ってきました。

>>476
スクリプト!スクリプト!
今は取り掛かる気力が無いんですが、
戦闘とマップエディタを作ったあとにでも、ぜひ指南してくださいませ〜。

音楽はどっかでフリーのを パク(ry してきます ^^

>>477
> クラスも増えてきて、もはや解析する気が起きねーぜバーローwww
うはwwやぱ、クラス増えてきたら解読困難になってきますよね。
私も自分で組んでて、ちょくちょく
「あれ?これはどっからつながってるんだ??」ってなりますし・・
C++は集団作業に向いてるって思ってたんですが、
実はCより把握が難しい気がしてきた。。

セックルと「絵を誰かに〜」ってのは無理っぽい ^^ ので、
絵はどっかのフリーの素材を パク(ry してくるしかないか。
RPGツクール系の絵を公開してるサイト様はいくつか見つけたのですが、
絵のサイズが違うので拡大しなくちゃです。
でも拡大するとあからさまに絵が崩れちゃって、描いた人に申し訳ないし。
さて、どうしようか。
481シープラ勉強中 ◆ryjMYLsfPA :2005/08/20(土) 07:39:29
>>478
タイトル画面がやたらとカッコよすww
MCI再生は参考にさせていただくかもー。
いっしょにがんばりましょう (`・ω・´)

>>215
今ごろですが、オーバーライドの方法を参考にさせていただきました
m(__)m


新しいことをやったので、
ちょっとモチベーション上がってきたかな
上の方でだれかが言ってましたが、
すぐ結果の出るのをやり続けるのがいいかもねー。
482デフォルトの名無しさん:2005/08/20(土) 11:35:13
>>480
音入れに取りかかってるようなので
適当に曲を作ってみた。使えるようだったら使ってくれ。
MacのSoundtrackで適当にループを並べただけなので
品質についてはいいっこなしということで。
44.1kHz 16 bit Stereoと無駄にでかいので自分でモノラルにするなり
サンプリング周波数を落とすなり適当に料理してくださいな。
http://gamdev.org/up/img/3044.zip
http://gamdev.org/up/img/3045.zip

483シープラ勉強中 ◆ryjMYLsfPA :2005/08/20(土) 20:58:04
http://aploda.com/dl.php?mode=pass&file_id=0000021181

MCIでwavファイルを繰り返し再生してみました。
特殊な構造体と特殊な命令のオンパレードで意味わからないです orz
便利は便利なんでしょうけど、
あまりのブラックボックスぶりに、MCI使いたくなくなってきた。

なんか音楽再生には専用のスレッドがあったほうがいいとかなんとか
そろそろマルチスレッドにも取り掛かるべきかなぁ・・

>>428
長い音のサンプルが必要なときは使わせていただきます。
どうもありがとー (^o^)/
484デフォルトの名無しさん:2005/08/20(土) 21:08:15
教えがいの無い人間だ
485デフォルトの名無しさん:2005/08/20(土) 21:14:20
>>483
mciSendStringのほうが簡単。そりゃもうsndPlaySound並みに。
もしかしたらできることの範囲が狭くなるかも(?)しれないけど。
486シープラ勉強中:2005/08/20(土) 21:46:48
>>484
(:D)| ̄|_

>>485
おお、そっちはもっと難解そうで即スルーしたんですが、
食わず嫌いだったか。。
今度はstringの方をやってみます。
なんとか実用に耐えるものを作らねば!
487デフォルトの名無しさん:2005/08/20(土) 21:58:02
>>485-486
ゲームはBGMだけじゃなく効果音も同時に鳴るので
多チャンネルを視野に入れておいた方がいいと思う。
確かDirectSoundを使うと多チャンネルも使えるようになるみたいだが、
MCI関係で多チャンネルが使えるかどうかは不明。
出来ないようなことを誰かが言っていたような気もする。
とりあえず>>483のソースに手を入れて多チャンネルの実験してみる。
488デフォルトの名無しさん:2005/08/20(土) 22:03:18
MCIは同時再生できるよー
環境依存かもしれんが…
489デフォルトの名無しさん:2005/08/20(土) 22:12:07
ヒント:ポインター
490シープラ勉強中:2005/08/20(土) 22:32:11
いまMCIに飲まれ中でして、同時再生どころでは・・

>>487さんに超期待!
491デフォルトの名無しさん:2005/08/20(土) 22:43:33
>>490
飲まれるほど難しくないぜ

int main()
{
mciSendString("open a.mid alias test",NULL,0,0);
mciSendString("play test",NULL,0,0);
getchar();
mciSendString("close test",NULL,0,0);
}

a.mid のところを適当に変えて実行してみれ。(wav でも mid でも OK)
492シープラ勉強中:2005/08/20(土) 23:01:04
>>491
おお、普通に鳴りました。
てゆか、stringの方は変数いらないんですか。
・・・乗り換え決定ww

ファイル名にスペ-スがあったら鳴らないみたいです。
命令をスペースで区切ってるからかな?
493デフォルトの名無しさん:2005/08/20(土) 23:14:15
ヒント:クォーテーション
494デフォルトの名無しさん:2005/08/20(土) 23:16:43
>>492
とりあえず同時再生は出来が、サウンドカード依存もありそう。
昔の初期SoundBlasterとかPCM1チャンネルの場合は鳴らないような気もするが、
最近はサウンドカード自体が多チャンネル持っていると思うので
あまり神経質にならなくてもいいのかもしれない。
しかし、MCIのループはちょっと問題ありかも。
ループするときにちょっと空白時間があるので、ループ前提の曲の場合は
空白時間が気になるかも。曲を空白前提で作れば問題とならないが。

改行多すぎなので2つに分割
495デフォルトの名無しさん:2005/08/20(土) 23:17:47
下記は効果音再生にPlaySoundを使ったサンプル
>>483に追加

LRESULT CALLBACK WinProc (
 HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 switch (uMsg)
 {
  case WM_COMMAND:
   switch(LOWORD(wParam)){
    case 1:
     PlaySound("コイン音 貯金箱に一枚 coin08.wav",
         NULL, SND_ASYNC | SND_FILENAME);
      break;
    }
    break;
  case WM_CREATE:
    //ボタン配置
    CreateWindow("BUTTON", "効果音",
      WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
      WS_CLIPCHILDREN | BS_PUSHBUTTON,
      0, 128, 64, 24, hWnd, (HMENU)1,
      (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);
 }
496デフォルトの名無しさん:2005/08/21(日) 01:34:15
MCIのループはりアルタイムゲームで使うなら致命的
RPGやノベルなら気にならないかもしれんが…
DirectX使うかMIDI再生を自前で書くかした方がいいw
497デフォルトのたぬきさん:2005/08/21(日) 02:05:44
ソースを一から書き直し。
MCIのループは>>496の言う通り、致命的だった。

http://himatanuki.hp.infoseek.co.jp/TestRPG01.zip

今度は"新しい事"って事で、走る事とコマンドメニューが表示可能になった。
一番大きいのは音楽の複数同時再生とループ再生かな?

>>479
今度は縫い跡が目立つヤクザのおじさんに格上げ。

>>482
本当に申し訳ない。
折角作って頂いたのに使ってません。

今度は使うと約束しマス。

>>シープラ勉強中 ◆ryjMYLsfPA
もし良かったら、自分の音楽再生のコードを使う?
ってか分かり難いコード書いてゴメン。
498デフォルトの名無しさん:2005/08/21(日) 02:34:01
たしかにこういう短いサウンドの繰り返しだと、ループの区切れ目が目立つね…
499デフォルトの名無しさん:2005/08/21(日) 04:44:28
同時に鳴らせるようになったのは2000からじゃなかった?
500デフォルトの名無しさん:2005/08/21(日) 08:39:49
うむ。kmixerが勝手にミキシングするな。
501デフォルトの名無しさん:2005/08/21(日) 10:17:30
>>497
いや別に使えと強制してるわけでもなんでもなく
使えたら使ってね程度の素材なんで、全く気にする必要ないです。

ループの区切れ問題はとりあえずそのままにしておいて
その他が組み上がった後に、もう一度他の道を検討する方針が良いのでは?と思った。
502シープラ勉強中 ◆ryjMYLsfPA :2005/08/21(日) 13:49:14
http://aploda.com/dl.php?mode=pass&file_id=0000021419

stringの方を使ってみました
まだ実用的ではないのですが、同時再生も普通にできるみたいです。
stringの方はcommandよか遅いとかなんとか各方面で見ますね。。

mciSendString()関数にはファイルバッファも入れられるようですけど、
バッファも入れたほうが早く鳴るのかなぁ。
メモリにやさしくなさそうだけど。

>>497
うう、ありがたいお言葉。。

>>495
それも同時に鳴るってことは、
単発BGM専用で::PlaySound()を使うのもアリですね。
503デフォルトの名無しさん:2005/08/21(日) 17:20:47
今から参加するぜ!
BCC Developerインスコとウィンドウの表示が(猫みながら)できた
マップ歩くぐらいまで出来たらうpしたいと思う
504シープラ勉強中:2005/08/21(日) 17:57:38
mciSendString()関数にはファイルバッファは入れられないみたいですね
勘違いしてました orz

>>503
コンパイラ入れるのと、ウィンドウ表示が一緒なんて早すぎです。
おおいにがんばってください。

私はもう疲れた・・
505デフォルトの名無しさん:2005/08/22(月) 00:42:43
曲ループの空白を解決するクラスを作りました。
mciよりも下位レベルのwaveOut系APIを使用して
再生時にループフラグを指定しています。

>>483のソースに手を加えたmainと
ループするBGMと単発の効果音を担うようにCSoundクラスを作りました。

wavファイルは>>483のファイルを使用しているので
同じフォルダーに置いてください
http://gamdev.org/up/img/3053.zip

起動時にBGM(その2_02.wav)を延々と鳴らし続け、
「効果音」ボタンで「コイン音」
「一時停止/再生」ボタンでBGMの一時停止と再開
BGMボタンが沢山並んでいますが適当なループするwavを同フォルダに配置し、
そのファイル名をWinMain.cppの適切な箇所で書き換えれば
ボタンを押す事によって対応したBGMに切り替わるはず。

と、今アップしたソースの確認をしたら改行コードがCR(Mac)になっていたので
VC++でコンパイル出来なかった。改行コードをMac(CR)からWin(CR+LF)に変えてください。
506デフォルトのたぬきさん:2005/08/22(月) 15:29:54
嗚呼、迷った。

>>501氏が言う通り、ループの区切れ問題はそのままにして
他の事をするべきだと思ったケドも、何をすればイイのか分からない。

現状(>>497)を見て、次に何をすればイイのか
アドバイスをくれると本当に嬉しい。

でも、スクリプトとかマップ関係は出来ない悪寒。

>>503
ガンガレ、期待してる。

>>505
今度、コードを移植させるカモ。
507デフォルトの名無しさん:2005/08/22(月) 15:56:26
>>506
現状芝生のみのマップにもうちょっと絵を描いてみてはどうだろう
せっかく沢山のチップを用意しているのだから勿体ない。
絵が描かれると同じ歩くにも気分が良くなるし。

マップエディタ使わなくても方眼紙に色塗って作れる。
絵を描いたら次は建物への当たり判定を作るとか。
508シープラ勉強中:2005/08/22(月) 16:09:51
>>505
低レベルAPI高レベルプログラム キタ━(゚∀゚)━!!!
私が雑魚すぎて、ソース見てもなにがなんだか・・
音とは全然関係ないのですが、CSoundにやたらとvirtualがあるのはなぜですか?
派生させてオーバーライドして使うんでしょか?

waveOutは私もやろうかとは思ってるのですが、
鳴るまで一ヶ月ぐらいかかりそうで手が出せないです (T_T)
509デフォルトの名無しさん:2005/08/22(月) 16:23:49
>>508
CSoundはそのままで使えますが、やたらとvirtual付けているのは
クセみたいなもんなのであまり気にしないで良いと思います。
今のCSoundではvirtualの使い方の参考にはならないでしょう。

waveOutはwavファイルの入力をやってくれないので
CSoundのほとんどはwavファイルからヘッダを分離しPCMデータのみを取り出す処理です。
PCMデータを取り出したら、あとはwaveOutキューにWAVEHDRを
送り込んであげれば鳴ってくれます。

同じ物を1つ1つ作るのも面倒なので、CSoundが使えるようだったら
そのまま使ってかまいません。
つか、そのまま使えるように他の処理系に依存しないようになっているはず。
510デフォルトの名無しさん:2005/08/22(月) 18:10:06
>>505
乙。俺も使わせてもらうかも。

CSoundに効果音の機能を付けてしまってるのは良くないと思う。
機能が完全にクラスから独立してるから、別クラスで実装すべき。
サンプルとしてはこれで構わないかもしれないけど。

ところでWinMain.cppに「製作者:シープラ勉強中◆ryjMYLsfPA」って書いてあったから
シープラ勉強中さんが作ったのかと勘違いしてしまったよ。
紛らわしいから次からは消してくれ…。
511デフォルトの名無しさん:2005/08/22(月) 18:22:35
>>509
いくつかお小言。
・BOOLなんていう、MSローカルなアナクロint型はやめて素直にboolを使おう。
・それが見易いと信じているなら止めないが、型名の後のTabコードは却って醜い。
・0以外を返す予定がない関数はvoidにしよう。
・PausedBGM()はIsPausedBGM()とでもしたほうが判りやすくないか?
#ついでに言うなら、bool IsPausedBGM() const {return pausedFlag;}でよさそうだが。
・アンダーバー二つで始まる識別子は予約されているから避けよう。
・上でも書いたが、内部の変更を伴わないメンバ関数はconstにした方が使いやすい。
・コンストラクタも分けるほどのものかなぁ。default引き数を使えば一つで済むが。
#まぁ、お好みで。一つで済ますとInitialise()も同梱できるおまけ付き。
・malloc()/free()ではなくnew/deleteを使おう。
・上でも書いたが、ただのゲッターはインライン化を期待して宣言に入れては?
#もしくはinline指定をしておくか。
512511:2005/08/22(月) 18:24:00
あー忘れてた。確かに>510の言う通りBGM系とEffect系はクラスを分けたほうがすっきりするね。
513シープラ勉強中 ◆ryjMYLsfPA :2005/08/23(火) 09:59:35
http://aploda.com/dl.php?mode=pass&file_id=0000022065
サウンド再生クラスの途中経過です。sciSendString()使いました。
ヤバいのができそうですww

今後は

○seとbgmのクラス作る
○サウンド再生スレッド作る(猫でも見ながらやってみます)
○sciSendCommand()のバージョンも作ってみる

という流れでいってみます。
週末までかかりそうう。。

>>509
どうもありがとうございます。
もし万が一私がwaveOut()に挑戦することがあれば、
最大限参考にさせていただきます m(__)m
あと、私も WinMain.cppの上の名前だけは消してほしかった ^^
514503:2005/08/23(火) 14:26:52
http://gamdev.org/up/img/3060.zip
WASDで上下左右に移動

>>504
>>506
激励サンキュー!

とにかく動くもの作ってプログラム覚えるよ
いつになったら追いつくのか見当もつかねーけど

参考サイト
GamDevPukiWiki - FF風RPGを作れ
http://gamdev.org/w/?%5B%5BFF%C9%F7RPG%A4%F2%BA%EE%A4%EC%5D%5D#content_1_5
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
515デフォルトの名無しさん:2005/08/25(木) 01:57:55
よくわからんが二人ともがんばれ
516デフォルトの名無しさん:2005/08/25(木) 07:42:32
乙。皆開発速いな。。_| ̄|○
517デフォルトの名無しさん:2005/08/25(木) 14:25:41
今開発してるのって何人ぐらいいるんだ?
518デフォルトの名無しさん:2005/08/25(木) 14:37:33
5人はいるんじゃね?

5人で協力すると、結構すごいもの作れるんじゃね?
519デフォルトの名無しさん:2005/08/25(木) 15:39:25
3人じゃないのか?
シープラ勉強中 ◆ryjMYLsfPA
デフォルトのたぬきさん
503
以上3名だと思う。
520デフォルトの名無しさん:2005/08/25(木) 16:56:23
>>518
1+1=2にならないところがソフトウェア開発の難しいところだ。
ヒロシです('A`)

居るのに勘定に数えてもらえなかったとです

ヒロシです('A`)
522デフォルトの名無しさん:2005/08/25(木) 17:43:03
これで四人と。
ほかにはいませんかー ゚∀゚)ノ
523デフォルトの名無しさん:2005/08/25(木) 17:48:15
>>521
もっとがんがれ。
524デフォルトの名無しさん:2005/08/25(木) 17:51:10
応援してるぜ
・シープラ勉強中 ◆ryjMYLsfPA
・デフォルトのたぬきさん
・503
・ヒロシ
525 ◆382ingG3ec :2005/08/25(木) 18:51:40
526デフォルトの名無しさん:2005/08/25(木) 20:21:53
俺もRPG作ってるけど、作れば作るほど作らなきゃ行けないところが
増えていく感じで無間地獄になってるw
RPG作るのって難しいね。
527シープラ勉強中:2005/08/25(木) 20:41:33
台風クルー!! 心なしか、ウチの中が普段より水っぽい気が・・
湿気でパソコンが壊れないか凄く心配です。

>>514
ウィンドウだしてから、凄いスピードで絵動かすとこまで行ってますね。
がんばってください。

>>515 >>524
どもども ^^

>>525
歓迎超歓迎
人の見ると刺激になりますよん。

>>526
あー、わかりますわかります。途中からゴールが見えなくなるww
528ヂフォルトの名無しさん:2005/08/25(木) 20:50:14
  _、_
( ,_ノ` )y━・~~~ あの頃は若かった…

マップクラスの大まかな設計
 ↓
マップエディタを作る
 ↓
エディタの開発に合わせてマップクラス拡張
 ↓
(´∀`)マップクラス肥満化
 ↓
編集機能の拡張
 ↓
(´∀`)クラス間結合のスパゲッティ化
 ↓
ゲーム本体に取り掛かる
 ↓
マップクラスに足りないインターフェースがあるのに気付き、拡張
 ↓
(´∀`)肥(ry
 ↓
マップクラスの拡張に合わせて、エディタのほうも修正
 ↓
クラス間依存関係の混沌により、小さな修正も一苦労
 ↓
(´∀`)吐血
 ↓
  _、_
( ,_ノ` )y━・~~~ 封印

 そして今年、デザインパターンが俺に悟りを開かせた 
         封印が解かれる…
529デフォルトの名無しさん:2005/08/25(木) 20:53:45
>>528
かっけぇええええええ!!!!!
530デフォルトの名無しさん:2005/08/25(木) 21:20:58
>>525
http://gamdev.org/up/img/3068.png
こんな感じになった
Windows2000だとエスケープシーケンスNGだっけ
531デフォルトの名無しさん:2005/08/25(木) 21:29:58
>>530
NT系でエスケープシーケンス使うには色々条件が必要
532デフォルトの名無しさん:2005/08/25(木) 21:31:12
おおコマンドプロンプトでこんなでっかく作ってるのかー
俺もコマンドプロンプトでRPG作ってるけど半角でたった16*32だ。ちっちぇー
533503:2005/08/25(木) 22:16:19
スクリーンショット
http://gamdev.org/up/img/3070.png
ダウンロード
http://gamdev.org/up/img/3069.zip

変更点
ツクール素材に対応
キー入力をGetAsyncKeyStateに変更して(;´Д`)なめらか〜
マップ表示

ゲームっぽくなってきたー!!
534 ◆382ingG3ec :2005/08/25(木) 22:34:40
うわぁ、やっぱりダメなんだ…orz
どうしよう
これ用の新しいウィンドウを開いて、
エスケープシーケンスの代わりになるようなの
(win32APIとか?)に作り変えるとなると、
C言語以外の知識も必要になりますよね?
今はC言語覚えるだけで頭の中が一杯なんで、
他に手を出したくないんですけど、
何かいい方法ないでしょうか?
なかったらこのまま突っ走ってもいいですか?
ちなみに、私のWindows98 だとこうなります。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0017.png


>>503 落ちなくなりました! ってか、カラフルで笑ったw
535デフォルトの名無しさん:2005/08/25(木) 22:38:41
>>534
次のステージがおまいを待ってるぜ (D風味)
536デフォルトの名無しさん:2005/08/25(木) 23:22:57
>>534
Cygwinでコンパイルしたら次の傷害が発生しました。
・makefileが通らない。
*一般的なmakefileではセパレータはタブなんですが、bccでは空白でもいいようですな。
*どっちみち、bcc限定になっているので使いようがありませんでしたが。
・実行すると>534のスクリーンショットと似た画面でSegmentationFaultを起こす。
*mapが出てない。
*入力プロンプトもない。

未だソースは見てないので参考までに。
537デフォルトの名無しさん:2005/08/25(木) 23:31:13
何もしてない漏れが言うのも何だけどさ、

例えば シープラ勉強中のメッセージウィンドウやNPC、マップ関係とかを
デフォルトのたぬきさんのウィンドウ/タイトル画面と合わせたらRPGにググッと近づくんじゃね?

それに >>503とか ◆382ingG3ec も協力すれば、作業の分担とかもできそうだし。


>>520が言ってる通りに 1+1=2 見たいに上手くは行かないと思うけど
このスレ住人達なら、何とかなりそうだとオモタ。

ガンガレ!
538デフォルトの名無しさん:2005/08/25(木) 23:38:38
まぁ、本当にできる奴はこんなとこにこないで、一人でせっせと作ってるんだけどな。
539デフォルトの名無しさん:2005/08/26(金) 00:26:03
sourceforge.jp あたりでプロジェクト立ち上げてやってみたら?
540デフォルトの名無しさん:2005/08/26(金) 00:29:49
>>534
エスケープシーケンスのかわりは猫でもわかる。
541デフォルトの名無しさん:2005/08/26(金) 06:36:35
ほれ

#include <windows.h>

int main( void )
{
HANDLE hStdout = GetStdHandle( STD_OUTPUT_HANDLE );
for ( int lpc = 0; 15 > lpc; lpc++ ) {
COORD pos;
pos.X = pos.Y = lpc;
SetConsoleCursorPosition( hStdout, pos );
SetConsoleTextAttribute( hStdout, lpc + 1 );
WriteFile( hStdout, "H", strlen("H"), 0, 0 );
}
return 0;
}
542デフォルトの名無しさん:2005/08/26(金) 10:50:12
1+1=0 となる時もあれば 1+1=3 となる時もある。
それが、プログラムの世界。
543デフォルトの名無しさん:2005/08/26(金) 13:10:17
>>541
WriteFile()だとファイルにリダイレクトされたときに落ちるから
WriteConsole()の方が無難だと思われ。
544 ◆382ingG3ec :2005/08/26(金) 19:36:12
キタ━━━━━━(゚∀゚)━━━━━━ !!

神様ありがとう! さっそく組み込んできます! (`・ω・´)


共同制作は、面白そうなんだけど、
C言語覚え始めの私は、他の人のソースが読めないんでムリポ… orz
標準ライブラリの関数だけでも頭が混乱気味なのに、
<windows.h>が入ってくると、まるで呪文にしか見えません。
でもでも、みんなで協力してできたら勉強になるだろうし楽しそうだから、
中心になる人がいたら、企画立ててみると面白いかもしれませんね。
545デフォルトの名無しさん:2005/08/26(金) 19:39:36
共同開発は顔見知りのほうがいいなぁ、俺は。
って顔見知りに(時間のある)プログラマはいないわけだが。
546シープラ勉強中:2005/08/26(金) 20:22:24
>>537さんの提案の中に、
相変わらず>>521さんが勘定に入ってないのはワラタ
共同制作にはあこがれますけど、私のレベルじゃ無理です。
自分のプログラムですら常に手探り状態ですし。

マルチスレッド意味わからんぽ (ToT)
なんじゃこりゃ。

>>544
同意。<windows.h>なんてマジ呪文です呪文。
どこの天才があんなにいっぱい特殊な型作ったんだよまったく。

>>525は、winXPでもダメでした↓
http://49uper.com:8080/html/img-s/74372.png

あ、そうそう、 ◆382ingG3ec さんはまさか>>382さんですか?
547デフォルトの名無しさん:2005/08/26(金) 21:45:37
NT系でのエスケープシーケンス対策
ttp://kasai86.ld.infoseek.co.jp/dos/esc.htm
でもダメだった・・・

>546、他
企業の仕事は統率が取れてこそ意味があるもの。
なぜ統率が取れるかといえば、指揮系統がしっかりと存在していて、仕事の計画が
しっかりと出来ていて、仕様書や関係資料がしっかりと揃えられているから。

これはゲーム製作もプログラミングも同じこと。
構想・概要→企画立て→仕様決め→仕様詳細決め&関連資料・素材集め→(プログラミング・ゲーム本体の製作)→仕上げ

大体使うルーチンの仕様やクラス決めは仕様の段階で決めておき、なるべく余分なものは追加しないように。
仕様詳細の段階で関数の細かい仕様(関数リファレンスに書いてあるようなこと)とかクラスのメンバーとかは極力固定する。
データのフォーマットもこの段階で固定すべきだろう。

今になってこんな事言うのは酷かもしれないが、つぎはぎだらけだとどこか頓挫するので、そのときは最初からやり直したほうが良い。

(>546)
>windows.h
何人ものプログラマーが何ヶ月も話し合ってきた仕様から作られたんでしょ?
もっともあれはWindowsのプログラムを組むのに必要な「おまじない」だし・・・
MS発祥らしいハンガリアン記法(変数型1〜2文字+変数名)はその前からだけど。

Cは分かるがC++の段階ですでに呪文。継承や多態性の当たりでモウダメポ。
WindowsAPIなんてリファレンス読みながら使うもんじゃないかと思う。
548デフォルトの名無しさん:2005/08/26(金) 22:02:26
>>546
>同意。<windows.h>なんてマジ呪文です呪文。
>どこの天才があんなにいっぱい特殊な型作ったんだよまったく。
1年後の君もたぶん呪文を書いてます。

ある程度大きいプロジェクトなら必然的にたくさんの型ができるわけで。
549デフォルトの名無しさん:2005/08/26(金) 22:04:02
>>547
> 今になってこんな事言うのは酷かもしれないが

なに先走ってんのよ(笑

ここじゃ誰も共同制作してないし、誰も「やる」とは言ってない。
550382 ◆382ingG3ec :2005/08/26(金) 23:20:23
エスケープシーケンスの差し替え完了しました(`・ω・´)
お騒がせしました、これできっとだいじょうぶです。ダメだったら泣きます!
(ヘッダファイルの最後に ; を付け忘れて、一時間悩んだのは内緒です)
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0018.lzh


>>546
ノシシ はいはいはい、>>382です! ヨロシクです!

>>549
うん、見事にダレもヤルとは言ってないね、残念だけどw
でも、文脈からすると共同作業の話ではないんじゃと思うんだけど?
551デフォルトの名無しさん:2005/08/27(土) 01:53:05
>シープラ勉強中
ゲーム中にはまだ使われてなかったから気付かなかったが、
Player04.bmp 見るとけっこう人物の絵も進んできてるな。感心w
552シープラ勉強中:2005/08/27(土) 12:21:10
>>548
はやく呪文かけるようになりたい・・

>>550
凄い綺麗なんで感動しました。
コンソールでこんなに表現できるなんて驚きです。
私がコンソールでやるときは、最大限参考にさせていただきます。
念のためあぷ
http://49uper.com:8080/html/img-s/74545.png
http://49uper.com:8080/html/img-s/74546.png

>>382の段階ではCのことあんまわかってなかったっぽいのに、
もうこんなにできるなんて・・進むの早い人多すぎ。

>>551
あの絵はこのたびめでたくボツに決まりました ^^
ドット絵描ける人を尊敬しちゃう今日この頃。
553デフォルトの名無しさん:2005/08/27(土) 12:45:33
みんなに、いいことをおしえてあげよう。
妄想している時が 一番楽しい。
作ってる時が 一番長く、、
バグッた時が、 一番分けがわからず、
諦めた時が、 一番むなしい。

だが、作り上げた時に 手にする物に比べれば”上の物”などゴミなのですよ。
554デフォルトの名無しさん:2005/08/27(土) 14:29:53
>>553追加
ここをこうしろあーしろと言われるときが一番むかつく
完成品としてマスターCDを納入したときには、もう見たくない。
製品を手にしたときになって初めてお疲れさんと自分で思う。
555デフォルトの名無しさん:2005/08/27(土) 14:37:52
そしてスタッフロールに自分の名前を見て泣く
556デフォルトの名無しさん:2005/08/27(土) 15:02:15
プロなの?
557デフォルトの名無しさん:2005/08/27(土) 20:19:14
>>553-555と夏厨が申しておりました
558デフォルトの名無しさん:2005/08/27(土) 21:35:34
自分の名前すら載らないのが大半だがな
559デフォルトの名無しさん:2005/08/27(土) 22:11:50
>>553
なかなかの名言だ。
次スレのテンプレにしよう。
560デフォルトの名無しさん:2005/08/27(土) 22:17:25
それはちょっと嫌だ
561503:2005/08/27(土) 22:21:52
http://gamdev.org/up/img/3080.zip

スクロールできたぁあああ!!!
wikiの通りやるなら次はマップエディタか
ツクール素材使うなら重ね合わせがちょい難しいかもしれん


参考サイト
GamDevPukiWiki - マップエディタ
http://gamdev.org/w/?%5B%5B%A5%DE%A5%C3%A5%D7%A5%A8%A5%C7%A5%A3%A5%BF%5D%5D
GamDevPukiWiki - FF風RPGを作れ
http://gamdev.org/w/?%5B%5BFF%C9%F7RPG%A4%F2%BA%EE%A4%EC%5D%5D#content_1_6
562デフォルトの名無しさん:2005/08/28(日) 06:57:49
>>561の実行ファイルが動かなかったのは私だけ?
563デフォルトの名無しさん:2005/08/28(日) 07:42:52
>>562
俺も俺も
564 ◆382ingG3ec :2005/08/28(日) 07:49:43
ごめん、どうしても分からなかったんで教えて。
>>561 のを起動すると、【msvcr80.dllが見つかりません】って出てしまうんです。
で、どうもVisual Studio をインストールしないといけないらしいんですけど、
私のマシンだと旧式で貧弱なんでムリらしいんです。
で、必要な.dll だけ手に入れる方法とか、なにか別の方法ありますか?
565デフォルトの名無しさん:2005/08/28(日) 11:07:35
ttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=32360
ここにいろいろ書いてあった
msvcr80.dllは配布時に同梱しないと動かないっぽい
566デフォルトの名無しさん:2005/08/28(日) 11:30:55
リソースで引っかかってるのかなあ。
そんなヤバそうな関数使ってるようには見えないけど。
567デフォルトの名無しさん:2005/08/28(日) 12:13:27
cygwinでソース(一部cyg用に修正して)からコンパイルして動いたよ。
新しいコンパイラはランタイムにも新しいものが必要なの鴨
568デフォルトの名無しさん:2005/08/28(日) 13:59:18
>msvcr80.dll
VisualStudio2003 or VisualC++2003でWindowsAPIを直接使用しない関数使ってるなら
使用ライブラリを全てスタティックリンクにでもしない限り使われると思うけど・・・

設定変更で古いdll使うように出来ない?そういう設定があると思うんだけど・・・
569デフォルトの名無しさん:2005/08/28(日) 14:20:52
#pragma comment(lib, "msvcr80")
570503:2005/08/28(日) 21:12:37
http://gamdev.org/up/img/3088.zip

DLL付きでUPしました
特に新しい関数とか使ってないのでコンパイルの設定の問題かなぁと思ってます
>>568さんのいうとおり古いDLLを使う設定を探す方向で研究中
>>569さんの方法でやってみるとmsvcr80.libがないと言われ検索してみましたが見つかりませんでした
DLL添付でも動かないならBCCに戻そうかな
571 ◆382ingG3ec :2005/08/28(日) 21:30:10
どうも、.dllなしの表示はでなくなりました。
けど、プログラムが始まる前(?)に閉じてしまいました(涙
例えるなら初めて作った"Hello,world"の.exeをクリックした時のように…
DOSのコマンドからやってみても警告も何も起こらないで終了してしまいました。

う〜ん、なんででしょうね? 私のが98だからなのかなぁ…さっぱり分からない。
572デフォルトの名無しさん:2005/08/28(日) 22:00:46
動きました。ただしバグが・・・
・ある程度以上、左側に歩くとタイル表示の出方がまばらになり、さらに左へ歩くとアプリケーションエラーで異常終了
・ある程度以上、上に歩くとパタパタといった感じで地面のタイルが置かれていく。見た目に良くない
573デフォルトの名無しさん:2005/08/28(日) 22:01:49
>>572 それは仕様なのでは ^^
574デフォルトの名無しさん:2005/08/28(日) 23:51:57
>>571
ども
9x系ダメなのかなぁ
一応95でも大丈夫なようにAPI選んでます
TransparentBltとかは避けたのに意味なかったかー!!
もうちょっと調べてみます

>>572
スタート地点が表示できる一番左上なんです
それ以上左や上にいくと配列の添え字にマイナスが渡され・・・・(((( ;゜Д゜)))ガクガクブルブル
ちょっと酷いバグなんで直します(^^;
575シープラ勉強中 ◆ryjMYLsfPA :2005/08/29(月) 11:21:59
自分のプログラムが激しく暗礁に乗り上げてるので、
ちょっと気分を変えるために503さんのを改変してみました。
動きはまったく変わってないのですが、
>>566さんが指摘されてたリソース部分をできるだけ抜いてみました。
http://aploda.com/dl.php?mode=pass&file_id=0000023966
//★★--
//------
で囲まれてる部分が改変部分です。
とりあえず動いたのですが、、

なぜか実行するとCPU使用率が100%に!!

重いアルゴリズムではないので、100%なんてありえないと思うのですが・・。
>>570のは5%ぐらいでしたし。なぞです。

誰か、どうして100%になるのか教えてください〜 (T_T)
576デフォルトの名無しさん:2005/08/29(月) 13:17:34
>>575
Timerのインターバル変えたらどうなる?
それか、MainLoop()でSleepしてみるとか。
#私ゃMFC使いだからよく判らんが、WndProc()に連続して突入しているなら後者で変化があるはず。
577デフォルトの名無しさん:2005/08/29(月) 15:59:13
>>574
9xではUNICODEでビルドした奴は実行不可。

>>575
どこでどう違って負荷が違うかは知らないが、
単純に処理が重いだけ。タイマーインターバルを
もっと大きく取ると負荷が減るのが分かると思う。
ちなみに俺では>>570のも余裕で100%
578デフォルトの名無しさん:2005/08/29(月) 16:58:00
私の環境だと>575でも50%ジャスト。
Celeron1.2GHz256MBメモリWin2K
579デフォルトの名無しさん:2005/08/29(月) 22:39:34
飽きっぽい俺も参加してみる
WIN32APIは一昨日から勉強中
Cは入門書読んで足し算するだけのコンソールアプリ作ってウホウホ喜んだ程度
開発環境はMinGW + 萌ディタ

カーソルキーを押すと丸緑が現れて動きます
残像が残るのは影分身です
ttp://gamdev.org/up/img/3094.zip

言い訳:
コードは7割丸写し(でも手打ち)&中途半端
が、数学の宿題がほぼ白紙なので、そっちが落ち着いてからゆっくり直すつもり
引くに引けない状況をつくって三日坊主対策、ということでご容赦ください
580デフォルトの名無しさん:2005/08/29(月) 23:26:47
いらっしゃい
581デフォルトの名無しさん:2005/08/30(火) 03:41:54
>>503氏の3080.zip付属のソースを再描画関連をメインに改変してみました。
改悪かもしれませんが、少しでも参考になれば幸いです。
ちなみに、同梱のEXEはVC++6&non UNICODEでビルドしましたので、
9x系OSの方でも実行できるかと思います。

ttp://gamdev.org/up/img/3095.zip

開発者の皆さんガン(・∀・)ガレ!!
582503:2005/08/30(火) 06:13:35
http://gamdev.org/up/img/3096.zip
dllなしでも動き9xにも対応してると思われる版

設定いじってました。どうやらmsvcr80.dllなしで起動できたっぽい
・/MDを/MTに変更

UNICODEはNGと577氏にアドバイスをもらったのでそこからいろいろ調べてました
・2000/XPは内部がUNICODEなのでUNICODEを使ったほうが変換処理がいらないので動作が速い
・9x系は起動できないケースがある
・tchar.hを使えばMBCSとUNICODEで同じソースにできる
 charの変わりに_TCHARを使う
 文字列を_T(〜)で囲む
 オプション変更でMBCSとUNICODEどっちにでも出来る

というわけで大収穫です。みなさんありがとう。ちゃんと動かないほうが勉強になっていいですね(^^;

>>575
結構重いですよね〜
減色やFPS減らす前にもうちょっと見直してみるつもり
ツクール素材なので2倍にしなくてはならずStrechBlt使うともっと重くなりそう

>>579
しっかり動いてました。がんがれー!
ところで美乳ってなんですか?w

>>581
スクロールしてない場合はキャラクタと文字だけ画面更新してるんですね
知らないAPIもあったので調べながら読んでます
583579:2005/08/30(火) 11:55:10
>>582
美乳はおまじないです。萌ディタの文字コード判別が弱いので
一昔前からHTMLなど書いてる人には懐しい言葉かもしれません
ただEUC-JP用の呪文らしいのにSJISのファイルに効く理由は不明


デバッグ用にMessageBox仕掛けたら大量ダイアログ。
ぶぁぁぁぁあって出るの。恐い!きもい!
584デフォルトの名無しさん:2005/08/30(火) 13:19:30
きんもーっ☆
585:2005/08/30(火) 14:37:47
の元ネタ何?
586デフォルトの名無しさん:2005/08/30(火) 16:17:26
>>585
google://ネイサンズ
587 ◆382ingG3ec :2005/08/30(火) 18:13:30
>>582
OKです!
動いています、スムーズです。スムーズ過ぎて酔いそうです(笑

ってか。みんなの話についていけない…… orz
588シープラ勉強中 ◆ryjMYLsfPA :2005/08/30(火) 19:01:35
winAPIの海を泳ぎ中、マルチスレッドで溺れ死にかけました。
http://aploda.com/dl.php?mode=pass&file_id=0000024434
未だに音楽再生やってます。
_beginthreadex()でスレッドを作成、mciString()で鳴らしてます。

サンプルが全然見つからなかったので、もうてきとーにやっちゃったんですが、
ゲームのメインスレッドは作ったらゲーム終了まで永遠にwhileループして、
その中でSleep()でウェイトとってFPSコントロールして・・
って感じでいいんでしょか?
あと、私は_beginthreadex()でスレッド作ったんですが、
windowsだとCreateThread()を使ったほうがいいんでしょうか?
すみませんが、どなたかよろ m(__)m

>>576 >>577 >>578
16*16のマップチップを40*30個敷き詰めて、FPSは 1000/20=50 でぐらい?
で100%はちょっとおかしいと思ったのですが、そうでもないんでしょかねぇ。
ちなみに>>577さんのスペックはどんな感じなんですか?

>>579
いらっさい♪

>>587
実は私は>>382さんぐらいできるなら、もうwindowsプログラムに進んだほうがいいと思ってます。。
589デフォルトの名無しさん:2005/08/30(火) 19:19:55
>>588
_beginethreadexの方がいい
CreateThreadだとメモリリークすることがある
590シープラ勉強中:2005/08/30(火) 20:37:27
>>589
お、ありがとうございます m(__)m
てゆか、メモリリークてw
マルチスレッドは不思議がいっぱいです。
591579:2005/08/30(火) 20:39:02
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0019.zip
・丸緑が分身しなくなった
・夜になった
・見よう見まねでいろいろやった

*予定は未定
 マップだけスクロールするようなものを作る
 自機を中央に固定してマップを動かす
 ビットマップの指定色を透過
592デフォルトの名無しさん:2005/08/30(火) 20:40:38
あ、up0020.zipでした
593デフォルトの名無しさん:2005/08/30(火) 21:26:41
CreateThreadはWin32APIなのでCランタイムの初期化をしないというか範疇外であり、
そのままではCランタイムがマルチスレッドを考慮しない状態になってしまうため
新しいスレッドでCランタイムライブラリを使う場合はCランタイムライブラリに入ってる(とはいってもMS独自の関数だが)
_beginthreadex(_beginthread)を使う必要があるという話とはまた違うのかな?
594デフォルトの名無しさん:2005/08/30(火) 21:38:48
>593
そう、それの事
だから、スレッド内でCランタイム関数を全く使わずに
Win32APIのみ使うならば問題は起きないけど、
スレッド内でCランタイム関数を使うと
結果的にメモリリークを引き起こすという話
595デフォルトの名無しさん:2005/08/30(火) 22:10:58
ただしCランタイムにDLLを使えばDllMainが通知を受け取れるから平気とか書いてあったような気がしないでもない。
596 ◆382ingG3ec :2005/08/30(火) 22:54:44
たぶん週末まで来れないので途中経過こっそり置いときます。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0021.lzh

>>588 スシ食いねえ。(^^ゞ (実は私はポインタの使い所もよく分かっていない素人です。)
597デフォルトの名無しさん:2005/08/31(水) 03:09:08
>>379 ◆ErakzB51PM
>>497 デフォルトのたぬきさん
>>582 503
>>588 シープラ勉強中 ◆ryjMYLsfPA
>>591 579
>>596 ◆382ingG3ec

最終UPレスを抽出してみた
もし抜けてたらスマヌ
598503:2005/08/31(水) 05:11:42
http://gamdev.org/up/img/3108.zip
速度UPしまくりんぐでCPU使用率低減

WM_PAINTじゃなくてもBMPの読み込みや作成が出来るみたい
なので起動後に一度だけするように変更しました
ウィンドウにマウスカーソル乗ってる場合だけ
CPU使用率がやたら高くなる場合があるけどなぜだ〜

>>583
Yahooにアクセスしたときに京って返してくる謎がやっと解けた……

>>586
ネイサン、事件です!
ぐぐったら同じネタ思いついた奴イパーイいた(´・ω・`)ショボーン

>>587
今回もっと凄いです!

>>588
ラグとかないです〜

>>591
快適に動いてます。透過勉強中です〜ヽ(・∀・)人(・∀・)ノナカーマ

>>596
windows2000で動いてます。凄い!!
599デフォルトの名無しさん:2005/08/31(水) 06:10:26
>>598
兄さん…メモリリークしてまっせ…
600デフォルトの名無しさん:2005/08/31(水) 06:14:49
すまん勘違いだった。使用メモリが単調増加してるように見えたので。
601503:2005/09/01(木) 07:53:43
http://gamdev.org/up/img/3113.png
マップチップの拡大できたぜイヤッハー!!

マップチップ1枚ごとにStretchBltで拡大してみたけど遅すぎて無理
高速化のため起動時に拡大したビットマップを作った
メモリは余分に使うことになったが、メインループでStretchBltを使わずに済んだ
おかげで以前と変わらぬ速度をキープ

>>561で作る気になっていたマップエディタにはまだまだ着手できねぇええええええええ
602デフォルトの名無しさん:2005/09/01(木) 08:41:34
>>601 お見事!
603503:2005/09/01(木) 23:27:32
http://gamdev.org/up/img/3118.png
透過勉強中

モノクロビットマップの作成に成功
BitBltを使う時にSetBkColorを設定すれば特定の色を白、それ以外を黒にできて便利
さらにのNOTSRCCOPYを使えば白と黒を反転できるのでスクリーンショットのようになる

いかにもゲーム作ってる気分になってきた
604503:2005/09/02(金) 00:53:54
605デフォルトの名無しさん:2005/09/02(金) 01:44:09
>>604
ちゃんと透過処理出来てますね。
あとは工夫してCPU負荷を抑えることができれば。
606デフォルトの名無しさん:2005/09/02(金) 16:50:29
>>604 お見事!
607デフォルトの名無しさん:2005/09/02(金) 20:28:49
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0022.zip

1秒ごとにランダムなマップをへこへこ描画するようになりました
クラスがもうわけわかんない

*予定は未定
 土日中にスクロールするものを作る(チップ単位の予定)
 ウィンドウサイズをきっちりする
 キャラクターを表示する
608579:2005/09/02(金) 20:40:37
コテハン記憶してなかった
上のは俺です

ビットマップハンドルをどこで管理すればいいのか
609 ◆382ingG3ec :2005/09/02(金) 23:28:26
みんなスゴイなぁ…
私は自分のソース見ていてちょっぴり鬱になったので、土日で書き直しをする予定です。
スパゲティはキライです、でも、ワケワカメはもっとキライです。orz
610デフォルトの名無しさん:2005/09/03(土) 22:31:22
もう9月4日か orz
611デフォルトの名無しさん:2005/09/03(土) 23:00:59
>>609
この際ワカメスパゲッティを食べなさい
612579:2005/09/04(日) 21:14:00
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0023.zip

とりあえず下キーで下にだけスクロールするようなものができました
10回ほどスクロールすると配列の外にアクセスするはずなのに普通に表示されるのが怖い

BCCとGCC(+strip)では実行ファイルのサイズが10KBほど違うのはどうしてだろう

*予定は未定
 4方向スクロール
 マップの端まで来たらスクロールしない
 ソースが自分でも読めなくなってきたので書き直す
613 ◆382ingG3ec :2005/09/04(日) 22:09:15
ソース書き直し終わりました(`・ω・´)
次はメッセージ部分をやる予定です。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0024.lzh
614デフォルトの名無しさん:2005/09/04(日) 23:02:49
ヘッダファイルに実装書くなよ。
615デフォルトの名無しさん:2005/09/04(日) 23:55:08
ぎくぅ(|| ゚Д゚)
616デフォルトの名無しさん:2005/09/05(月) 08:07:01
書きまくりんぐww
617デフォルトの名無しさん:2005/09/05(月) 08:17:01
614の流れ弾が各地に甚大な被害を……
618デフォルトの名無しさん:2005/09/06(火) 23:28:09
ひどいコードだな。
うちの委託先のバカコードより、輪をかけてひどいな。
619デフォルトの名無しさん:2005/09/06(火) 23:40:20
おいおい、プロと比べるなよ
620デフォルトの名無しさん:2005/09/07(水) 01:30:28
プロなんてピンキリだぜ…
621デフォルトの名無しさん:2005/09/07(水) 02:33:55
添削してやれよ
口だけってことにされちゃうぞ
622デフォルトの名無しさん:2005/09/07(水) 04:47:47
実際口だけだからそれは無理w
623デフォルトの名無しさん:2005/09/07(水) 06:53:29
なにか気付いたなら具体的に指摘してあげなよ。
否定だけの意見なんて非建設的だよ。
624デフォルトの名無しさん:2005/09/07(水) 07:26:39
だから口だけの人にそんな「むずかしい」要求しちゃダメだって。
625デフォルトの名無しさん:2005/09/07(水) 08:05:52
口だけとかいう流れもアレなんで、
及ばずながら>>612の実装と定義を勝手に分けてみますた。(CMap.cpp, CGame.cpp追加)
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0025.zip
626デフォルトの名無しさん:2005/09/07(水) 16:52:51
>>625
おつです。でもファイル増えたら管理めんどくさくなるぅ (^_^;
627デフォルトの名無しさん:2005/09/07(水) 17:28:55
なんか初々しい
100行程度の何もしないウィンドウに驚いてた頃の俺みたいだ
将来的に何千何万行のコードを自分で書くというのに
628デフォルトの名無しさん:2005/09/07(水) 17:31:50
何千万行ってすごいですね
一日に何行ぐらい書いてますか?
629デフォルトの名無しさん:2005/09/07(水) 18:19:34
一日何行てww
630デフォルトの名無しさん:2005/09/07(水) 19:04:52
毎日1000行書いたとすると、1年で30万行、10年で300万行、30年で1千万行くらいだな。
631デフォルトの名無しさん:2005/09/07(水) 20:21:01
ソース再利用コピペもカウントしていいんだよな
632デフォルトの名無しさん:2005/09/07(水) 20:54:32
殆どコピペからスタート。
寧ろ、次にそうできるように心がけて作品を作る。
633デフォルトの名無しさん:2005/09/07(水) 21:14:21
普通リファクタリングで成果として残る行数自体は小さくなるけどね。
何年かかけて100万行くらい書いたつもりだけど
残ったのは20万行いかない。
634579:2005/09/07(水) 21:51:43
ヘッダファイルと実装を分けた
4方向スクロールができるようになった
(スクロール量が)多い日も安心、(チップが)ズレない(配列外に)漏れない

*予定
 週末までにソースをできるだけ綺麗にする
 マップエディタ作りたくなってきた
635デフォルトの名無しさん:2005/09/07(水) 23:12:53
ほんとは>>175見たいなのが、スレを引っ張っていってくれるといいんだがな。
今の流れはRPGつくるスレというよりWin32API&C/C++のお勉強スレだもんな。
636 ◆382ingG3ec :2005/09/07(水) 23:19:10
みんなスゴイなぁ。こっちは千行に満たないソースでもがいていますよ。
早く魔法使いになりたい。…ってことで、定期上げです。

http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0026.lzh
メッセージを出してみました。
ついでに無理やりエンデングも(♀の所に行って下さい)
課題:ソースが怪しい。コマ抜けが(ry
予定:課題をなんとかしたいなぁ…
637 ◆382ingG3ec :2005/09/07(水) 23:21:10
>>635 あ〜、ゴメン。私は思いっきり「C言語の勉強のため」にやってます(^^ゞ
638シープラ勉強中:2005/09/08(木) 16:25:12
あれ?ここはRPGを作りながら
C/C++やWin32APIを学ぶスレってことでいいんですよね
てゆかWin32むずかすぃ。
むずかしい上にブラックボックスいじってても楽しくない。。

>>637
http://aploda.com/dl.php?mode=pass&file_id=0000027166
なんか、みるみるゴージャスになっていきますね。
超えられない壁ってのがウケた。
私はコマぬけなかったっぽいですよん。
639デフォルトの名無しさん:2005/09/08(木) 17:05:35
>>638
APIが難しいならMFCを使えばいいじゃない。
#少なくとも横着はできる。
640デフォルトの名無しさん:2005/09/08(木) 17:22:18
RPGを作るスレっていうのも想像できないなー
絵描いたりシナリオ組み立てたり?
いつかやるんだろうけどまだプログラムがなぁ
641デフォルトの名無しさん:2005/09/08(木) 18:01:39
RPGのエンジンを作るスレでいいじゃない
642デフォルトの名無しさん:2005/09/08(木) 18:17:23
別にどんなスレか決めなくてもいい
643デフォルトの名無しさん:2005/09/08(木) 18:36:59
>>639
でも、APIを理解しないままMFC使うっていうのも、結構苦痛な気がするな。
644シープラ勉強中 ◆ryjMYLsfPA :2005/09/08(木) 21:32:21
http://aploda.com/dl.php?mode=pass&file_id=0000027244
最近503さんが透過処理をしてたのを見て私もやってみました。
背景透過は難しそうだったから、ずーっとほっぽってたので・・
まだ実用には耐えらるデキではないのですが。

お勉強がてら絵も動かしてみました。
作ってる途中、こういう捨てクラスをてきとーに作ってもC++力は
上がらないんじゃないかと考えてしまって鬱に orz

>>639
C#とかMFCは楽ちんそうなので、
いずれやってみようとは思ってるんですけど。
ただ今は簡単なAPIもよくわからないので、
せめて子ウィンドウぐらいはちゃんと作れるようになってからと思ってます。
あー、道のりは長いです。。ども。

>>640
そうそう、プログラムがねぇ。
645デフォルトの名無しさん:2005/09/08(木) 21:37:44
素材サイト様の絵は凄く綺麗なので、動かすとなんだか楽しくなりますね。
自分のプログラムレベルが上がったような気になるよ。錯覚ですけど。
絵が描ける人はみんな尊敬しちゃう。
646デフォルトの名無しさん:2005/09/08(木) 22:58:30
>>644
マリオ作れそうだな。こういうふうにちっさいプログラムたくさん作るほうが勉強にはなると思う。
しかしクラスは使ってるものの、まだまだ構造化プログラミングの域を脱してない感じでござるよ、忍忍。
もうちょっと機能ごとに関数やクラスを細かく分けてもいいんジャマイカ。

たとえばCPlayer::Moveとかね。でかすぎ。関数名から連想される範囲の挙動ではないよ。詰め込みすぎ。
あと、小さいプログラムとは言え、マジックナンバー多すぎ。ちゃんと定数定義しろよぅ…
俺がピー子なら、たぶんあなたの鼓膜破れるね。
647579:2005/09/08(木) 23:09:19
面倒なことはとことん後回しにする主義だが、そろそろツケが回ってきた様子
作る時間が制限されそうなので出来たものだけ投下しておきます

ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0027.zip

カーソルキーで4方向にスクロール
1,2,3キーで意味なくスクロール速度が変わります

*優先度順の予定(未定)
 マップデータとマップチップのフォーマットを決めて描画部分を書き直し
 土日で透過できるようになったらいいな
 マップエディタは青写真だけ描いておく


>>646
もし俺があなたにダメ出しされたら脳ごと破裂しそうです
648646:2005/09/08(木) 23:55:11
ドヒャヒャヒャ!脳みそ!ズル出してやるッ!

>if (!(scrollDirection % 2)) { //DIR_UP or DIR_DOWN

こんな、定数の値に依存した判定してたんじゃ、マジックナンバー使うのと変わらんから
定数といっしょにマクロ(or関数)定義しとけよ…
 #define IS_HORZ(dir) ((dir)%2==1)
 #define IS_VERT(dir) ((dir)%2==0)
みたいな。

あと、CGame::GetKeyの名前は変えたほうがいいと思う…

あと、WM_PAINT以外のところで BeginPaint 使っちゃダメだよ…

あと、CMapの変数を外部から直接いじってんじゃねーー!クラスの意味ねーだろ禿げ!ボケ!美乳!m9(^Д^)プギャー
構造体として使うスタンスならいいけどさ…理解しにくいよ…
649デフォルトの名無しさん:2005/09/09(金) 00:10:57
DirectXでRPG作るってことではなくて?
650デフォルトの名無しさん:2005/09/09(金) 00:45:55
そりゃダメ出しっていうより煽りだな
651デフォルトの名無しさん:2005/09/09(金) 00:54:19
またsscanf厨か
652シープラ勉強中:2005/09/09(金) 19:24:45
>>646
ひぃー、耳がああぁぁー!! (((;゚Д゚)

マジックナンバーは行き当たりばったりで作ったフラグとか、
行き当たりばったりで作ったアニメチップ指定用番号とか、
行き当たりばったりで作ったウェイトなんかが全部それかと。。

CPlayer::Move()が長くなったのは、
最初は左右に移動する程度の動きしかもたせないつもりだったのですが、
行き当たりばったりでジャンプとかつけたせいでどんどんどんどん長くww

構造化プログラミングってのは始めて聞いた単語だったのでwちょとググってみたのですが、
飛ばし読みしまくったためか特徴がイマイチよくわからず orz
上から順番どおりに処理するとか (入力→動作→表示みたいな・・)
gotoをあんま使わないとか、ごく普通のことが書かれてたような。。
欠点は通過する処理が多くなるとかなんとか・・

>>579
美乳さん、着実に進化してますね。綺麗にスクロールしました!
今後はCGameクラスにゲームで使いそうなオブジェクト達を集めるんでしょか?
なんか私と違う組み方っぽいので興味津々。
てゆか、私がおかしいのか。。
653646:2005/09/09(金) 21:20:12
>>652
いや、アニメチップとかは仕方ないねん。ウェイトもまぁ気にしないねん。
フラグ管理が糞やねん!絶対自分でも忘れるだろこのド低脳がーーー!!!
ビット演算なんかちまちま使ってねーで種類ごとにboolなりintなりlong longなり使いやがれ。
それで速度がコンマ何%変わることに何の問題があるかって話だ。

あと、ひとつのメソッドで何もかも処理してたんじゃクラス使う意味がねーんだよー。
言葉で伝える自身はねーからソースを示してやる。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0028.txt

>構造化プログラミングってのは始めて聞いた単語だったのでwちょとググってみたのですが、
>飛ばし読みしまくったためか特徴がイマイチよくわからず orz

ごめんなさい、構造化って言ってみたかっただけです。俺もよくわかってません。
要するにオブジェクト指向には程遠いよ、ってことだす。
654646:2005/09/09(金) 21:21:41
ソース訂正 isPushed→isPushing
655デフォルトの名無しさん:2005/09/09(金) 22:15:49
一応突っ込みいれておくけど、構造化とオブジェクト志向は共存し得る概念だからね。
656646:2005/09/09(金) 22:25:54
俺の脳も破裂した
657デフォルトの名無しさん:2005/09/09(金) 22:35:37
>>655
というかメソッド内では結構構造化してると思う
658579:2005/09/09(金) 23:29:33
>>648
耳から脳漿が噴出したくらいで済みました
GetKeyは入力回りを書き換ようかと思ってるのでなくなると思います
CGameからCMap::MoveやCChar::Move(予定)を呼んで各自で判定するような方向で
ほかはざっくり修正しました

>>652
>CGameクラスに〜
今のところは漠然とそんな方針です
オブジェクト指向的なのかどうか分からないので急に方向転換するかもしれませんが


・マップとかの仕様を適当に決めた、というか実装を書いたあとから泣く泣く仕様変更する
・1日に書いたコードを書き直す確率が150%。一度書き直してもう一度書き直す確率が50%の意味
659シープラ勉強中:2005/09/10(土) 08:45:48
>>653
なるほど、入る処理と入らない処理が明確で凄くわかりやすい!
細かく関数化しといたほうが柔軟性も高そう!
激しく参考にしまっす。どもありがとー。
660名無しさん@そうだ選挙に行こう:2005/09/11(日) 12:05:39
>>652
君が構造化プログラミングだと思っているのは構造化定理だ。
プログラムの停止性検証とかの話題がホットだった頃のものだ。
停止性ってのは、プログラムの無謬性を検証するための一分野。

構造化プログラミングというのは、乱暴に言えば、高凝集疎結合を目指すテクニックのこと。
オブジェクト指向言語で開発していて「構造化できていない」と言われたら、クラス間の依存関係が強すぎるということで、カプセル化がなってない。
661579:2005/09/11(日) 17:59:23
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0029.zip
おざなりにキャラクター表示するようになった
クラスがやたらに増えた

今後の予定は透過とエディタってずっと言ってる気がする

>>660
もう3倍くらい乱暴に言ってもらわないと俺には理解できないです
662 ◆382ingG3ec :2005/09/11(日) 21:45:53
定期上げです。戦闘とか地味な改良を付け足しました。
ゲームバランスは知りません。レベルアップもありません。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0030.lzh

>>638
いつもありがとう〜!
コマ抜けはパソコンの処理能力が問題っぽいです。
ヘタレPCでもOKなスリムなプログラムを組まないとダメらしいです…orz

構造化とかオブジェクト指向とかの概念は、さっぱり分からない…orz
C++を勉強すれば分かるようになるのかなぁ?
663名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:12:47
Javaから始めるのも手だ
664名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:32:44
そこでJavaを出す意味がわからない。
665名無しさん@そうだ選挙に行こう:2005/09/11(日) 22:47:44
構造化はルーチンを部品化して、その組み立てで様々なソフトを簡便に組めるように
するとともに各部品をブラックボックス化することで保守を容易にする。
オブジェクト指向はオブジェクト(制御する項目やリソースなど。GUIのWindowやアイコン、ボタン、表示など)を中心にプログラムを組むこと
classは構造化を容易にし、オブジェクト指向なプログラムを組みやすくするのに必要。
とはいえ継承や多態性は少々面倒かもしれない(習得しないclass使いこなせないけど)
666デフォルトの名無しさん:2005/09/12(月) 09:53:11
>>661
えーと、検索できるようにキーワードを出してあげたというくらいのつもりなのだけれども。
667579:2005/09/13(火) 00:02:57
>>666
いきなり停止性とか無謬性とか言われて面喰らってしまったわけです

透過できた
CSurfaceと派生クラスを整理した
windresの使い方を理解した
668デフォルトの名無しさん:2005/09/14(水) 22:51:34
>>663
Javaは俺が作ってるから要らないよ
C++でやらなきゃすみわけが出来んでしょ
669 ◆382ingG3ec :2005/09/14(水) 23:15:25
定期上げです。「c:使う」コマンドを作りました。あと$の所でアイテムもらえます。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0031.lzh

今後の課題
 ・敏捷UPの効果が永続的なのはマズイですよね?
 ・敵をてきとうに復活させたいなぁ(動かすのはムリポ)
 ・メッセージの整理(ソースに直書きした方がいい?)
 ・全体的なソースの整理
今後の予定
 ・とりあえずソース整理からかな…

>>663 >>668
あ〜。私の場合はPCの性能的にJavaはムリポなので、
やるとしても C++ & Win32api になると思います。
けど、今はC言語(の標準ライブラリ)で精一杯なんで… orz
とりあえず、あれこれ見てみて、
構造化とか色々な概要は分かった、ような気がします。
この手のノウハウって色々応用できそうだけど、
理解したとしても実践するのは難しそうですね。
670デフォルトの名無しさん:2005/09/14(水) 23:29:38
JavaはOpenGLやDirectXを標準で使うから無理ってことは無いけどな
Win32APIで画像処理するくらいならJavaのが速い
671デフォルトの名無しさん:2005/09/15(木) 00:39:36
速いか?
672デフォルトの名無しさん:2005/09/15(木) 00:44:12
Javaが遅いのは起動だけ
673デフォルトの名無しさん:2005/09/15(木) 01:56:53
計算も遅い
674デフォルトの名無しさん:2005/09/15(木) 04:46:21
いまさらJavaなんて遅い。
675デフォルトの名無しさん:2005/09/15(木) 04:48:32
今はVB9がナウイ
676デフォルトの名無しさん:2005/09/15(木) 23:38:56
Javaを毛嫌いしてる人は何もかもがスペック不足に見えるからな
最速目指すならD言語使っとけ
677デフォルトの名無しさん:2005/09/15(木) 23:40:30
ネイティブコンパイラ使っても遅いの?>Java
678デフォルトの名無しさん:2005/09/15(木) 23:45:33
別にJavaを毛嫌いするわけじゃないが、そこまで執着するほどの可能性も見出せない。
679デフォルトの名無しさん:2005/09/15(木) 23:47:19
JIT使うJavaがCより演算で劣るということはないよ(どっちもネイティブ)
どちらにしろこのスレはC++で作るスレなんだから、話を戻そうや
680デフォルトの名無しさん:2005/09/16(金) 00:05:08
言語厨が混じるとこうなる
681デフォルトの名無しさん:2005/09/16(金) 00:06:44
言語の速度を言うなら、C++はCの95%ほどの速度だと言われてる。
682デフォルトの名無しさん:2005/09/16(金) 00:08:41
どうでもいい
683デフォルトの名無しさん:2005/09/16(金) 00:17:12
クラス図は無いの?
684デフォルトの名無しさん:2005/09/16(金) 00:28:49
甘えるな
685684:2005/09/16(金) 00:29:43
ゴメン誤爆した
686デフォルトの名無しさん:2005/09/16(金) 00:34:00
絶妙だなおいww
687デフォルトの名無しさん:2005/09/18(日) 20:53:38
速度、速度って…
688デフォルトの名無しさん:2005/09/18(日) 20:57:28
リベンジしていい?

クラス図は無いの?
689 ◆382ingG3ec :2005/09/18(日) 21:18:53
定期上げです。見た目変わっていません。内部はじみ〜に色々と直しました。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0032.lzh
今後の予定:メッセージの整理はこれからやります。


>>670
あ〜、ゴメン。勘違いしてました。
調べなおしたら私の環境でもムリポではなかったです。
でもどちらにしても、当分は手を出せそうにないけれど…

速度はよく分からないけど、Javaだと画像の透過処理が楽そうでいいですね。
ってか、この手の話はスレ違いになりそうかな(^^ゞ

>>688
リベンジということは、先輩でしょうか? よろしくです!

クラス図は >>19>>21 にあるだけ、かな?
前スレは見ていないので分かりませんが。
(実は私がクラス図の意味をイマイチ分かっていないってのは内緒です)
690デフォルトの名無しさん:2005/09/18(日) 21:26:52
>>689
int main(void)
{
   (void)Clear();
ここまで読んだ。

何このキャスト? lint ツール使ってんの?
691デフォルトの名無しさん:2005/09/18(日) 21:57:36
>>19 >>22 は作り方にちょっと疑問を感じる。
描画や音声はコントロールされる側なんだよな。
実際にコントロールするのはシナリオ、入力、イベントの3つのはず。


「進行スクリプト」という名のルートシナリオがまずあって
「シーン」という場面を切り替えてゲームを進行する。

シーン毎に「シナリオ」、「入力」、「イベント」のコントローラーがあって
それらコントローラーは黙々と「チップオブジェクト」や各種「データ」を生成、管理する。
そのためシーンはオブジェクトを管理するための「スクリーン」を持つ必要がある。

しかし "スクリーンは" あれこれ付け替えると描画処理に負担がかかるから
一定の規則を持った "複数レイヤーの配列としてルートオブジェクトにする" べきである。
したがってシーンが持つべきはスクリーンを掃除する「大道具」である。

「照明」さんや「音響」さんは「アクター」の演技によって生じる「SE」を「タイミングイベント」によって鳴らし
シーンの終わりに「幕担当」さんが彼ら裏方(大道具、照明、音響)と一緒にシーンを切り替える。

優れたシナリオが"描け"れば、優れたゲームエンジンにランデブれるぜ・・・!?
692デフォルトの名無しさん:2005/09/18(日) 21:58:57
なんか途中で魔が差して変になった。ま、いいか
693デフォルトの名無しさん:2005/09/18(日) 21:59:51
しゃれか
694デフォルトの名無しさん:2005/09/18(日) 22:11:40
モデル:スクリーン、シーン、チップ、データ等
ビュー:描画、音声、ファイル出力等
コントローラ:シナリオ、入力、イベント

この分類の仕方で行けば使いやすいエンジンに育て上げることができるよ。
シナリオクラスをどう仕上げるかが一番の腕の見せ所。
695デフォルトの名無しさん:2005/09/19(月) 04:56:42
どうでもいいけど>>22の出典はこれな
ttp://www.radiumsoftware.com/0307.html#030702
696デフォルトの名無しさん:2005/09/19(月) 11:49:11
>>695
「ドアに話しかける」がどうしてまずい設計なのか良くわからないな
697デフォルトの名無しさん:2005/09/19(月) 12:02:25
>会話の必要なクラスはすべて「NPC」クラスの下に派生されるようになっていた
のに
>「ドア」と会話する必要が出て
くると、
>「ドア」クラスが「NPC」クラスとはまったく異なった「枝」に継承されていた
ときまずいんでないの
698デフォルトの名無しさん:2005/09/19(月) 12:20:04
>>697
うん、でも継承させればいい話。

話しかけるって言うのはいわば方言で
そのオブジェクトに対して「普通一般的に行う行動」を
Talkというメソッドにしてるだけでしょ?
699デフォルトの名無しさん:2005/09/19(月) 12:25:30
×うん、でも継承させればいい話。
○うん、でも「NPC」クラスに継承させればいい話。
700デフォルトの名無しさん:2005/09/19(月) 13:10:02
>>696,698
「ドアに話しかける」は設計じゃなくて仕様に含まれる挙動。
その挙動を自然に表せなかった設計(単一継承ツリー)が悪いって話。
701デフォルトの名無しさん:2005/09/19(月) 13:43:44
最初そうではなかったのだが、あとから仕様として追加されたってことかな?
全てのチップオブジェクトにMeddle(action)を追加するようにすればこんな問題にはならないな。
※Meddle 弄くる、干渉する
702デフォルトの名無しさん:2005/09/19(月) 14:18:38
>>701
あははー。浅はか過ぎる。 >695 のリンク先読んでから言ってんの?
703デフォルトの名無しさん:2005/09/19(月) 14:27:47
読んでから言ってるけど?actionに対するパーサを節となるベースクラスが拡張すれば良いだけ。対応してなければ無視。
704デフォルトの名無しさん:2005/09/19(月) 14:33:26
>>703
すべての基底となるベースクラスに Do(action) を追加すれば、もっといいってこと?
確かに各オブジェクトが action に対するパーサを拡張するだけで何でもできる。
705デフォルトの名無しさん:2005/09/19(月) 14:45:09
>>704
そう、すべての基底となるベースクラスがprotectedなパーサクラスをコンポジットしてる。
単なる岩だってこちらから触ることは出来るでしょ。反応がない=触れないじゃない。
706デフォルトの名無しさん:2005/09/19(月) 14:59:30
Doそのものをパーサとしたほうがいいかw
707デフォルトの名無しさん:2005/09/19(月) 15:02:43
>>705
自由に作成できる action や拡張可能なパーサを設計するのは、簡単な話なの?
問題が action やそれに対するパーサの設計に移っただけな気がする。
708デフォルトの名無しさん:2005/09/19(月) 15:14:26
talk (Tip* tip) {
tip->Do(this, ACTION_TALK);
}

Do(Tip* tip, action) {
if (tip->GetGroup() != group) {
System.Message("噛み付かれた。");
System.AttackResult(this,tip,MSG_ATACK);
}
}
709デフォルトの名無しさん:2005/09/19(月) 15:14:42
おりもやってみていいですか。
710デフォルトの名無しさん:2005/09/19(月) 15:16:22
MSG_ATACKって何だろw
BITE_ATTACKとかそんなんか、Skillクラスあたりだな
711デフォルトの名無しさん:2005/09/19(月) 15:22:34
talk() {
Tip *tip = System.CurrentPos(this, direction);
if (tip != NULL) {
tip->Do(this,ACTION_TALK);
}
}

こっちでいいか。汎用的になった。
712デフォルトの名無しさん:2005/09/19(月) 15:27:40
>>709
やるがよい。
713デフォルトの名無しさん:2005/09/19(月) 18:48:03
tipなのかchipなのかハッキリしてくれ。
714デフォルトの名無しさん:2005/09/19(月) 19:24:35
それはいい指摘だ
715デフォルトの名無しさん:2005/09/19(月) 19:38:12
vip
716デフォルトの名無しさん:2005/09/19(月) 21:59:50
pip
717デフォルトの名無しさん:2005/09/19(月) 23:19:23
エレキ版!
718デフォルトの名無しさん:2005/09/19(月) 23:37:52
チップが鼻が黒い方、デールが鼻が赤い方。
719デフォルトの名無しさん:2005/09/20(火) 18:04:16
ガタガタ逝ってないで、クラス図晒せる輩は居ないの?
720 ◆382ingG3ec :2005/09/20(火) 19:07:32
素朴な質問:クラス図作らずにRPGを作るのは無謀ですか?


ってか。あいかわらず話についていけてません… orz

>>690
キャストは飾りです。
作りはじめの時に自作関数が目立つようにくらいの軽い気持ちで付けてただけです。
……無意味なので、こんど消しときますね。

ちなみにlintツールは使っていません。作製環境は BCC + HC_Editor です。

ところで最近ちょっと気になってるんですが、getsを使いまくっているのは邪道ですか?
いや、ダメ出しされても既に直す気力が湧かないくらい使いまくってるんですけど。
それなりに対処しているつもりなんで、いいですよね? イイトイッテクダサイ orz
721デフォルトの名無しさん:2005/09/20(火) 20:20:33
BOOSTのインストールがうまく行かない…
こういうことあるとJavaを褒めたくなるな
722デフォルトの名無しさん:2005/09/20(火) 20:41:57
>>720
>作りはじめの時に自作関数が目立つようにくらいの軽い気持ちで付けてただけです。
#define call
call Clear();

>ところで最近ちょっと気になってるんですが、getsを使いまくっているのは邪道ですか?
邪道って…意味わかってんのか?

>いや、ダメ出しされても既に直す気力が湧かないくらい使いまくってるんですけど。
ラップすれば直すのは簡単だろ。

こういうの↓作って

char *gets10(char *buf)
{
 char* p;
 fgets(buf,10,stdin);
 p=strchr(buf,'\n');
 if(p)*p='\0';
 return buf;
}

ファイル全体の gets を gets10 に一括置換すればいいだけの話。
723デフォルトの名無しさん:2005/09/20(火) 22:54:13
クラス図書くのにいいツールない?
724デフォルトの名無しさん:2005/09/20(火) 22:57:10
Flash
725デフォルトの名無しさん:2005/09/20(火) 23:38:24
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 時代はインタラクティブUMLですよ

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < 手間かかるもん作らせんな
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
       ̄   =======  \
726デフォルトの名無しさん:2005/09/20(火) 23:42:58
いやFlashはGIFやPNGを吐き出すのにも使えるから便利だよ
拡大縮小絞込みなどが出来るUMLってのも興味あるけどw
727デフォルトの名無しさん:2005/09/20(火) 23:56:30
ベクタとして保存したいわけだが。
728デフォルトの名無しさん:2005/09/21(水) 00:07:04
swfはめっさベクター。
729デフォルトの名無しさん:2005/09/21(水) 00:17:38
FLASH以外になに試した?
730デフォルトの名無しさん:2005/09/21(水) 00:21:28
普通にEXCELでええやん?
731デフォルトの名無しさん:2005/09/21(水) 17:28:45
開発者減ってね?
732684:2005/09/21(水) 17:34:15
むしろ増えてる
733デフォルトの名無しさん:2005/09/21(水) 18:50:39
今何人?
734デフォルトの名無しさん:2005/09/21(水) 18:54:21
JavaはUML⇔ソースの変換が出来るツールがあるけど
C++だと無いんだよな
735 ◆382ingG3ec :2005/09/21(水) 19:19:40
>>722
そうか! そういう手がありましたね!
んじゃ、そんな感じで直しいれてみます。

邪道って使い方おかしかったですか?
深刻なバグになりかねない gets を使うのはプログラマ失格だみたいな、
鼻息の荒い意見を見たもので、ちと鬱になってたんですよ。…グチってゴメン。


>>733 ノシ はいはいはい、点呼1です!
736デフォルトの名無しさん:2005/09/21(水) 19:55:41
ちなみにC++ならよりちゃんとしたラッパを作れる。

//<cstdio>使ってgetsは名前空間stdに収められていることが前提。
template <std::size_t N>
char *gets(char (&buf)[N])
{
  std::fgets(buf, N, stdin);
  if (char *p = strchr(buf, '\n'))
    *p = '\0';
  return buf;
}
737 ◆382ingG3ec :2005/09/21(水) 21:15:40
定期上げです。ゲームらしくしてみました。曾の所で依頼を受けてください。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0033.lzh

gets の直しは、判定部分ではなく入力部分で直せたので、ラクに済みました。
教えてもらったのと違うようにやってみたんですけど、これでもだいじょうぶですよね?
レイアウトの関係上、半角30字以上は入れられたくないので
(実際、それだけの入力が必要な場面も想定していないので)
入れた場合は強制終了するようにしてあります。
/*-------------------------------------------------------------------*/
訂正前の抜粋・こんな感じ・Game.c 内 void WriteScreenInputArea(void)
{
 char get_s[50];
 gets(get_s);
 if (strlen(get_s) > 30)
   Err("WriteScreenInputArea// 入力文字数が多すぎます");  //←ゲームの強制終了
}
/*-------------------------------------------------------------------*/
訂正後の抜粋・こんな感じ・Game.c 内 void WriteScreenInputArea(void)
{
 char get_s[30+3];
 int mojisuu;
 mojisuu = strlen(fgets(get_s,30+3,stdin));
 if (mojisuu > 30+1)
   Err("WriteScreenInputArea// 入力文字数が多すぎます");  //←ゲームの強制終了
 else
   get_s[mojisuu-1] = '\0';
}
/*-------------------------------------------------------------------*/
738 ◆382ingG3ec :2005/09/21(水) 21:18:47
あ、エラーの時のコメントは表示されても見えないと思うけど、それもまぁいいですよね?(^^ゞ
739デフォルトの名無しさん:2005/09/22(木) 00:11:08
>>737
fgets() の第二パラメータはsizeofを使うのが常道。
740デフォルトの名無しさん:2005/09/22(木) 04:09:58
>>736
Cから継承した標準関数はグローバルが実体で
std の中に using されてる実装が多く、おそらく
グローバルな定義では意図したとおりに置き換わらない。

「ちゃんとしたラッパ」は自分で作った名前空間に収めるべき。
741デフォルトの名無しさん:2005/09/22(木) 12:29:43
>>740
やっぱそうだよな、スマソ。
742デフォルトの名無しさん:2005/09/22(木) 19:24:29
>>737
fgets は NULL を返すことがあるからチェックしてから strlen に渡そう。
743503:2005/09/22(木) 20:23:38
>>733
ノシ 点呼2!!
マップエディタは全然ゲームと作り方が違うので時間かかってるよ
RPGツクールのマップチップって思ったより複雑(隣接チップによっての変化やアニメーション)
いっそツクールが吐いたデータを読み込んだほうが楽かもしれない(軽く解析済み)
744デフォルトの名無しさん:2005/09/22(木) 20:57:28
フレームワークのための設計だと多少の無駄は覚悟しなきゃならんね
例えばforを3回まわす所を5回まわすハメになってもFPSを維持できるなら見過ごすとか
745デフォルトの名無しさん:2005/09/22(木) 21:13:41
>>744 ん?
746デフォルトの名無しさん:2005/09/22(木) 21:18:21
メインループだけで完結できる設計にはならんってこと
747シープラ勉強中:2005/09/23(金) 19:28:41
>>733 点呼3 ノシ
実はそろそろやめたくなってますが・・

たまに見る、ラッパーライブラリとか言う言葉は、
なにか既存の関数をラッピングするように包んでるから
そう呼ばれてるんですね。
見るたびに、「ラッパーってなんだろ?」とか思ってました。
一段落したらDirectXを包んでるやつとか使ってみたいな。

>>737
ひし形の敵に殺られちゃいましたww
328さん、完成に向けてものすごいスピードで進んでますね。
その情熱を見習いたい。

>>743
ツクールのマップデータって、プログラム解析しなくても読めるんですね。
驚愕です。
ファイル操作で壁にぶち当たってる私とはえらい違いだわ。
マップチップのアニメーションとかも考えなきゃいけないのかぁ orz
748デフォルトの名無しさん:2005/09/24(土) 01:59:52
>マップチップのアニメーションとかも考えなきゃいけないのかぁ orz
別になくてもいいと思うけど。
749シープラ勉強中 ◆ryjMYLsfPA :2005/09/24(土) 14:17:03
できたとこまで晒し -_-
http://aploda.com/dl.php?mode=pass&file_id=0000031631
自力では完成させる自信がまったく無いマップエディタです
セオリーとか知らないので、思うままにやりましたw
なんか無意味に大きくしすぎたかも。。

http://aploda.com/dl.php?mode=pass&file_id=0000031632
↑の絵にちゃんとなってるでしょうか?
実行したら即ファイルを読み込む仕様なので、
それが失敗した場合即エラーがでるかもです。

構造体のサイズがコンパイラによって違ったりするらしいですし、
私のとこ以外の環境でちゃんと動くのか激しく疑問。

これからの予定
○名前を指定してセーブ&ロードができるようになりたい
(あのお決まりのダイアログボックスみたいなのはどうやって出すんだろ・・)
○ラジオボタンとかチェックボタンとかも出したい
○スクロールバーもあると便利かも
○絵以外も貼れるようになりたい(フラグとか)

win32の勉強がまだまだ不足なので、相当時間かかりそうです。
美乳さんのエディタはどうなってるんだろうか。

>>748
余裕があったら、川とか海の2パターンアニメをがんばって入れてみます。

マップチップはツクール素材を使ってしまおうかなぁ。
750デフォルトの名無しさん:2005/09/24(土) 14:35:23
>>749
つ ダイアログボックス(モーダル)(VCの場合)
751579:2005/09/24(土) 14:54:44
ttp://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0034.zip

ほとんど変化ないけどとりあえず成果物
移動不可地形をどうするか悩んでいたらあっと言う間に2週間
Haskellに触ってみてから、身の程知らずだったことに気づくまでの5日間を含んでいるのは秘密

マップエディタの進捗状況は2%といったところ
752 ◆382ingG3ec :2005/09/25(日) 14:19:37
>>739>>742 Σ(゚Д゚;)
そうだよね、うん、手持ちの本にも書いてありました…orz 
ありがとう、直してきます。

>>747 >>749
ありがとう。情熱というよりも、暇人なんですよw
>>749は、win98でOK、画像どおりに表示されていますよ!
んでも、画面のチラつきが目立つのは、PC性能のせいなのかな?
>>644はすごくスムーズだったんだけど…?

>>751
いや、かなり進んでいるように見えるんですけど?


マウス操作とかグラフィック関係は、
ざっと調べただけでも、すごく複雑そうですよね。
みなさん、がんばってください!
(私は手を出さないで正解だったとか思ってるのは内緒です。)
753デフォルトの名無しさん:2005/09/25(日) 16:50:13
そういえば、音(BGMとかSEとか)っていうのが全然ないなぁ。

大して難しくないから?
754デフォルトの名無しさん:2005/09/25(日) 17:42:23
今作ってる奴は作るだけじゃなくて、ノウハウをためて公開しろよ。
(なんかWikiみたいのがなかったっけ?)

じゃないと単なるオナニーで終わるだろ。
755デフォルトの名無しさん:2005/09/25(日) 17:54:20
オナニー?
できたゲームが楽しけりゃ立派なセックルだよ。
756デフォルトの名無しさん:2005/09/25(日) 17:56:59
>>753
サウンドは>>457あたりで話されていてMCIやwaveOutを使用した
コードが出ている模様。…まーそれなりに真面目に見ると
データのパック、暗号化、ストリーミング処理、Oggフォーマット対応、
DirectSoundによる複数音発声や一元管理などが無いんで少し物足りないけど。
757756:2005/09/25(日) 17:57:53
>>457じゃなくて>>475ね。
758デフォルトの名無しさん:2005/09/25(日) 18:03:01
俺もうMyKeyboardクラスにほとんどの時間を掛けてるw
おかげでいいのができそうだけど、こんなんで完成するのはいつの日か
759デフォルトの名無しさん:2005/09/25(日) 20:12:50
>>755
俺的名言
もらった
760 ◆382ingG3ec :2005/09/25(日) 23:09:05
定期上げです。売店作ったりqsort使ったりこまごまとやってみました。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0035.lzh

今後の課題・マップ移動・セーブ方法・メッセージ整理・etc…

まだまだ先は長そうです orz

公開するほどのノウハウは私にはないけれど、
失敗レポート作ると復習になっていいとか言うから、
もう少し落ち着いたらやってみようかな?
ってか、未だにconstの使いどころがナゾだったり、
分からないことだらけです。orz
761デフォルトの名無しさん:2005/09/26(月) 03:20:35
しつもーん!
C言語って標準でスタック用意してないの?
762デフォルトの名無しさん:2005/09/26(月) 03:21:14
うわー!スレまーちがーえたー
ごめんなさーい!!
763デフォルトの名無しさん:2005/09/26(月) 03:37:15
|  |
|_|ω・`)< 乙でつ。漏れも頑張ってまつ。
|柱|⊂ ノ
| ̄|-u'
764デフォルトの名無しさん:2005/09/26(月) 04:18:27
自力で双方向リストを組むんだ!
765デフォルトの名無しさん:2005/09/27(火) 21:44:07 ID:0
>>755
ゲーム作って終わりならゲ製逝けよ。
ここはム板なんだから。
766デフォルトの名無しさん:2005/09/27(火) 22:12:28 ID:0
最近技術的なことも語られてないし、こんなスレいらないんじゃない。
ゲ製の糞スレで十分だ。
767デフォルトの名無しさん:2005/09/28(水) 01:29:41
いらなくなれば、自動的に落ちていくさ。
768デフォルトの名無しさん:2005/09/28(水) 02:07:27
マップエディタ作るの飽きてきたので、自動生成マップにしようと思っている俺ガイル
769デフォルトの名無しさん:2005/09/28(水) 04:20:47
ノマネコの大冒険〜1000回遊べるインスパイア〜
770デフォルトの名無しさん:2005/09/28(水) 10:04:57
そういえばティルナローグはシナリオもマップも自動生成だったね。
771デフォルトの名無しさん:2005/09/28(水) 10:10:34
>>766
だな。
ほとんど初心者のC/C++、Win32API勉強会になってるし。
質問スレだけで全然事足りる内容。
(たまにちゃんとしたのが出てくるが)
それで作るときのノウハウもためられないようじゃ全然意味なし。
得意げに汚いコードだけ晒し続けてる奴の心理がよく分からん。
772デフォルトの名無しさん:2005/09/28(水) 10:14:07
そうやって盛り上げるからこの手のスレがなくならない
ひょっとしておたくらが仕掛け人?
773デフォルトの名無しさん:2005/09/28(水) 11:09:13
なにこの根暗な展開
774デフォルトの名無しさん:2005/09/28(水) 11:17:47
ゲ製作はこれが普通
775デフォルトの名無しさん:2005/09/28(水) 11:19:51
しったかが多いスレでつね
776デフォルトの名無しさん:2005/09/28(水) 11:23:51
♪マーチったらしったかたー更新だー
777デフォルトの名無しさん:2005/09/28(水) 11:28:36
>>775
マトモな奴は、来ない。
へタレで他人にえばりたい奴だけが来る。

    ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オレモナー
  (    )  \_____
   | | |
   (__)_)
778デフォルトの名無しさん:2005/09/28(水) 11:31:17
>>771
わからないなら放っておいてくれないか
民族浄化みたいな真似しなくても誰も君の居場所を奪ったりしないから
779シープラ勉強中:2005/09/28(水) 18:35:29
ぬうう、ちょっと反省するところがありそう。

スレを活用するためには、ちょっと迷ったら
アドバイスを求めた方がいいんですかね?
動かし方とかいっぱいあるだろうし。

でもまだWin32ができないしなぁ。

>>751
Haskellっての見にいってみたら凄い呪文が!
なんじゃありゃ。
移動不可地形はすごい難しいっすよね。
マップエディタを待ってます・・。

>>760
三角の敵に殺られました。
店で買った皮の鎧が紙のようでしたよ。
あがいてもあがいても復活できないのは仕様ですかw
780 ◆382ingG3ec :2005/09/28(水) 18:45:13
>>771
>得意げに汚いコードだけ晒し続けてる奴の心理がよく分からん。

こ、これはひょっとして私のことですか?(汗

えっとですね。私が晒しつづけているのは、
定期上げをすることで自分がダレないようにするためと、
誰かのツッコミを待っているってのがあるんですよ。
自分のコードがキレイだなんてハナから思っていないから、
とりあえず動かすだけのコードが書ければいいや、ってなると、
汚いままのコードしか書けないままになるかなって。
だからといって、「私のコードを添削してくれ!」なんて、
言える相手も場所もないから、ここに晒しておいたら、
奇特な人が見てくれないかなぁ、という希望的観測があるんです。
(自己中ですか? すみません)

それと、私が技術的な話に加わらないのは、
話が出来るだけの知識がないからです。
質問しようにも何が分からないのか分からないことが多いしね。

と、以上。自己心理分析、というか、言い訳でした。


>>779 
いつもありがとう〜。
ごめん、今はプログラムを組むのに手一杯で、
ゲームバランスまでは手が回っていません。 orz
「あがく」だけでは復活できないので、薬とか使ってください。
瀕死状態では移動はできないけど[c]コマンドは使えるはずなので。
781 ◆382ingG3ec :2005/09/28(水) 20:19:25
定期上げです。「×」の所からステージ移動できるようにしました。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0036.lzh

今後の予定:月末頃に忙しくなるので2週間ほど消えるかも?だけど気にしないでください。
782デフォルトの名無しさん:2005/09/28(水) 20:55:24
783デフォルトの名無しさん:2005/09/29(木) 00:30:16
>>767の名言に注目。
784デフォルトの名無しさん:2005/09/29(木) 03:09:10
ソース付けてなきゃ、誰も実行してくれないよ
ここをどこだと思ってるの?
785デフォルトの名無しさん:2005/09/29(木) 04:04:34
うわっ、ソース要求したよこの人。
786デフォルトの名無しさん:2005/09/29(木) 04:18:55
それがどうかしたのか?
787デフォルトの名無しさん:2005/09/29(木) 09:29:25
いや、
人のプログラミング能力を見るのにはソースコードを見るのが一番
バイナリだと、いくらでも小細工できて真の実力が分からんからな

で、ソースコードを出せない香具師は口だけちゃんが多いね
788デフォルトの名無しさん:2005/09/29(木) 09:41:10
まともにバイナリ動いてても口だけって理想主義者かよwww
789デフォルトの名無しさん:2005/09/29(木) 09:49:03
つーかその程度で実行したくなきゃしなきゃいいだけだが。
790デフォルトの名無しさん:2005/09/29(木) 09:51:23
理由が子供っぽい
791デフォルトの名無しさん:2005/09/29(木) 10:17:52
バイナリだけじゃ本当にオナヌーじゃんかよ。
792デフォルトの名無しさん:2005/09/29(木) 10:22:21
作りたい人が作って経過を見たい人が見る。
それで良いと思うがな。
793デフォルトの名無しさん:2005/09/29(木) 10:36:49
二行目以外は余計
794デフォルトの名無しさん:2005/09/29(木) 16:10:10
>>791
じゃあ今までに上がったソースの問題点とか指摘してみてくれよ
795デフォルトの名無しさん:2005/09/30(金) 00:49:21
ソースを読んで実力を見るとか言っといて
好みの問題で済むようなどうでもいい書き方のお作法しか指摘できなかったら笑う
796デフォルトの名無しさん:2005/09/30(金) 04:42:51
>795
ここでは、それがデフォですよ
797デフォルトの名無しさん:2005/09/30(金) 04:57:44
最近いくつかあったアフォ発言は同一人物のしわざか
798デフォルトの名無しさん:2005/09/30(金) 22:29:55
ぜんぶアフォに見えるんだが
799デフォルトの名無しさん:2005/09/30(金) 22:41:07
どいつもこいつもヒットラー
800デフォルトの名無しさん:2005/09/30(金) 22:48:56
マップ自動生成に挑戦中
棒倒し法以外になんかある?
801デフォルトの名無しさん:2005/09/30(金) 22:54:18
なんかいろいろあるらしい
tp://www5d.biglobe.ne.jp/~stssk/maze/make.html
802デフォルトの名無しさん:2005/10/01(土) 06:20:26
マップエディタの話がでていたと思うんだけど
ぐぐると良さげなツールがあったよ。

MapEditor 'Platinum' (ttp://www.valley.ne.jp/~valencia/)
少し使ってみたけど、なかなかよくできてると思う。
自作するまえに使ってみる価値ありかと。
803デフォルトの名無しさん:2005/10/01(土) 16:39:18
宣伝乙。
804デフォルトの名無しさん:2005/10/01(土) 17:28:08
いや、実際にいいよ。それと↓もいいと思う。
http://www.vector.co.jp/games/soft/win95/game/se190983.html?site=n

でも、やはり本格的に一本ゲームを作ろうと思うなら、
マップエディタも自作した方がいいかな。
レイヤーの数、入出力データ形式、ツールバーの感じとか、
他人のだとどうしてもしっくり来ないし。

後、ツクール2000タイプの素材を使いたいときに、
境界線の自動処理の部分をどうするかだね。
普通に16X16で表示していては、ツクールと同じように表示できない。
展開したパターンを予め作っておくか、
ゲーム中に裏ビットマップに作って表示するか。

それとも、ツクール2000タイプ以外の素材を使うか。
しかし、その素材は殆ど無いんだよな。
805デフォルトの名無しさん:2005/10/01(土) 17:47:18
これって仮に完成したとして、作ってる人は面白いと思ってるの?
806デフォルトの名無しさん:2005/10/01(土) 18:05:56
冷やかししかできない人は、人生何をやっても面白くないだろうな。
807デフォルトの名無しさん:2005/10/01(土) 18:13:50
冷やかししかできない人は、人生冷やかしだけやってれば面白いのだろう
808デフォルトの名無しさん:2005/10/01(土) 18:18:41
冷やかしが生きがいのクダラナイ人生
809デフォルトの名無しさん:2005/10/01(土) 18:24:09
参加することに意義があるのだよ
810デフォルトの名無しさん:2005/10/01(土) 20:58:39
忠告・質問を冷やかし・煽りとしか取れない頭の弱い人たちがいるスレ。
811デフォルトの名無しさん:2005/10/01(土) 21:15:25
ご忠告ああああああああありがとうございますかく
812デフォルトの名無しさん:2005/10/01(土) 22:13:50
そろそろ埋めるか?
813デフォルトの名無しさん:2005/10/01(土) 22:25:37
そろそろ忠告質問厨はスルーでよろしく。>ALL
814デフォルトの名無しさん:2005/10/01(土) 23:56:53
自分で作ったゲームを楽しめない奴が作ったゲームはつまらない
だが、自分で作ったゲームを楽しめる奴が作ったゲームが面白いとは限らない
815デフォルトの名無しさん:2005/10/02(日) 00:07:45
ゲ製作だとおもしろさを研究するようなスレは自治が止めに入るから
ついつい言及したくなっちゃうんだよスマソ
なんでも「つくれつくれ」でやんなっちゃう
816デフォルトの名無しさん:2005/10/02(日) 00:41:52
ここはム板なんで、面白さ・ゲーム内容よりも設計開発技術に重点をおいたほうがいい。
まぁ、まだ設計開発技術を云々いえるほどのものはできてこないわけだけど。
817デフォルトの名無しさん:2005/10/02(日) 06:56:33
つーか面白さを追求する余裕があるほどゲーム作りに慣れたつもりなのか
818デフォルトの名無しさん:2005/10/02(日) 07:05:47
>>815
スレタイを1000万回読んだらゲハ板に帰れ
819デフォルトの名無しさん:2005/10/02(日) 07:13:36
ゲハは板違い
無責任な誘導やめろよマジで
820デフォルトの名無しさん:2005/10/02(日) 10:31:25
ゲハがお似合いだってことさ
821デフォルトの名無しさん:2005/10/02(日) 21:41:02
このスレはゲ製に立てるべきだな。
ま、今のレベルじゃゲ製でも相手にしてもらえないと思うけど。
822デフォルトの名無しさん:2005/10/03(月) 06:14:39
ここはきもいインターネットですね
823デフォルトの名無しさん:2005/10/05(水) 10:56:15
マップエディタの部品をプラグインで入れ替えできるようなのを、ここで案をよく練って作ってくれ。そんなにむずかしくないはずだ。
824デフォルトの名無しさん:2005/10/05(水) 12:22:22
>マップエディタの部品
詳しく!
825デフォルトの名無しさん:2005/10/05(水) 16:49:25
dllで機能を分解するの。
たとえばマップエディタだと、ウインドウをクリックしてチップ置くなんてのは共通なんだから、そのクリックイベントを他の人が作ったプログラムでキャッチできるようにするの。
上の例が適切かどうかはわからないがそんなかんじ。
826デフォルトの名無しさん:2005/10/05(水) 18:14:47
自分でぜんぶ作るのとあんま変わらんな。
827デフォルトの名無しさん:2005/10/05(水) 18:19:24
>>825
いいこと言ってる気がするのでもっと詳しく頼む
828デフォルトの名無しさん:2005/10/05(水) 18:36:29
>>816
設計開発技術ってRPGだからといって特別なことある?
829デフォルトの名無しさん:2005/10/05(水) 19:32:23
マップエディタエディタになりそうだな
830デフォルトの名無しさん:2005/10/05(水) 19:37:19
極端な話、ベースはフォトショップでもいいよな
831デフォルトの名無しさん:2005/10/05(水) 23:50:35
俺はコンバータ派。
気合入れてマップエディタ作ったのに
「フォトショップの方が使いやすい」
なんて言われた日にゃぁ orz...
832デフォルトの名無しさん:2005/10/06(木) 01:11:54
1枚絵のマップってことか?
833デフォルトの名無しさん:2005/10/06(木) 11:00:28
いや、フォトショップのプラグインって結構自由にできるからベースにするだけ
基本機能が段違い(UNDOやヒストリー、アクションだけでもフリーではありえないレベル)なので
マップエディタとしてはありがちな機能をその上に乗せただけでも今までにないものになる
(特にアクションがあれば派生機能が作れるし)
834デフォルトの名無しさん:2005/10/06(木) 20:00:54
お前らマップエディタに何を求めて(ry
835デフォルトの名無しさん:2005/10/07(金) 00:00:33
マップエディタを作るためだけに(使うためだけに)、Photoshopを購入する。
そんな風に考えていた時期が私にもありました。
836デフォルトの名無しさん:2005/10/07(金) 00:04:38
その昔、本末転倒という言葉があったそうじゃ・・・・。
837デフォルトの名無しさん:2005/10/07(金) 00:05:09
今でもあるし。
838デフォルトの名無しさん:2005/10/07(金) 00:26:28
はぁ? フォトショぐらい無かったら仕事になんねーだろww
839デフォルトの名無しさん:2005/10/07(金) 00:45:16
誰もそんな話はしていない。
840デフォルトの名無しさん:2005/10/07(金) 02:33:55
せめてPaintShopProでも使えるプラグインにしてくれ。
841デフォルトの名無しさん:2005/10/07(金) 03:13:27
誰にでも使えて誰にでも開発できるのがいいな
フォトショプラグインはいちいち登録してsdkひろってこないとだめだから面倒じゃん
842デフォルトの名無しさん:2005/10/07(金) 05:46:18
フォトショは高い
出版でもするのかと
843デフォルトの名無しさん:2005/10/07(金) 05:51:30
GIMPがもっと安定してればねぇ…
844デフォルトの名無しさん:2005/10/07(金) 18:27:39
PaintShopProにはアクションやヒストリーパレットが
ないからベースにする意味がない
845デフォルトの名無しさん:2005/10/07(金) 18:41:27
ネタだろ。
846デフォルトの名無しさん:2005/10/07(金) 18:47:18
今までで一番使い易いマップエディタどれ?(市販、フリー全部合わせて)
来週の試験終わったら作り始めるし今のうちに研究しておきたい
847デフォルトの名無しさん:2005/10/07(金) 22:08:30
ペイント
848デフォルトの名無しさん:2005/10/07(金) 22:20:21
おお!ペイントで作る技があるのか?
詳しく教えてくれ!!!
849デフォルトの名無しさん:2005/10/07(金) 22:45:07
拡大して一ドットごとに点を打って、bmpで保存して読み込むのか?
850デフォルトの名無しさん:2005/10/07(金) 22:46:12
そんなわけないだろ
>>847はきっとスゲー技を持ってるに違いない!!
851デフォルトの名無しさん:2005/10/08(土) 01:54:00
>>847
スゲー技を教えてほしいワクワクテカテカ
852デフォルトの名無しさん:2005/10/08(土) 02:01:48
なになに?スゲー技があるって聞いたんですが。
853デフォルトの名無しさん:2005/10/08(土) 02:03:38
俺普通にペイントで拡大してドット絵書いてるけど・・・。
ドット絵勉強用に買った本がペイント使ってたもんだから・・・。
854デフォルトの名無しさん:2005/10/08(土) 02:16:28
>>853
それはマップエディタとしてではなく単なるペイントツールだろ。
マップエディタってのはチップに付随する情報なども設定できなきゃ意味がない。
855デフォルトの名無しさん:2005/10/08(土) 02:31:34
色の定義の仕方によっちゃ充分できるんじゃない?
856デフォルトの名無しさん:2005/10/08(土) 03:50:13
プログラム”A”で適当なウインドウ”B”を用意→Aでペイントのウインドウハンドルを取得しリアルタイムでキャプチャ→ピクセルのカラー情報に基づいてBにマップを表示
857デフォルトの名無しさん:2005/10/08(土) 09:14:08
>>856
その場合「マップエディタ」と呼ばれるのはプログラム”A”であり、
ペイントは単なるお絵かきツールでしょ。
858デフォルトの名無しさん:2005/10/08(土) 13:21:04
おまいら的に理想のマップエディタとかこんな機能が欲しいとか
こんなのが作りたいってないの?
859デフォルトの名無しさん:2005/10/08(土) 17:38:53
出力フォーマットが自在にカスタマイズできるやつが欲しい
860デフォルトの名無しさん:2005/10/08(土) 17:41:33
>出力フォーマットが自在にカスタマイズできるやつ
つか、ソース公開しとけば
ええんでないか?
861デフォルトの名無しさん:2005/10/08(土) 17:51:35
いちいちコンパイルするのめんどくせー
862デフォルトの名無しさん:2005/10/09(日) 03:45:00
頭に念じるとマップを用意してくれる奴。
863デフォルトの名無しさん:2005/10/10(月) 19:43:54
ソース公開されてるマップエディタある?
864デフォルトの名無しさん:2005/10/10(月) 20:08:31
あるよ
865デフォルトの名無しさん:2005/10/10(月) 20:21:38
あるよじゃねーよバカチンが
866デフォルトの名無しさん:2005/10/10(月) 21:27:56
質問には正しく答えてると思うぞ
867デフォルトの名無しさん:2005/10/10(月) 21:29:22
結構です、で契約成立すると言ってるぐらい暴論
868デフォルトの名無しさん:2005/10/10(月) 21:37:31
>>865,867
そんなことじゃ、コンパイラが吐くエラーメッセージの冷徹さに耐えられないんじゃないか?
869デフォルトの名無しさん:2005/10/10(月) 21:39:40
コンパイラはいつも根拠を示す
870デフォルトの名無しさん:2005/10/10(月) 21:47:35
コンパイラの根拠なんて当てにならん。せいぜい行番号ぐらい。
871デフォルトの名無しさん:2005/10/10(月) 21:48:35
行番号すら示せない>>864に失礼ですよ
872デフォルトの名無しさん:2005/10/10(月) 22:04:47
行番号だって大嘘じゃねぇか
873デフォルトの名無しさん:2005/10/10(月) 22:08:34
>>864が大嘘だなんてひどいですよ
874デフォルトの名無しさん:2005/10/10(月) 22:22:10
まあつまりあれだ、あると分かったなら自分で探せってこった
875デフォルトの名無しさん:2005/10/10(月) 22:27:42
知らないことは恥ずかしいことじゃないですよ
でも次からは書き込む前に少し考えてみてください
876864:2005/10/10(月) 22:44:10
クレクレくんばかりだな(哂

あとは自分で探せw
877デフォルトの名無しさん:2005/10/10(月) 23:06:32
教える義理も何にも無いのになw
自分が要求したものは皆すぐにくれるとでも思ってやがるのか。
878デフォルトの名無しさん:2005/10/10(月) 23:45:23
みんなのものはおれのもの。
おれのものはおれのもの。
879デフォルトの名無しさん:2005/10/11(火) 16:00:00
きみのものはきみのもの
おれのものはきみのもの
880デフォルトの名無しさん:2005/10/11(火) 16:03:34
なんか全然書き込みないけどみんな試験勉強中?
俺も終わるまで出来ないけど
881デフォルトの名無しさん:2005/10/11(火) 16:45:33
>>878
おれのしゃっきんもきみのもの
882デフォルトの名無しさん:2005/10/12(水) 19:53:35
RPG作ってるんだけど、タイトル画面、ゲーム画面、ゲームオーバー画面などにシーンを分けて、タイトル画面でボタンが押されたらゲーム画面に進む、みたいにするのってどうやる?
883デフォルトの名無しさん:2005/10/12(水) 19:55:22
改行
884デフォルトの名無しさん:2005/10/12(水) 19:56:47
変数に今タイトル画面とかゲーム画面だとか覚えさせておいて
switchでそのサブルーチンを呼んでる

変数にオブジェクト入れてそれを入れ替える方法とか関数ポインタでもいいらしいけど
885デフォルトの名無しさん:2005/10/12(水) 21:09:51
>>882
タスクシステムつこてる
886 ◆382ingG3ec :2005/10/12(水) 22:11:45
二週間ぶりに自作ソースを見たら見事なワカメスパゲティに熟成されていてお腹一杯です、こんばんは。

>>882
C言語の標準関数しか知らない素人のやり方だけど…
タイトル画面、ゲーム画面、ゲームオーバー画面、それぞれの表示用関数を用意して、
それと別に画面を全部消去する関数も用意して、
タイトル画面の【スタート】ボタンにイベント仕込んで、
そこをクリックされたら、画面消去→ゲーム画面の順に関数呼び出せば、
何とかなるんじゃないかな?

ところで、マップエディタが流行っているみたいだけど、
マップチップに最低限必要な要素とか、規格みたいのを先に決めないで、
作れるものなのかな?
と、素朴な疑問が湧いたのですが…私だけでしょうか?

っつか、独り言うざいですね。おやすみなさい。
887デフォルトの名無しさん:2005/10/13(木) 02:43:00
>規格みたいのを先に決めないで、作れるものなのかな?

作れるものなんですよ、奥さん。
888デフォルトの名無しさん:2005/10/13(木) 07:08:05
エディタの仕様に沿って規格が固まることもなきにしもあらずさ、母さん。
889デフォルトの名無しさん:2005/10/15(土) 17:06:12
最初に規格を作ると、規格を作っただけでおなかいっぱいになる。
最初に規格を作らずぶっつけで作ると、形にはなるが拡張する時に泣く。

好きなほうを選べ。
890デフォルトの名無しさん:2005/10/15(土) 17:27:26
まだにその通り・・。
891デフォルトの名無しさん:2005/10/15(土) 17:42:02
まだに→まさにorz。

昔は後者で、今は前者かな。
規格を考えている時は楽しいからいいけど、
プログラムを組んでから時間が経つと飽きてくるから、
プログラムの方で時間が掛からないようにしている。
大正漢方が食べる前に飲むなら、プログラムは飽きる前に作るだね。

また、回数毎にどういうプログラムを作っていくかも大事だと思う。
作りたい作品である事は当然だが、
ちょうど自分の力量より少し難しいぐらいのにすると、
製作時間とレベルアップのバランスがちょうどいいから。
892 ◆382ingG3ec :2005/10/16(日) 01:47:36
なるほど。含蓄ありますね。


ってか。いまロード&セーブで悪戦苦闘してるんですけど、
覚えたことも一気に忘れてしまったようで、
いいかげんヤになってきました(涙
893デフォルトの名無しさん:2005/10/16(日) 18:06:30
>セーブ&ロード
必要なパラメーターをセーブ・ロード用の構造体にまとめて、単純にファイルに書き込む→セーブ
単純にセーブ・ロード用の構造体に読み出して、それを振り分けなおす→ロード
もしくはもっと単純にパラメータ用の構造体を用意しておき、それを単純に読み書きすれば良い。
複数データ保存ならベースのファイル名+番号を自動生成すれば良いだけ(sprintf()でできるはず)

>マップチップに最低限必要な要素とか、規格みたいのを先に決めないで、
>作れるものなのかな?
現在有るものを参考にする。(RPGツクールとか)
それで足りなければ拡張すれば良い。
一から自分で造るのはすごく面倒だろうし、コンバートすら面倒なものが出来る可能性がある。
894 ◆382ingG3ec :2005/10/16(日) 21:25:21
ありがとう、!

>複数データ保存ならベースのファイル名+番号を自動生成すれば良いだけ(sprintf()でできるはず)

この辺と、どのデータを保存するかで、ワケワカメになっていました。(涙
んで、なんとかできたので、久々の定期上げです。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0037.lzh

とりあえず、ゲームの最初にロードして、最後に保存するようにしました。
岩を動かしたりで地図を変えながら進めるようにしたので、
これだと明らかにハマリや不都合がおきるので、
セーブ場所を固定化するような形でシナリオを作らないとダメポですね。orz
その辺は、これから考えてみます。

マップエディタは、上のほうでカスタマイズの話が出ていたので、不思議だったんです。
完成したエディッタの拡張機能って、どの程度、作れるものなのかなぁと。
まぁ、私には作れそうにないので、素朴な疑問なんですけどね。(苦笑)
895デフォルトの名無しさん:2005/10/17(月) 00:18:45
%.obj: %.c
$(CC) -o $@ -c $<

Game.obj: Game.c nullme.h
896デフォルトの名無しさん:2005/10/18(火) 04:49:15
普通の2DのRPGなら、
とりあえず必要なマップ情報は、
・マップ自体の識別コード(名前)・構成量(縦×横×階層)・構成目(マップチップデータ〈階層分〉)
・四辺の外設定〈階層分〉 ・ループや自動移動の有無〈階層分〉 ・メモ用空き
・内容(チップNo)
ぐらい?
移動の可否・戦闘用データは、チップデータ依存とする。
897 ◆382ingG3ec :2005/10/19(水) 22:33:12
定期上げです。見た目ほどんど変わっていません。
セーブ&ロードのソースの整理をしただけで力尽きました。orz
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0038.lzh


>>895
こ、これはきっと正しいmakefileの書き方、なんだと思うんですけど。
ゴメン、なんか意味がわかりません。(涙
そのままmakefileにコピペしてやってみたんですけど、

Err makefile 3: Command syntax error
*** 1 errors during make ***

って出てしまうんです。(TT)
私のやり方が何かヘンなのでしょうか? orz
898デフォルトの名無しさん:2005/10/20(木) 00:41:55
まともなmakeを使え。
899デフォルトの名無しさん:2005/10/20(木) 13:45:56
生成規則って便利機能があるので使ってみと言いたかった。
BCCならこんな感じかなあ

#↓生成規則: .cファイルから.objファイルを生成するには
#↓このコマンドを実行しる
.c.obj:
$(CC) $(CFLAGS) -c $< # ←行頭の4文字の空白はタブ文字に置き換えてくれい

#↓依存関係を書く。コマンドは書いてないけど先に決めたルールがあるので生成される。
Game.obj: Game.c nullme.h

こういう書き方あるから・・・記憶の片隅にいれといても損はしないかもザマス。
ちなみに>>895のはGNUMake用の書きかた
900デフォルトの名無しさん:2005/10/20(木) 13:49:07
空白消えちゃうね。訂正。
$(CC) $(CFLAGS) -c $< # ←行頭にタブ文字を入れてくれい
901デフォルトの名無しさん:2005/10/21(金) 03:14:34
なあ、このスレはVCを使うヤトゥーラはいないのん?
902デフォルトの名無しさん:2005/10/21(金) 03:32:20
つかってるお
903デフォルトの名無しさん:2005/10/21(金) 05:06:58
むしろVCだらけだと思ってた
904 ◆382ingG3ec :2005/10/21(金) 20:54:01
VCを使えないのは私ぐらいかもしれないorz


>>898
バカにしないでください
まともなmakeが何か分かっていたら使っています!        …だっけ?

>>899-900
ありがとう!
教えてくれた方法でできました!

っで。ついでに色々弄っていたら、↓の方法でも動いたのですが、
この方法でも問題ないのでしょうか?
nullme.h の指定をしていないのにできてしまっているのが、なんか不安なんですけど?

============================
CC = bcc32
OBJ = game.obj move.obj rest.obj goods.obj \
     time.obj shop.obj save.obj
.c.obj :
     $(CC) $(CFLAGS) -c $< #

Game.exe : $(OBJ)
       $(CC) $(OBJ)
============================
905デフォルトの名無しさん:2005/10/21(金) 22:24:59
>904
インクルードファイルは勝手にインクルードされるから指定はしなくてもいい。
但し、インクルードファイルに関する依存関係が指定されていないと言うことは、
当然インクルードファイルを修正してもmakeを実行してもコンパイルはされないと言うこと。
インクルードファイルの依存関係を正しくmakefileに反映させたいなら、mkmfを使うのも手だが、
#includeをgrepでリストアップして自分で書いても大した手間じゃない。
即ち、nullme.hの例で言えばgrep -l nullme.hで見つかったソースファイルが仮にgeme.cだとすると
gem.c: nullme.h
のように依存関係をmakefileに書いておけばいい。
906デフォルトの名無しさん:2005/10/21(金) 22:32:15
bccのmakeにはヘッダの依存関係を自動で検出するオプションがあった気がする。
907 ◆382ingG3ec :2005/10/22(土) 00:45:07
>>906
ど、どこに!? …見つけられませんでした(涙

>>905
ありがとう、インクルードファイルの修正が反映されないのは、困ります!
ってか。気付かなかった私って…お間抜け?

で、今度は下のように変更してみました。
最適化オプションとかあったので、足してみたりしたんですけど、
これで平気でしょうか?
===============
CC = bcc32
HEAD = nullme.h
OBJ = game.obj move.obj rest.obj goods.obj \
time.obj shop.obj save.obj
.c.obj :
$(CC) $(CFLAGS) -c -O1 -O2 -w4 $< #
Game.exe : $(OBJ)
$(CC) $(OBJ)
$(OBJ) : $(HEAD) *.c
================
ってか。なんかスレ違いっぽいかも?
908 ◆382ingG3ec :2005/10/22(土) 00:46:10
しまった、タブが消えちゃいましたね。見難くなってゴメン。
909デフォルトの名無しさん:2005/10/22(土) 09:09:42
.autodepend
だったかな。
910デフォルトの名無しさん:2005/10/22(土) 16:57:07
2ch にpost するときには、空白とかTABの変わりに、全角の空白を使うといいよ。
911デフォルトの名無しさん:2005/10/22(土) 19:14:40
それより&nbsp;のほうがよくないか
912デフォルトの名無しさん:2005/10/22(土) 19:50:44
>>911
半角スペースはそれでいいだろうが、
Makefile のTABはコピペしたときに
手で修正が必要だとわかるように全角空白がいい。
913デフォルトの名無しさん:2005/10/22(土) 21:50:49
bccのmakeは半角スペースでも受け付けてくれた気がする。
914 ◆382ingG3ec :2005/10/25(火) 00:05:15
そうです、半角はあってもbccだとだいじょうぶです。
それでうっかり、コピペした後に変換し忘れました。orz

>>909
ゴメン、調べたけどよく分からなかったので、
最初に教えてもらった>>899の方法に直してしまいました。
>>907だと.c を1つでも更新すると全部コンパイルしなおすようになるようですね。


っで。定期上げです。セーブの調整と、[p]でアイテムを置けるようにしてみました。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0039.lzh

今後の予定:いいかげんにシナリオも考えないと、まずそうですね。
915デフォルトの名無しさん:2005/10/25(火) 11:09:59
RPGと関係ねーだろ
c++質問板逝きな
916デフォルトの名無しさん:2005/10/25(火) 17:22:07
>>914
ローグやってるみたいな感じで面白い。

移動は、一回一回Enterを押すのがめんどくさいから、
aaaaとか入力すると一度に4歩移動できるとか、
kbhit、getchを使ってEnterを省略できるようにするといいかも。

後、鋼の鎧を買って装備すると、装備できないと出るが、
あれは、敏捷が負になるとダメという事?
917デフォルトの名無しさん:2005/10/26(水) 00:17:57
a4で4歩移動できるぽい
918デフォルトの名無しさん:2005/10/26(水) 15:58:42
ホントだ。サンクス。
919 ◆382ingG3ec :2005/10/26(水) 18:32:23
>>915
だよね、ゴメン。だけど、C++は私が分かりません(涙
なので、こんどbcc32のスレで聞いてみます。orz

>>916
ありがとう! 鎧はそうです、敏捷がマイナスだと着られません。
あと、レベルとスキルが足りない物も使えないようにする予定です。
っていっても今はプログラム組むのに精一杯なので、
シナリオやゲームバランスには手が回ってません。orz

>>917
ありがとう! いいかげんに仕様書も作っておかないとマズそうですね。orz
920 ◆382ingG3ec :2005/10/27(木) 00:07:42
定期上げです。p から、道具を使えるようにしました。
◆を「盗賊の〜」で開けられて、●▲をツルハシで消せます。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0041.lzh

今後の予定:仕様書とかシナリオとか色々ありすぎて困っています orz
921デフォルトの名無しさん:2005/10/27(木) 00:35:29
乙。開発者一人か?
922デフォルトの名無しさん:2005/10/27(木) 01:27:11
だってゲ製の開発状況報告スレと中身変わんねーもん
だったらここでやる必要ねーべ
923デフォルトの名無しさん:2005/10/28(金) 00:38:10
しまった。装備を整えたら「盗賊の」の金が足りなくなった。
Aの敵でも強いし、1E1Gだからな・・。
でも難易度が高い方が好き。FCのドラクエ1や2みたいな。
924デフォルトの名無しさん:2005/10/29(土) 04:20:07
・ちゃんとした技術とやる気を持っている奴がひっぱていく
・開発時のノウハウをまとめて、Webサイトなどで公開する
・ものを作るよりも設計・技術に重点をおく

↑これをきちんとやればム板でも盛り上がります。
925デフォルトの名無しさん:2005/10/29(土) 06:35:56
>>924
不満があるなら君がやろうよ。
言うだけじゃクレクレ君と変わらない。
926デフォルトの名無しさん:2005/10/29(土) 07:10:14
やってる奴はいたが文句ばっかりいわれて消えたいったな
そういう奴らへの牽制のつもりなんだろ
927 ◆382ingG3ec :2005/10/29(土) 20:31:25
>>921 あれ作っているのは一人です。
    他の人は休止中、かな? それとも移動しちゃいましたか?

>>922 一理ある。けど、どうせだから私は1000レス行くまでは、ここにいます。

>>923 あ〜。ごめん。よく考えないで価格設定していました。
    って、今はテスト中なので、激安でもよかったんですよね。

>>924 一理ある。んじゃ、とりあえず仕様書かきをがんばってみます。
    っていっても。月末からまた少し消えるかも?だけど…

>>925 いや、真っ当な忠告だし不満って訳でもないんじゃないかなとか思ったり。

>>926 消えたって… もう戻ってこないのでしょうか? サミシイヨゥ… orz
928デフォルトの名無しさん:2005/10/30(日) 19:59:01
>>924が欲しいのは
・開発時のノウハウ
929 ◆382ingG3ec :2005/10/30(日) 23:25:10
>>928 あ〜。それは私も欲しいですw;

ってか、ごめん。
気になっていた所をあれこれやっていたら、
仕様書を書く前に力尽きましたorz
いちおう、定期上げだけしておきます。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0042.lzh
930デフォルトの名無しさん:2005/10/31(月) 01:44:01
・開発時のウハウハ
931デフォルトの名無しさん:2005/10/31(月) 07:44:07
>>930 あ〜。それは私も欲しいです
932USB ◆usbKuc0XkQ :2005/11/02(水) 21:10:02
ひっそりと参加してみる。
933デフォルトの名無しさん:2005/11/02(水) 21:23:15
コテハンなんて考える暇があったらコーディングしろよハゲ。
934デフォルトの名無しさん:2005/11/02(水) 21:25:34
トリップまで頑張って・・・orz
935デフォルトの名無しさん:2005/11/04(金) 22:19:22
ゲ製作の土日スレ行ったりしてプログラミングは続けてますよ
今はデータベース勉強中でMMORPG製作目指してる
936デフォルトの名無しさん:2005/11/08(火) 08:03:07
保守。
と言いつつ、既にこのスレは要らないのかな?ともおもいはじめていたり・・・・。
937デフォルトの名無しさん:2005/11/08(火) 15:38:00
俺もいらないと思う。ゲ製でやればいい。
938デフォルトの名無しさん:2005/11/08(火) 15:39:25
ちょwwwwwwwwうpしようと作りかけてた俺はwwwwwwwww
939デフォルトの名無しさん:2005/11/08(火) 15:50:51
>>938
ここでうpしてから思う存分ゲ製に池
940デフォルトの名無しさん:2005/11/08(火) 15:52:50
板違いならスレ移転かスレストかかるからここでやっていいんだと思ってる
941デフォルトの名無しさん:2005/11/08(火) 22:29:19
ここDelphiもあり?
942デフォルトの名無しさん:2005/11/08(火) 22:45:51
え?
943デフォルトの名無しさん:2005/11/09(水) 01:15:29
>>941
この状況でボケるオマイさんが好きだ!!
だが、スレタイを読めば、駄目だと思うよ。でも 【メール欄】
944デフォルトの名無しさん:2005/11/09(水) 20:30:18
ゲ製に行くならどのスレになるんだろう。
今はちょっと忙しいけど、少ししたら時間が出来るから挑戦したいんだけど
その頃にはこのスレ埋まってそうだしなぁ。
945デフォルトの名無しさん:2005/11/09(水) 21:00:30
1ドット単位のスクロールしようと思ってるんだけど
スクロール方向のチップ分大きな画面と、最終的に合成された画面の
二つの裏画面が必要だよね?
ページフリッピングとかできない場合、最終的に合成された画面って
表示される画面と一緒だから、メモリ勿体無いなと思うんだけど
裏画面一つで上手くやれる方法ってないの?
946デフォルトの名無しさん:2005/11/09(水) 23:42:53
.NETとSDKどっち使ったほうがいいかなー?
947 ◆382ingG3ec :2005/11/09(水) 23:55:28
>>943 なんともならないのかよ!w


ってか、ゴメン、仕様書が書けない。というか、ゲーム内容が決まらない orz

今まではプログラムの勉強として、一般的なゲームに使いそうな部品の組み方を試行錯誤していたので、
ゲームとしての形になるような仕様を、ほとんど決めていなかったんです。(TT)
ローグ系より魔法の塔みたいのが好きだけど、パズル考えるのが苦手だからどうしようとか。
基本的な部分さえ未だ決まっていないので、もしかしたら、
今まで書いたコードを全部書き直すことになるかもしれません。orz
ってか。いいかげん標準関数以外のものも勉強しようかと、迷っています。

あと、話に出てた次スレは、私的にはゲームを完成させることを目的にしていないので、
ゲ製よりここの方が居やすいのですけど、もしも移動した方がいいのなら、
■自主製作ゲーム:開発状況報告スレVer0.4■
http://pc8.2ch.net/test/read.cgi/gamedev/1125306375/
辺りに移動しようかと思っています。
948デフォルトの名無しさん:2005/11/10(木) 01:03:10
RPGの場合だとバックバッファつくって毎秒何FPSって描画するのと
描き変えがあるたびに描画しなおすのはどっちがいい?
949デフォルトの名無しさん:2005/11/10(木) 23:43:36
書き換えのデータ量とアルゴリズムによる
950デフォルトの名無しさん:2005/11/11(金) 15:29:59
>>946
おまいさんが、普通の奴ならSDKつか、どっかから持ってきたライブラリー。
変態趣味があるなら、.net。
.netは、使えない奴も多いし、なによりもへんなバグがちらほら見つかってるから今は待ちだと思う。
951デフォルトの名無しさん:2005/11/14(月) 16:49:20
sage
952デフォルトの名無しさん:2005/11/23(水) 19:51:55
RPGツクール2000みたいに、キャラが3パターンでアニメーションする場合
パターン順に、0, 1, 2, 1, 0, 1, 2, 1 みたいな順番で繰り返すんだけど
0, 1, 2, 1っていう風に数が繰り返す式が思いつかないんだけど、どんな式書けば良いんでしょうか?
今は仕方なく配列に入れてやってます。
953デフォルトの名無しさん:2005/11/23(水) 19:58:34
>>952
struct anime_node
{
954953:2005/11/23(水) 20:00:49
途中で送信しちゃったけど、配列として持つほうがスマートで正しいと思うよ
955デフォルトの名無しさん:2005/11/23(水) 20:21:34
d[0]
d[1]
d[2]
d[3]

d[3]=d[1]
}

それか
0 1 2
ではなくて
-1 0 1
と考える
-1 0 1 0 -1 0 1 0 -1 0 1 0 -1
(t-1) t (t+1)
と見ると
(t+1)=-(t-1)
956デフォルトの名無しさん:2005/11/23(水) 20:23:09
>>952
内部的には1==3とする4パターンのアニメーションにすれば
スマートに扱えると思う

その場合はパターンの更新は
i = ++i&3
の一行で済む
957956:2005/11/23(水) 20:26:03
あ、上のは副作用が二箇所あった。
こう読み替えて
i=i+1&3
958955:2005/11/23(水) 21:05:43
俺ももう少し考えてみた
(t+1) = -(t-1)+2
x = -(t-2)+2
「1つ前の変数」、の名前を入れておくところをx[1]
2つ前をx[2]、現在の式に使われるものをx[0]として

int x[3] = {0, 1, 2}; //初期化必須

x[0] = -(x[2])+2
ここでx[0]の絵を表示
x[2] = x[1];
x[1] = x[0];
959デフォルトの名無しさん:2005/11/23(水) 21:33:31
int x[3] = {0, 1, 2, 1};

もしくはsin使うとかw
960デフォルトの名無しさん:2005/11/23(水) 21:44:33
>>959
その配列で現在やってるって書いてあると思うが・・・
961デフォルトの名無しさん:2005/11/23(水) 22:37:39
私も考えてみた、けど。やっぱり素直に

char pic[4] = {'A','B','C','B'};
test = (test + 1) % 4 ;

でやるのが一番効率が良さそうですね。
962 ◆382ingG3ec :2005/11/23(水) 22:43:28
トリップ忘れたけど、>>961は私です… orz
あと、大まかなシナリオが決まったのでメモを置かせてください。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0043.lzh
久しぶりにコードを書こうとしたら、めちゃくちゃ忘れていて落ち込んでます。んじゃ。
963デフォルトの名無しさん:2005/11/23(水) 22:53:28
>>962
なんか恐ろしく面倒なシステムだね
せめてカーソルキーで移動できないと厳しいんでない?
964 ◆382ingG3ec :2005/11/27(日) 14:18:59
あ〜、ゴメン。実はカーソルキーの検出方法が分からないんです(^^ゞ
サイト検索して説明を捜してみたけど、複雑で私の手におえそうになかったので、
もう少し基礎的なプログラムに慣れるまで、敬遠させてください。orz
965デフォルトの名無しさん:2005/11/27(日) 15:16:24
DirectInput使え。
ついでにフォースフィードバックにも対応だ。
966デフォルトの名無しさん:2005/11/27(日) 16:32:15
カーソールキーでなくとも、エンター押さなくても検出できるように出来ればいいんじゃない。
967デフォルトの名無しさん:2005/11/27(日) 22:09:56
>>964
程よいサンプルを見つけたので参考までに。
ttp://www.geocities.jp/monalipse/c/api/Console.html
968 ◆382ingG3ec :2005/11/27(日) 23:09:48
みんな、ありがとう!
>>967の所はソースに詳しいコメントがあって分かりやすそうですね。
っていっても、やっぱり難しそうだけど……
ってか。今ほんとにデータ整理だけでも手一杯なんで、ゴメンナサイ orz

あと。中途半端だけど定期上げしておきます。* で終了します。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0044.lzh
969デフォルトの名無しさん:2005/11/28(月) 05:00:25
>>968
>>967のリンクみたいに自分でコンソールとやり取りするのは大変・・・
なのでよかったらこれドゾー
//MapVirtualKey用
#include <windows.h>
//getch or getche用
#include <conio.h>
int my_getch(void)
{
    unsigned char c = _getch();
    if(c != 0 && c != 0xe0) return -1;

    c = _getch();
    return (int)::MapVirtualKey((UINT)c,1);
}

getchがスキャンコードを返してきたときだけ仮想キーコードにして返す関数でつ。
普通の'a'とか'1'なんかだと-1が返ってきまつ。ちなみに矢印キーとかの仮想キーコードはこれ。
VK_PRIOR(PageUp) -> 0x21    VK_NEXT(PageDown) -> 0x22
VK_END -> 0x23    VK_HOME -> 0x24
VK_LEFT -> 0x25    VK_UP -> 0x26
VK_RIGHT -> 0x27    VK_DOWN -> 0x28

あと、MapVirtualKeyはuser32.dllに入ってるのでuser32.libのリンクをお忘れなく。
VC使ってるならこんな感じ。他はシラネ。
 cl test.cpp -link user32.lib

これならWinAPIのMapVirtualKey一つ使うだけなんでAllocConsole系よりかはまだ使いやすいかと。
970デフォルトの名無しさん:2005/11/28(月) 05:14:49
968じゃないけどありがとう
971デフォルトの名無しさん:2005/11/28(月) 06:41:23
GetKeyStateなんかもあるなああ:::
972デフォルトの名無しさん:2005/11/28(月) 15:41:24
APIは引数多いからね…。最小でやるとこう?

HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
INPUT_RECORD ir;
DWORD len;
ReadConsoleInput(hStdIn, &ir, 1, &len,);

ir.EventType == KEY_EVENT であれば、
ir.Event.KeyEvent.wVirtualKeyCode にキーコードが入ってくる。
キー押下時のみ処理する場合は ir.Event.KeyEvent.bKeyDown をチェックする。
973デフォルトの名無しさん:2005/11/28(月) 15:54:20
んー、相変わらずの良スレぶりですね。
974デフォルトの名無しさん:2005/11/28(月) 19:04:28
>>968
なんかうまく動作しない。
画面上にいくつか数値があって、画面下にテスト・データとあって、
Enterを押すと、かみつきとか特技やアイテム名が表示されていく。
975デフォルトの名無しさん:2005/11/28(月) 19:20:39
中身みるとそれでうまく動作しているようだ
976デフォルトの名無しさん:2005/11/28(月) 22:14:39
>>975
サンクス。
memo.txtの基本動作の所にA.移動 (←)+(歩数)
みたいに書いてあるが、今後の予定みたいなのかな。

>>968 memoより
>大事なデータは勝手に変更されないように、外部宣言を避けて、
>関数を通して弄るようにした方がいいと、
いいと思う。それかmain関数に宣言するか。
977 ◆382ingG3ec :2005/11/28(月) 23:11:47
ありがとう!
アレコレ見ていて、思いついたので、こんな物を作ってみました。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0045.lzh
……なんか、教えてもらったのを生かせてない気もするけど…… ゴメン

>>976
よかった。関数のコピペ改変しまくったかいがありました。w;
978969:2005/11/29(火) 01:09:38
>>977
test.cの37〜40行目の判定はキーボ−ドによってはうまくいかないかも。
スキャンコードって確かキーボード依存だったので、人によっては返ってくる値が違うことが・・・(´・ω・`)ショボーン

でも、俺のキーボードと同じ値を返してるみたいなんで意外と大丈夫なのかも。。。
979デフォルトの名無しさん:2005/11/29(火) 20:56:16
そろそろ次スレ立てようか。
どこに立てれば良い?
980デフォルトの名無しさん:2005/11/29(火) 20:57:26
もちろんゲ製に決まっておる
981デフォルトの名無しさん:2005/11/29(火) 22:57:54
あそこは止めたほうがいい。
ゲ製作技術板はゲーム作成のプロが集結する板だと勘違いしたゲーハー厨が
跳梁跋扈する板なんで、下手にゲーム作成するなんて言い出すと厨房がたかる。
982デフォルトの名無しさん:2005/11/29(火) 23:10:02
>>981
あー、通りであそこ荒れてたのか
983デフォルトの名無しさん:2005/11/30(水) 01:06:25
今まで通りプログラム板?
984デフォルトの名無しさん:2005/11/30(水) 01:32:05
>>981
どのスレを見てるんだ?全然そんなことないぞ。
985デフォルトの名無しさん:2005/11/30(水) 01:49:46
あっちはゲーム製作の視点でやらないと板違いになる。
>>42みたいな感じでプログラムの話ばかりだし、ここでいいと思うよ。
986デフォルトの名無しさん:2005/11/30(水) 02:14:24
ホスト規制で無理だったorz


スレタイ:C/C++言語でRPGを作ってみるスレ3

作りたい人がきてください。
基本はプログラムの方向で。

まとめサイト
http://himatanuki.hp.infoseek.co.jp/
まとめサイト(Wiki)
http://gamdev.org/w/?%5B%5BC%2FC%2B%2B%B8%C0%B8%EC%A4%C7%A3%D2%A3%D0%A3%C7%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%EB%A5%B9%A5%EC%5D%5D

前スレ
C/C++言語でRPGを作ってみるスレ  http://pc8.2ch.net/test/read.cgi/tech/1114834076/
C/C++言語でRPGを作ってみるスレ2 http://pc8.2ch.net/test/read.cgi/tech/1120889562/
987デフォルトの名無しさん:2005/11/30(水) 02:51:02
立てたよ。

C/C++言語でRPGを作ってみるスレ3
http://pc8.2ch.net/test/read.cgi/tech/1133286541/
988デフォルトの名無しさん:2005/11/30(水) 11:30:49
>>987
えらい!
989デフォルトの名無しさん:2005/11/30(水) 15:18:17
途中で作るの辞めた私が言うのもなんだけど、このスレ超良スレだよ。
今積極的に作ってるのは382さんだけかな。
がむばってほすぃわぁ。
990デフォルトの名無しさん:2005/12/01(木) 08:45:27
ume
991 ◆382ingG3ec :2005/12/01(木) 18:25:56
次スレキタ━━━━━━(゚∀゚)━━━━━━ !!
スレ立て乙です! ム板にいられて嬉しいですw

んでもって、この前の >>977の件ですが、>>978さんありがとう!
どうやらgetchで出てきたintの値は、国別のコードで違うっぽいです。
で、その違うのを、共通の値に直してくれるのが、MapVirtualKeyらしいです。
(実はこの辺まだよく分かってなかったりするのですが…とにかくダメっぽいです)
なので、>>969さんが教えてくれた感じに、MapVirtualKeyに直してみました!
いろいろ中途半端ですが、いちおう訂正版です。
http://himatanuki.hp.infoseek.co.jp/cgi-bin/uploader/src/up0046.lzh
MapVirtualKeyは、Input.c 内の InputArea_getch で一括判定してみました。

>>989 ありがと〜がんばるよ〜! そっちもがんってね〜!
992デフォルトの名無しさん:2005/12/02(金) 01:23:32
うめ
993デフォルトの名無しさん:2005/12/02(金) 03:57:57
ume-
994デフォルトの名無しさん:2005/12/02(金) 07:46:48
産め
995デフォルトの名無しさん:2005/12/02(金) 09:22:11
ume
996デフォルトの名無しさん:2005/12/02(金) 09:43:42
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< ぱいそんぱいそん!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん!
ぱいそん〜〜〜!   >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /
997デフォルトの名無しさん:2005/12/02(金) 15:05:51
997
998デフォルトの名無しさん:2005/12/02(金) 15:06:20
998
999デフォルトの名無しさん:2005/12/02(金) 15:37:18
666
1000デフォルトの名無しさん:2005/12/02(金) 15:40:29
1999
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。