09/01/18 15:22:57 0Ylj0E2s
>>198
ターン制の戦闘を想定する場合、
敵、プレイヤのデータをカードに書いて置いて、
「プレイヤのコマンド入力」→「敵のコマンド入力」→「攻撃順にカードを並べる」→
「カードの順番にカードに対応する各キャラクタが行動する」→「最初にもどる」
みたいな感じでどうよ。
敵が100人だろうと1000人だろうと問題ないね。
C++だと、カードっていうスーパークラスがあって、
プレイヤや敵はそのクラスを継承して、ポリモーフィズムを形成してうんたらかんたら
201:名前は開発中のものです。
09/01/18 16:19:05 p3BsxAdP
>>198
if文を使っているか使っていないかといわれれば使っているが
当然それだけで制御しているわけじゃない
あと、人数が増えてもキャラにIDをつけてforで回せばいいので大変さは変わらない
参考(javaのRPG戦闘ソース)
URLリンク(www.geocities.co.jp)
C++でもアルゴリズムは同じ
202:名前は開発中のものです。
09/01/29 07:20:21 ETfSP+cE
URLリンク(dixq.net)
↑のs2. サウンドノベル風文字列表示法1にあるプログラムの
for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}
って何を意味してるの?
203:名前は開発中のものです。
09/01/29 10:03:40 xirprjZ5
>>202
キー入力状態に変化があったかどうかを調べてる。
特に、「押してない状態(0)」→「押してる状態(1)」に変化しているなら、
「今押された(2)」ってことにしてる。
てかリンク先間違ってるだろそれ。
204:名前は開発中のものです。
09/02/19 00:05:49 YuEFv8kY
2Dのアクションゲームを作ってるんですが、斜め方向のマップの当たり判定はどうやったらいいんでしょうか
今までマップチップ単位でキャラとマップの当たり判定をやってたんですがこれだと傾斜のあるマップに対応できないです。
マップチップとは独立してドット単位で当たり判定のデータを用意するくらいしかないでしょうか
205:名前は開発中のものです。
09/02/19 09:04:49 CC1OIocp
>>204
難しいこと考えてるなあと。
マップチップでは管理しきれないと思う。ドット単位というのも無茶な話。
キャラ(オブジェクト)単位での当たり判定になるね。
「14歳からはじめるC言語ゲームプログラミング」
URLリンク(www.rutles.net)
この本のサンプルが、そのものずばりで解決してくれると思う。
ソース無しのサンプルゲームはDLできるので、これ見て役に立ちそうならどうぞ。
206:名前は開発中のものです。
09/06/22 23:33:49 PR8N99oV
段階スレのまとめって今はどこなの?
207:名前は開発中のものです。
09/06/23 01:02:00 dkvBYAOU
gamedevは新しくなってる
URLリンク(wiki.game-develop.com)
208:名前は開発中のものです。
09/09/08 11:21:57 yapzJvXF
初学者にやさしいゲームってどういう順番で作るのがいい?
○1.○×ゲーム
○2.15パズル
敵が無い、思考ルーチン考えないでいいぶん2のほうが楽かな。
○3.マインスイーパー
4.ブロック崩し
5.倉庫番
6.テトリス
:
:
○は作った。次は倉庫番かと思ってたけど、DXライブラリがバージョンアップして
描画改善に伴いマウスの反応が良くなったからブロック崩しに行こうかと。
7以降とか2.5相当とか、追加あったら応援おねがいしたい。
209:名前は開発中のものです。
09/09/08 11:29:49 6MhMNrx0
自分が作りたいゲームで作れそうなの作れば
210:名前は開発中のものです。
09/09/09 12:09:38 eLuVrXen
>>200
>C++だと、カードっていうスーパークラスがあって、
ここの所もうちょい詳しく
そういうクラスが標準で用意されてるのかと思ってググってみたんだけど、全然ヒットしないです
これは基底クラスを自前で作ってそこから派生させろという話?
211:名前は開発中のものです。
09/09/09 14:17:10 vKyxO6xF
>>210
自分で作るんだよ。
たとえば「戦士は敵Aを攻撃」「魔法使いは呪文で全体攻撃」とか、行動の記録を構造体の配列なんかで持たせて
全部出揃ってから素早さ順なんかでソートする。
200のやり方はこのカードからプレイヤーや敵のクラスを継承させるみたいだけど
俺はキャラデータからカードを完全に分離させて、カードの仕事は行動解釈だけに絞るほうが好み。
212:名前は開発中のものです。
09/09/09 21:51:16 UMpltBwW
>>211
ありがとうございます
>>200は「カードっていうスーパークラスを作って」の意味でしたか
213:名前は開発中のものです。
09/09/29 05:17:35 kGLDkUja
C言語でちょっと数値計算できる程度の実力ですがC++でゲーム制作に挑戦することにしました。
とりあえず数当てゲーム作ったけど、数字じゃなくて文字が入力された場合の例外処理がよくわからなくて棚上げ
ひとまず次頑張ってみます
214:名前は開発中のものです。
09/09/29 05:56:42 tenDfojw
標準関数のisdigit使えば何とかならん?
215:名前は開発中のものです。
09/09/29 08:18:06 kGLDkUja
aとかaaaとかは抜けれるようにできましたが1aとかがまだでした
一回寝てからもう少し頑張ります
216:名前は開発中のものです。
09/09/29 13:45:22 /Wz8dUNK
atoiの存在に今気付いた
isdigitなんか使う必要ねーじゃん
217:名前は開発中のものです。
09/09/29 13:59:20 yWA5tZHN
URLリンク(kansai2channeler.hp.infoseek.co.jp)
けっこう連続入力とか嵌るんだよな
218:名前は開発中のものです。
09/09/29 16:08:36 ryAGnP+G
ご丁寧にありがとうございます
とても参考になりました
219:名前は開発中のものです。
09/10/12 09:30:46 fQgZRfDp
C言語暦約一ヵ月半、winapi暦2週間の初心者ですが、練習のために>>7に挑戦してみました。
URLリンク(www1.axfc.net)
ソースはあまりにもぐちゃぐちゃなので恥ずかしいので載せてません。
載せたほうがいいですか?
いちおうそれっぽいのはできたんですが、一点うまくいってないところがあって、敵の動きがうまくいきません。
敵位置を配列にしてるんですけど、for文で、敵[i]をまず消して、敵[i]の位置情報を変えて、敵[i]を再描画する、という順序なんですが、
敵[i-n]が移動した先が敵[i]の移動前の位置だとするじゃないですか。
すると、敵[i]の移動に伴って、敵[i-n]が消えちゃうんですよね。
かといって、まず全部敵を消してから位置情報を変えて、改めて全部の敵を表示するようにすると、こんどは敵が消えている時間帯が多く発生するので、画面がなんかちかちかするんですよ。
どうやって解決したらいいんだろう?
220:名前は開発中のものです。
09/10/12 10:41:42 PNg7pEvy
>>219
後者のやりかたの発展になるけど、裏画面に画像を用意してWM_PAINTのタイミングで入れ替える。
ホワイトボードの裏側に回って絵を描いて、合図がきたら裏返すイメージ。
ダブルバッファリングとかオフスクリーン描画とかで調べるといい。
C系のWindowsでゲーム作るなら必須の知識になる。
しかし1ヵ月半でここまでできるのはすごいな。
221:名前は開発中のものです。
09/10/15 06:26:55 5kHMShZk
>>220
ありがとうございます。
URLリンク(www1.axfc.net)
こうなりました。
どうでしょうかね?
もとがぐちゃぐちゃなので直すのに結構苦労しました。
ついでに、敵に当たっても移動できてしまうのを直しました。
222:名前は開発中のものです。
09/10/23 09:54:20 r4hfvq6d
カソル
223:名前は開発中のものです。
09/12/07 01:50:47 cfqCdEHC
あのさ、ActionScript3で質問なんだが、
FLASHってゲームループの概念なし?
それともEnterFrameとかタイマーイベント使ってやるのか?
イマイチピンとくる説明が検索でけんかった。
224:名前は開発中のものです。
09/12/08 17:07:56 cuTUnnQj
空気を読まずにお題を出してみる。
下記のデータ(ソース)がある。
const int max_choice_num = 3;
/* シーン */
struct Scene {
const char* const message; /* メッセージ文 */
int choice_num; /* 選択肢の数(0= 終了, 1= 強制移動, 2> 選択) */
int next[max_choice_num]; /* 次のシーンID */
};
/* シーンデータ(添え字がID) */
const Scene scene_data[] = {
{ "よくきた、勇者よ\n", 1, 1, },
{ "魔物を退治してくれんか?\n0: 任せてください\n1: いやです\n", 2, 2, 3, },
{ "では、行ってまいれ!勇者よ!\n", 0, },
{ "そんなこと言わずに・・・\n", 1, 1, },
};
225:224
09/12/08 17:09:39 cuTUnnQj
実行すると
よくきた、勇者よ
魔物を退治してくれんか?
0: 任せてください
1: いやです
> 1 <- 入力待ち
そんなこと言わずに・・・
よくきた、勇者よ
魔物を退治してくれんか?
0: 任せてください
1: いやです
> 0 <- 入力待ち
では、行ってまいれ!勇者よ!
となるようなプログラムを書け。
226:名前は開発中のものです。
09/12/08 21:47:41 dR/37Ta8
プログラムつうより普通スクリプトでやる処理だわな
227:224
09/12/08 23:54:51 LCrDR7+W
>226
これができたら、データを外部ファイルに出して処理してみるとか
ステップアップしていくと勉強になるかなと思ったんだけどね。
少しがんばればコンソールで簡単なテキストADVが作れるってのが
分かればモチベーションも上がるかなと思ったんだ…
つか過疎ってるから模範解答を出すタイミングが難しいな。
228:224
09/12/12 16:11:25 W7i0pvEF
模範解答。エラー処理とか一切してません。
int main() {
const Scene* active = NULL;
const Scene* next = &scene_data[0];
do {
active = next;
printf("%s", active->message);
if(active->choice_num == 1) {
next = &scene_data[active->next[0]];
}
else if(active->choice_num >= 2) {
int index;
printf("> ");
scanf("%d", &index);
next = &scene_data[active->next[index]];
}
} while(active->choice_num != 0);
return 0;
}
229:名前は開発中のものです。
10/05/27 17:19:08 cXVnDiqT
保守age