【入門書クリア前提】初心者用段階的ゲーム製作スレ
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/12/21(日) 10:01:44ID:XeH+Z5e9って人のためのスレ
入門書おわた
↓
コンソールでゲーム製作
↓
DXライブラリでも使ってゲーム製作
こういう順番で段階的にやって行きたい
基本は
1.詳しい人がコンソールのゲームでお題を出す
2.初心者が作る
3.できるまで自分で調べて頑張る
4.どうしても無理ならソース晒して教えてもらう
5.完成したらソース晒して、他の製作者のものと比べてウマー
とりあえず、入門書から先に進めなくて涙目になってる人(俺含め)のためのスレです
0119名前は開発中のものです。
2008/12/26(金) 20:55:42ID:PhPwcMia0120名前は開発中のものです。
2008/12/26(金) 21:02:02ID:S9F3mZ1U君だったら、勉強しながら、後進のために作るかい?
面倒くさがって作らないだろ。
この世には、君のような奴だらけなのさ。
0121名前は開発中のものです。
2008/12/27(土) 00:17:12ID:GD7+RbfXというかそんなようなのを作ったことがある。
結局ホームページ自体を公開しなかったが。
0122名前は開発中のものです。
2008/12/27(土) 00:23:21ID:BgZGJ+VYせっかく気合入れて作るくらいなら、本にして印税もらいたい
0123名前は開発中のものです。
2008/12/27(土) 00:30:31ID:q0mgxuErttp://racanhack.sourceforge.jp/rhdoc/
0124名前は開発中のものです。
2008/12/27(土) 08:53:55ID:8o0sem2Yブログで製作のライブ中継やると、完成しないというジンクスが。
ってか、実際に実況製作やってみると、ブログに思考中断されてうっとおしくなる。
まだ見ぬ弟子のこと考えて技術ブログ書くのなら
たいてい前もって完成させてからの、ログ追いトレース記事になってしまう。
完成すれば楽しい思い出の、ぐだぐだ設計迷走日記とはなかなか両立しない。
0125名前は開発中のものです。
2008/12/27(土) 10:41:20ID:44v0/Te5重複しない数字作成に関して
ループの中で
ans[0] == ans[1], ans[1] == ans[2],
ans[2] == ans[3], ans[3] == ans[4]
の比較を行っているが、右辺は何も値が代入されていないので、
その条件は絶対に成立しない
ans[4]は定義されていないので、i = 3 のときに実行しようとすると多分落ちる
ループの最後に実行される continue 文は何も意味を持たない
多分勘違いしていると思うが、continue 文を実行しても i の加算処理は実行される
PGMの製作経験が不足している気がする
PGMのロジックを組み立てる練習にコンソールゲーム作成はいいと思うので
面倒と思わずにまずはひたすら組んで実行してみることを勧める
0126名前は開発中のものです。
2008/12/27(土) 10:44:28ID:QMJ1Aqu3ttp://inu.harisen.jp/top.html
0127名前は開発中のものです。
2008/12/28(日) 11:46:19ID:Wm8cLO/2http://dixq.net/g/
12月2日から↑このサイト見ながらゲーム作り始めた
「不可思議2」みたいなゲーム作りたくてダンジョン自動生成と
マップスクロールとキーコンフィグは何とか作った
でもC言語は1ヶ月くらいしか勉強してないし
ゲーム製作の経験もないので悪戦苦闘中
出来た!と思って打ち込んだプログラムが1発で動いたことは1度もない
ゲーム作りがこんなに面倒だとは思わなかったよ
0128名前は開発中のものです。
2008/12/28(日) 13:23:09ID:iZvh/mGaint ans[4];
int flag = 1;
while(flag){
flag = 0;
for(i = 0 ; i < 4 ; i++) ans[i] = rand() % 10;
for(i = 0 ; i < 3 ; i++){
for(j = i + 1 ; j < 4 ; j++){
if(ans[i] == ans[j]){
flag = 1;
break;
}
}
}
}
かな。
0129名前は開発中のものです。
2008/12/28(日) 13:39:04ID:iZvh/mGaint used[10];
int arr[4];
int n;
for(i = 0 ; i < 10 ; i++) used[i] = 0;
for(i = 0 ; i < 4 ; i++){
n = rand() % 10;
if(!used[n]){
arr[i] = n;
used[n] = 1;
}else{
i--;
}
}
乱数が当たらないとループを抜けられないことを嫌うなら
int num[10];
int arr[4];
int n;
for(i = 0 ; i < 10 ; i++) num[i] = i;
for(i = 0 ; i < 4 ; i++){
n = rand() % (10 - i);
arr[i] = num[n];
for(j = n ; j < 9 ; j++) num[j] = num[j+1];
}
最大でも30ループほどで抜ける。
シンプルだけど可読性が悪い例だ。
ケアレスミスはご容赦。
0130名前は開発中のものです。
2008/12/28(日) 13:50:34ID:iZvh/mGaあるいは、重複しても極めて小さな誤差として無視する。
int r[10];
int arr[4];
int n_max = -1, rand_max;
for(i = 0 ; i < 10 ; i++) r[i] = rand();
for(i = 0 ; i < 4 ; i++){
rand_max = -1;
for(j = 0 ; j < 10 ; j++){
if(r[j] > rand_max){
rand_max = r[j];
n_max = j;
}
}
arr[i] = n_max;
r[n_max] = -1;
}
選択ソートの応用。
この場合はコード的にも計算量的にも誤差的にも使い物にならないけどw
0131名前は開発中のものです。
2008/12/28(日) 17:14:32ID:zA6Xag1Z必要な桁だけ使うという手もあるな
これだと重複ミスが起こりにくいし毎回決まった回数の処理で数字が決められる
それにトランプゲームとかにも応用できるし、定番のswapを作る機会にもなる
0132名前は開発中のものです。
2008/12/28(日) 19:38:05ID:DKMQoCt4それ以前に std::random_shuffle を使えば一瞬なのでは?
0133名前は開発中のものです。
2008/12/28(日) 19:39:32ID:LzwzO4A7intで10個の要素を持つ配列を用意する
(1から9までの数字しか使わないなら0の分抜かして9個の配列で)
各要素に0から9までの数字を入れておく
手順2
ランダムで0から9個までの数字を作る
そのランダムの数字の要素を取り出す
そのランダムの数字の要素を
最後の要素と入れ替える
手順3
ランダムで0から(9−1)までの数字を作る
そのランダムの数字の要素を取り出す
そのランダムの数字の要素を
(最後ー1)個目の要素を入れ替える
この時点で
例えば1度目のランダムが3、2度目のランダムが5の場合、
intの入っている要素の数字は
[0,1,9,3,8,5,6,7,5,2]
となっているはず
って。これシスアドのテスト範囲にあったような気がする
0134名前は開発中のものです。
2008/12/28(日) 19:41:22ID:LzwzO4A70135名前は開発中のものです。
2008/12/28(日) 19:59:16ID:zA6Xag1ZCユーザーじゃないからその関数を知らなかったのです
勉強になった
0136名前は開発中のものです。
2008/12/29(月) 01:30:45ID:hfGjo2/l自分は>>106の考え方が一番好きだ
int ans[4];
for(int i = 0; i < 4; i++){
ans[i] = rand() % 9 + 1;
if(ans[i] == ans[(i+1)%4] || ans[i] == ans[(i+2)%4] || ans[i] == ans[(i+3)%4]){
i--;
}
}
0137名前は開発中のものです。
2008/12/29(月) 19:09:23ID:z5KMzts+int ans[4];
for(int i = 0; i < 4; i++){
ans[i] = rand() % 9 + 1;
if(ans[i] == ans[0] || ans[i] == ans[1] || ans[i] == ans[2] || ans[i] == ans[2]){
i--;
}
}
0138137
2008/12/29(月) 19:10:15ID:z5KMzts+0139名前は開発中のものです。
2008/12/29(月) 19:13:11ID:z5KMzts+指数が比較対照と同じになる部分で必ず等しくなってしまうから、
素直に数字を使えないんだって、
書いてる途中で気づいて自己解決したってことです。
重ね重ねゴメン。
0140名前は開発中のものです。
2008/12/29(月) 21:42:14ID:hCBOt5BE素人くさいけどヘタウマというかカコイイ!!
アリだと思います。
int i,a[4];
for{;;}
for(i=0;i<4;i++)a[i]=rand()%9+1;
if((a[0]!=a[1])&(a[0]!=a[2])&(a[0]!=a[3])
&(a[1]!=a[2])&(a[1]!=a[3])
&(a[2]!=a[3])) break;
}
0141名前は開発中のものです。
2008/12/29(月) 23:10:08ID:aUqRb6Dtプログラムなんてのはトレードオフだからね。
何かを得れば、何かを失うもの。
確かに効率は良くない。
だが、見通しの良さ、わかりやすさは◎。
ところが、そのコードにはアレルギーを起こす人が多い。
なぜか?
特定の条件でループを抜ける、というのは、
無限ループを仕込む典型的な原因だからだ。
失敗にも、上手な失敗と下手な失敗があって、
明示的にエラーを吐いて終了 > 動くが挙動不審
> 無限ループ > 突然クラッシュ
の順。
で、上手な人ほどよりよい失敗に落ちるようにする。
たとえばそのコードだと、&&を&に間違えている。
それが原因になっても、どこで腐ったのか見えにくい。
0142名前は開発中のものです。
2008/12/30(火) 10:21:17ID:4Lg4VVtCint ans[4];
retry:
ans[0]=rand()%9+1;
ans[1]=rand()%9+1;
ans[2]=rand()%9+1;
ans[3]=rand()%9+1;
if(ans[0]==ans[1]){goto retry;}
if(ans[0]==ans[2]){goto retry;}
if(ans[0]==ans[3]){goto retry;}
if(ans[1]==ans[2]){goto retry;}
if(ans[1]==ans[3]){goto retry;}
if(ans[2]==ans[3]){goto retry;}
0143名前は開発中のものです。
2008/12/30(火) 10:27:05ID:4Lg4VVtCwhile(1){flag=0;for(i=0;i<4;i++)ans[i]=rand()%9+1;for(i=0;i<3;i++)for(j=i+1;j<4;j++)if(ans[i]==ans[j]) flag=1;if(!flag)break;}
0144名前は開発中のものです。
2008/12/30(火) 10:34:18ID:t9a5j063よくみんな書くよなw
0145名前は開発中のものです。
2008/12/30(火) 14:31:15ID:JKlPtp7sねえな
0146名前は開発中のものです。
2008/12/30(火) 15:22:16ID:J3AJ9cNy(118のソースはこなれていて突っ込むところがないが)
次の課題もないから話題がないせいだな
>>1じゃなくてもCじゃなくてもちょうどいいレベルの初心者がいれば
良スレになる可能性があるのに
0147名前は開発中のものです。
2008/12/30(火) 15:56:56ID:+lVIynAgmemset(input,0,sizeof(input));
sprintf(fmt,"%%%d[1-9]",digits);
scanf(fmt,input);
scanf("%*[^\n]%*c");
の意味が分からなくて悩んでいるんだけど。
こういうの正規表現っていうんだっけ?
こういうのを解説しているサイトみたいなのある?
0148名前は開発中のものです。
2008/12/30(火) 16:07:44ID:JKlPtp7s正規表現のサブセットみたいなの
0149名前は開発中のものです。
2008/12/30(火) 16:56:17ID:k/oqyFbBsprintf(fmt,"%%%d[1-9]",digits);
で次の文字列が得られる
char fmt[]="%4[1-9]";
scanf(fmt,input);
でinputに'1'から'9'の文字を4文字だけ読み込む
他の文字や、4文字より多くの入力があると入力バッファに残るので
scanf("%*[^\n]%*c");
で読み捨てる。入力文字の最後は改行文字なので
"%*[^\n]"で改行文字まで読み捨てて、"%*c"で改行文字を読み捨てる。
入力バッファを空にすると次の入力もスムーズにおこなわれるってわけ。
wikipediaのscanfの項目によくまとまってるよ。
0150名前は開発中のものです。
2008/12/30(火) 17:02:39ID:+lVIynAg0151名前は開発中のものです。
2008/12/31(水) 15:24:44ID:VYxP3E090152名前は開発中のものです。
2008/12/31(水) 15:25:43ID:VYxP3E09ちなみにC言語です
0153名前は開発中のものです。
2008/12/31(水) 16:45:26ID:xHQ2htSHここに書き込まれているプログラムの内容とか難しく感じる
0154名前は開発中のものです。
2008/12/31(水) 16:49:09ID:nhGJ70sbもう少し詳しく聞いたほうがいいかも?
オブジェクトの配置ってことは、
それ以前の普通に画面表示するところはできてるのかな?とか。
絵的に複数のマップチップを背景画に配置するようなことなのかな?とか。
宝箱や扉のイベント用オブジェクトの作り方なのかな?とか。
手持ち品の入れ替えする時とかに別に開くような、
操作用別ウィンドウみたいのを配置するののことなのかな?とか。
>>153
ここはゲーム作りそれ自体よりも、ゲーム作りを通じて、
プログラミングの言語を理解するのが主目的みたいだね。
っていっても。まだ参加者少ないからこれから、
これからどうなるか分からないけど。こっそり勉強させてもらってます。
0155名前は開発中のものです。
2008/12/31(水) 17:44:21ID:VYxP3E09キャラを表示したくてもどこにどのように表示するのかさえわかりません。。
入門書はゲームに無関係なC言語のものを読んでたのでまったくわかりまへん
0156名前は開発中のものです。
2008/12/31(水) 18:21:06ID:MMS8KoX5だったらまず>>127のリンクのページを読むか
「Windows API」をググって出てくるHPを読むといいよ
0157名前は開発中のものです。
2009/01/01(木) 04:39:05ID:LU3n6Iulそのファイルの中のサンプルプログラム実行用フォルダに入ってるファイルがほとんど開けない状態になってるんですが
どうすれば開けるようになりますか?
0158名前は開発中のものです。
2009/01/01(木) 10:04:51ID:MDNTZvu6ここ↓でDXライブラリの設定をしないと使えない
DXライブラリの使い方解説
http://homepage2.nifty.com/natupaji/DxLib/dxuse.html
0159名前は開発中のものです。
2009/01/02(金) 14:45:45ID:2uMBMwue↓
AVisual C++ 2008 Express Editionダウンロード
↓
BVisual C++ 2008 設定
↓
CWindowsプロジェクト(Win32プロジェクト)作成
↓
Dプロジェクトにcppファイルを追加
↓
Eプロジェクト設定
↓
Fウィンドウ作成
↓
G画像表示
流れはこんな感じ?
0160名前は開発中のものです。
2009/01/03(土) 01:00:46ID:cGzTJz3uそれとDxライブラリとかいうソフトの中のサンプルファイル実行用フォルダの中にあるDxLib_VC2008_and_2005用.slnっていうファイルが開けません・・
システムの復元とかやったり何度もやり直してみたけどだめですた
0161名前は開発中のものです。
2009/01/03(土) 01:30:21ID:8KicIl/nてかさ、だから何?
解決策が欲しいのか?それだとしても
>2つのファイルが
はないだろ。
0162名前は開発中のものです。
2009/01/03(土) 16:51:04ID:cGzTJz3uっていうかもうすでにborlandを過去にインストールしてたのでこれが原因でVCをインストールできなかったのかもしれないです
それで
http://homepage2.nifty.com/natupaji/DxLib/dxuse_bcc.html
の手順で”8.プロジェクトのビルド、実行”までいったんですけど実行すると6で作ったDrawPixel.cppが開けないというエラーが出ます
ちなみにDrawPixel.cppを4で作ったtestファイルから出すとエラーではなくてfatalという表示が出て
またDrawPixel.cppのところでdoes not exist - don't know how to make it
とかいう常時がでるんですがどうすればいいのかさっぱりわかりません++;
0163名前は開発中のものです。
2009/01/03(土) 16:52:16ID:cGzTJz3u表示 ○
0164名前は開発中のものです。
2009/01/03(土) 17:39:20ID:cGzTJz3uこれはインストールできてると思っていいんですか?
でも相変わらずDxLib_VC2008_and_2005用.slnは開けません
ダブルクリックすると一瞬砂時計は見えるんですがその後何も起こらないような状態です
それとborlandに変更するときにDxLib_VCを削除しようとしたのですが他のユーザーかプログラムが使用しているので削除できませんという表示が出て削除できませんでした
何のプログラムが使ってるんですか?
0165名前は開発中のものです。
2009/01/03(土) 18:18:16ID:cGzTJz3uとりあえずこっちでやっていこうと思います
0166名前は開発中のものです。
2009/01/03(土) 18:28:48ID:LXo4lpsC低学歴ってこういうところが図々しいんだよなぁ。
0167名前は開発中のものです。
2009/01/04(日) 05:47:47ID:8iog1RSe0168名前は開発中のものです。
2009/01/04(日) 08:50:13ID:je6HotHc本質理解せずにやり方だけ憶えたって、たいして上達しない気がする。
まるでツクールでゲームを作ってるような
0169名前は開発中のものです。
2009/01/04(日) 14:27:38ID:zQBmDULY↑これの3.プロジェクトの作成のところのCにある”場所”ってどこでもいいんですか?
デフォルトでまったく関係ない場所にあるVC2008のフォルダの中のプロジェクトっていうフォルダに保存されるんですが
その後プログラムを組んでいくとDXLibのサンプルプログラム実行用フォルダに入ってる画像ファイルを表示できないのですが・・・
0170名前は開発中のものです。
2009/01/04(日) 14:34:04ID:gz3s55od上級者気取りのチンカス野郎
PC入門書から読んできた方がいいハゲ
もうだめだ
0171名前は開発中のものです。
2009/01/04(日) 15:09:39ID:zQBmDULYこれはDXlibとVC++がリンクできてないってことですか?
一応設定ガイドのとおりに進めてきたんですが唯一設定ガイドのとおりにできなかった点は
DxLib_VC2008_and_2005用.slnからVC++を開けなかったことぐらいです
なのでVC++を直接開いたんですがこれが原因だったんでしょうか・・・
0172名前は開発中のものです。
2009/01/04(日) 16:38:36ID:WqEDI8cx1.Cの文法を知っている状態
2.標準ライブラリを一通り知っている状態
3.APIを一通り知っている状態
4.その他、適切なライブラリを選んで使える状態
のうちのどれなんだろうか?
Java、VB、HSPなどは1〜3まで切れ目なく1冊の
入門書に書いてあるけど
Cの場合、1だけっていうのも結構あるような気がする
いずれにしても>>171は
0.PCが使いこなせる
-1.日本語わかります
の段階さえあやしいような気がするが
0173名前は開発中のものです。
2009/01/04(日) 16:45:09ID:zQBmDULY0174名前は開発中のものです。
2009/01/04(日) 16:46:17ID:zQBmDULY0175名前は開発中のものです。
2009/01/04(日) 16:47:24ID:BrM7xX/40176名前は開発中のものです。
2009/01/04(日) 16:48:15ID:vNJyTbKi0177名前は開発中のものです。
2009/01/04(日) 16:51:04ID:zQBmDULYこのソフト導入のところさえパスすれば後はここで聞くこともなくなるとおもうのですが・・
0178名前は開発中のものです。
2009/01/04(日) 17:01:26ID:vNJyTbKiこれが出来ないような人間に絡まれちゃった><
0179名前は開発中のものです。
2009/01/04(日) 17:10:00ID:vNJyTbKiついでに答えておこう。
ただ煽りたいだけですから^^
書かれた通りにやってここまで出来ましたが
ここからは本に書いてないので出来ません^^;
自分で考えるのも面倒です><
0180名前は開発中のものです。
2009/01/04(日) 17:11:38ID:zQBmDULY0181名前は開発中のものです。
2009/01/04(日) 17:11:41ID:phKiW/kW0182名前は開発中のものです。
2009/01/04(日) 17:14:35ID:vNJyTbKi0183名前は開発中のものです。
2009/01/04(日) 17:18:38ID:vNJyTbKiなんて聞いちゃうレベルの奴はDXライブラリ使う前に
コンソールでジャンケンゲームでも作ってろよ
質問したいだけなら他のスレがあんだろw
0184名前は開発中のものです。
2009/01/04(日) 18:17:54ID:f8v2HP5/どこでもいいです。
私は「マイドキュメント」以下に保存しておくのが望ましいと思います。
画像ファイルが表示できないとのことですが、何かエラーメッセージは表示されていませんか?
画像ファイルのファイル名の指定を変更する必要があるかもしれません。
相対パスではなく、絶対パスで指定してみてはいかがでしょうか。
0185名前は開発中のものです。
2009/01/04(日) 18:39:20ID:c/UGKimfちゃんと調べて試した上で質問しているのかな?
0186名前は開発中のものです。
2009/01/04(日) 21:47:04ID:y/OXv3G40187名前は開発中のものです。
2009/01/05(月) 03:39:55ID:+gOec/oiぐぐって出て来ないのが続くと不安になっちまうのかしらねw
0188名前は開発中のものです。
2009/01/05(月) 18:17:32ID:bFiw377Jとりあえず画面に文字表示した
0189名前は開発中のものです。
2009/01/05(月) 18:49:22ID:8qPbFVnrこれなんてどう?
ゲーム名:ナベアツゲーム
ルール:
マウスをクリックするたびに数字が増える
3の倍数と3のつく数字の時には右クリック、それ以外は左クリックを正解とする
不正解の時には何らかのペナルティ(方法は自由)
制限時間内にできるだけ数字を増やす
課題の目的:マウス入力や時間処理の基礎を学ぶ
0190名前は開発中のものです。
2009/01/05(月) 21:44:02ID:TTfreMdG0191名前は開発中のものです。
2009/01/05(月) 22:28:31ID:bFiw377J何か疑問抱き始めたんだけどwww
0192名前は開発中のものです。
2009/01/05(月) 22:47:23ID:TTfreMdG0193名前は開発中のものです。
2009/01/05(月) 23:07:11ID:07Sg+bJ8作るのが目的じゃなくて作り方を勉強するのが目的だからな
他の言語でやったほうが効率がいいとかの議論は無意味、
というかそれ以前に言語は指定していない(>>188の環境とか知らんし)
どんな言語でも画面に文字を表示できたら次の段階は入力で表示を変えることだ
0194名前は開発中のものです。
2009/01/07(水) 15:57:35ID:wOTyk9Wsポットペッター
色んなお店のクーポンがいっぱい付いてるやつ
0195名前は開発中のものです。
2009/01/16(金) 11:49:40ID:yiTw/vGB↑の跳ね返りの考え方1っていうところのソースを解説できる人いる??
主に
if(flag==1){
time2 = GetNowCount() ; // 現在経過時間を得る
t = (double)(time2 - time1) / 1000.000;
v0= sqrt ( 2.000 * g * y_max); //初速度を計算
for(i=0;i<j;i++) //j回跳ね返った時の初速度
v0*=e; //eは反発係数
y = (int)((v0 * t - 0.500 * g * t * t ) * 480.000 / y_max);
if(y>=0)
DrawGraph( 320 , 480-32-y , image[8] , TRUE );
else{
DrawGraph( 320 , 480-32 , image[8] , TRUE );
time1=GetNowCount();
j++;
}
}
このあたりとか意味不明すぎ
0196名前は開発中のものです。
2009/01/16(金) 13:44:50ID:eKNbfSz5基本的には物理でよくある問題
「初速度v0, 加速度-g, の物体のt秒後の位置を求めなさい」
を地で解いてる
if ( flag==1 ){
// 今は何秒後?
time2 = GetNowCount();
t = (double)(time2 - time1) / 1000.000;
// 初速度v0 の計算
v0= sqrt ( 2.000 * g * y_max); //(ジャンプの考え方1を参照 http://dixq.net/g/#27 )
for ( i=0; i<j; i++ ) { v0*=e; }
// 現在の高さy を計算
y = (int)((v0 * t - 0.500 * g * t * t ) * 480.000 / y_max);
if ( y>=0 ) {
// 着地してなければ、順調に落ちる
DrawGraph( 320 , 480-32-y , image[8] , TRUE );
}
else{
// 着地したなら……
DrawGraph( 320 , 480-32 , image[8] , TRUE ); // 画面下端にキャラクタを表示
time1=GetNowCount(); // 時間をリセット
j++; // 跳ね返った回数を1増やす
}
}
0197名前は開発中のものです。
2009/01/16(金) 15:05:07ID:yiTw/vGBv0*=e;の部分に{}がなかったからそこ以下が全部forの繰り返し処理にふくまれてるのかと思ってめちゃくちゃ複雑に考え込んでた
0198名前は開発中のものです。
2009/01/18(日) 12:09:23ID:CHnPFsm9それだと多人数vs多人数の場合は処理を書くのがかなり大変だと思うのですが・・・
教えていただけたら幸いです。
0199名前は開発中のものです。
2009/01/18(日) 14:32:01ID:nMkjmCv8参考にするにはちょっと…なソースだな
マジックナンバーだらけ
コメントで察しろというのは乱暴で嫌いだ
0200名前は開発中のものです。
2009/01/18(日) 15:22:57ID:0Ylj0E2sターン制の戦闘を想定する場合、
敵、プレイヤのデータをカードに書いて置いて、
「プレイヤのコマンド入力」→「敵のコマンド入力」→「攻撃順にカードを並べる」→
「カードの順番にカードに対応する各キャラクタが行動する」→「最初にもどる」
みたいな感じでどうよ。
敵が100人だろうと1000人だろうと問題ないね。
C++だと、カードっていうスーパークラスがあって、
プレイヤや敵はそのクラスを継承して、ポリモーフィズムを形成してうんたらかんたら
0201名前は開発中のものです。
2009/01/18(日) 16:19:05ID:p3BsxAdPif文を使っているか使っていないかといわれれば使っているが
当然それだけで制御しているわけじゃない
あと、人数が増えてもキャラにIDをつけてforで回せばいいので大変さは変わらない
参考(javaのRPG戦闘ソース)
ttp://www.geocities.co.jp/SiliconValley-Cupertino/9261/source/index.html
C++でもアルゴリズムは同じ
0202名前は開発中のものです。
2009/01/29(木) 07:20:21ID:ETfSP+cE↑のs2. サウンドノベル風文字列表示法1にあるプログラムの
for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}
って何を意味してるの?
0203名前は開発中のものです。
2009/01/29(木) 10:03:40ID:xirprjZ5キー入力状態に変化があったかどうかを調べてる。
特に、「押してない状態(0)」→「押してる状態(1)」に変化しているなら、
「今押された(2)」ってことにしてる。
てかリンク先間違ってるだろそれ。
0204名前は開発中のものです。
2009/02/19(木) 00:05:49ID:YuEFv8kY今までマップチップ単位でキャラとマップの当たり判定をやってたんですがこれだと傾斜のあるマップに対応できないです。
マップチップとは独立してドット単位で当たり判定のデータを用意するくらいしかないでしょうか
0205名前は開発中のものです。
2009/02/19(木) 09:04:49ID:CC1OIocp難しいこと考えてるなあと。
マップチップでは管理しきれないと思う。ドット単位というのも無茶な話。
キャラ(オブジェクト)単位での当たり判定になるね。
「14歳からはじめるC言語ゲームプログラミング」
http://www.rutles.net/books/217.html
この本のサンプルが、そのものずばりで解決してくれると思う。
ソース無しのサンプルゲームはDLできるので、これ見て役に立ちそうならどうぞ。
0206名前は開発中のものです。
2009/06/22(月) 23:33:49ID:PR8N99oV0207名前は開発中のものです。
2009/06/23(火) 01:02:00ID:dkvBYAOUttp://wiki.game-develop.com/
0208名前は開発中のものです。
2009/09/08(火) 11:21:57ID:yapzJvXF○1.○×ゲーム
○2.15パズル
敵が無い、思考ルーチン考えないでいいぶん2のほうが楽かな。
○3.マインスイーパー
4.ブロック崩し
5.倉庫番
6.テトリス
:
:
○は作った。次は倉庫番かと思ってたけど、DXライブラリがバージョンアップして
描画改善に伴いマウスの反応が良くなったからブロック崩しに行こうかと。
7以降とか2.5相当とか、追加あったら応援おねがいしたい。
0209名前は開発中のものです。
2009/09/08(火) 11:29:49ID:6MhMNrx00210名前は開発中のものです。
2009/09/09(水) 12:09:38ID:eLuVrXen>C++だと、カードっていうスーパークラスがあって、
ここの所もうちょい詳しく
そういうクラスが標準で用意されてるのかと思ってググってみたんだけど、全然ヒットしないです
これは基底クラスを自前で作ってそこから派生させろという話?
0211名前は開発中のものです。
2009/09/09(水) 14:17:10ID:vKyxO6xF自分で作るんだよ。
たとえば「戦士は敵Aを攻撃」「魔法使いは呪文で全体攻撃」とか、行動の記録を構造体の配列なんかで持たせて
全部出揃ってから素早さ順なんかでソートする。
200のやり方はこのカードからプレイヤーや敵のクラスを継承させるみたいだけど
俺はキャラデータからカードを完全に分離させて、カードの仕事は行動解釈だけに絞るほうが好み。
0212名前は開発中のものです。
2009/09/09(水) 21:51:16ID:UMpltBwWありがとうございます
>>200は「カードっていうスーパークラスを作って」の意味でしたか
0213名前は開発中のものです。
2009/09/29(火) 05:17:35ID:kGLDkUjaとりあえず数当てゲーム作ったけど、数字じゃなくて文字が入力された場合の例外処理がよくわからなくて棚上げ
ひとまず次頑張ってみます
0214名前は開発中のものです。
2009/09/29(火) 05:56:42ID:tenDfojw0215名前は開発中のものです。
2009/09/29(火) 08:18:06ID:kGLDkUja一回寝てからもう少し頑張ります
0216名前は開発中のものです。
2009/09/29(火) 13:45:22ID:/Wz8dUNKisdigitなんか使う必要ねーじゃん
0217名前は開発中のものです。
2009/09/29(火) 13:59:20ID:yWA5tZHNけっこう連続入力とか嵌るんだよな
0218名前は開発中のものです。
2009/09/29(火) 16:08:36ID:ryAGnP+Gとても参考になりました
■ このスレッドは過去ログ倉庫に格納されています