今日から必死で1から全て学んでゲーム作成します
■ このスレッドは過去ログ倉庫に格納されています
0001松田 ◆cobo4pcvHY
03/02/06 21:28ID:+Sp/g0d7言語の難しさから逃げていては駄目だ!お前はゲームを作りたいのだろ!?
という悟りを開き、今日からプログラム言語を覚え、そして
プログラムツールで作ります!今持ってるものは・・・。
6才年下の弟の持ってる技術(厨2)の教科書。
アクティブベーシック。(vectorより入手)
・・・作れるのだろうか!?もちろん古本屋で買いあさってくるが
(作れ次第、いずれうpします・・・。いつまでかか(ry))
0363名前は開発中のものです。
03/02/25 21:56ID:VPuiiQAc入塾許可なんか要らないよ。
必死になってどんどん課題を出せばいい。
あとは、必死に猫でも分かるプログラミングを読むとか
http://www.kumei.ne.jp/c_lang/
必死にログを読むとか、まぁとにかく必死になって自力で
色々あがいて参加することが吉だと思われるので、頑張れ。
0364名前は開発中のものです。
03/02/25 22:16ID:yCc+W+P4ガチンコ見た事無いのでスレのノリに合わせられるかわからないけど、
必死で1から全て学んでがんがってみます。
0365名前は開発中のものです。
03/02/25 23:13ID:yCc+W+P4漏れが今から、【電波少年的ゲーム製作】〜課題をこなせなかったら即自殺〜
を始めるから、ホームラン級のホームページを教えろ!
リファレンス?みたいな関数辞典みたいなページご存知でしたらお願いします。
対応するインクルードするべきヘッダファイルの一覧みたいなのがほしいのです。
stdio.hがどうとか、そういうのがわからないのでどうかお願いします。
0366名前は開発中のものです。
03/02/25 23:42ID:OTJzWV1L課題upしたのにull書くの忘れてたんでとりあえず課題だけ。
http://forgamedev.zombie.jp/uploader/up5/img/085.zip
0367煮頃 ◆mIGaChInq.
03/02/26 01:11ID:PeOEz4dugoogleに関数名を放り込んだほうが早いかも
BohYoh.com【C言語講座】標準ライブラリ関数
http://www.bohyoh.com/CandCPP/C/Library/index.html
今日の目標->一日一UP
ランダムに現れたドットが中央へ向かっていきます
距離が1以下になると次のドットが現れます
VisualBoyAdvance1.4で動作確認しました
http://forgamedev.zombie.jp/uploader/up5/img/087.zip
0368名前は開発中のものです。
03/02/26 03:14ID:UwPRkjgq簡単講座その2 の準備。
まずは、先日の誤記の突っ込みありがとう。で入るか…
でだ、今回は、角度やら、それに関係して軽く当り判定とかをやりたいんだが、その前に準備だ。
復習を兼ねて、ベクトルの話だ。なにが準備かと言うと、
これから(x, y)は、ベクトル扱いで説明して行かないと、膨大な説明と書き込みになるのでベクトルの基本を少し。
基本だが、ベクトルを表すのに構造体なりクラスなりを定義してると楽なのは分るよね。
struct VECTOR { float x, y; };
こんな感じだ。クラスなら、メンバ関数で、大きさを返す物や単位化する物を定義したり
演算子のオーバーロードで計算処理も定義できるし便利だよね。
で、肝心のベクトルの扱いなんだが、基本は位置ベクトルだ。基本の位置から、どこぞを指し示すと考えてもらって結構。
つまり、座標と考えても差し支え無い。原点(基本位置)から、座標(x, y)までのベクトルって感じだ。
さらに考えを柔軟にすると、基本の位置を原点以外でも考える。ホーミングの時の、敵機から自機へのベクトルって奴だ。
これらのベクトルは、始点を考えるベクトルな。
で次の考えは、少し複雑だ。方向ベクトルって言って、向きだけを考えるんだ。
大きさや始点は、基本的に考えないベクトルだ。
具体的に言うと、真上を向くベクトルは、大きさが1だろうが10だろうが、真上って向きだし
原点だろうと、(10, 10)の座標からだろうと、真上って方向だろ?
この二つの考えで説明して行くから、調べるなりして身に付けるべし。
そして最後に、ラジアン処理だ。之は前にも書いたが、角度の表現方法の一つだ。
π = 180度 = 3.1415926535897932…って奴だ。
具体的な使い方は、
#define PI 3.1415926535897932
って感じでデファインしておいて使うのだ。90度を表す時は、PI/2.0 (180/2)って感じで使うのだ。
0369名前は開発中のものです。
03/02/26 03:17ID:UwPRkjgq簡単講座その2。角度編。
先ずは、角度って言っても基準となる0度の場所を決めて置かないといけないな。
これは、ゲーム毎に処理やなんかも違うし、自分で決めておいて、
計算時に、数学処理や標準関数とのオフセット(一定の差の修正)を取れば良いと思う。
今回は、X軸、つまり”y = 0”の直線が0度の角度で行こうと思います。
なぜなら、atan2での基準でもあるので、戻り値がそのまま使えるからです。
いきなり本題。原点から”大きさR”の”円上”の座標の式は?
x = R * cos(θ);
y = R * sin(θ);
*sin() cos()は標準関数。
が答えです。θとはシータと読みます。ギリシャ文字で数学だと計算時の角度を表す場合が多い。(高校数学教科書でも載ってるよ)
角度は、X軸からの角度で、例えば、45度つまりy = xの直線上の座標(マイナス座標はおいておく)なら
x = R * cos(PI / 4.0);
y = R * sin(PI / 4.0);
です。45 = 180/4 = PI/4.0ですね。
atan2で言うと
PI/4.0 = atan2(10.0, 10.0);//y = xの式で考えるので、引数yと引数xを同じ数値にしただけ。
解説をすると、先ず単位円(半径が1の円)で考えましょう。つまりR = 1となって
x = cos(θ);
y = sin(θ);
って簡単になります。そしてsinとcosとは、xとyが円を描く時の軌跡を表す物と考えると良いでしょう。
cos(0.0) = 1.0
sin(0.0) = 0.0
です。いきなり、”です”じゃ分りませんね?之は"大きさ1"の円の0度の座標を表します。
大きさ1の円で、基準はX軸でしたね。つまり0度なら(1, 0)が円上の座標です。上の式通りでしょ?
atan2だと
0.0 = atan2(0.0, 1.0);//引数に注意、atan2はy, xの順です。
0370名前は開発中のものです。
03/02/26 03:19ID:UwPRkjgqcos(PI / 2.0) = 0.0
sin(PI / 2.0) = 1.0
です。もう分りますね。(0, 1)の座標が90度の時の円上の座標です。atan2では
PI/2.0 = atan2(1.0, 0.0);
何を言いたいのか?それは、sinとcosを使えば、角度から座標が得られるのです。
そして、アーク系の標準関数を使えば、座標から角度が得られるのです。
例えば、10度づつに180度まで、角度を刻みたいって処理をするなら
float angle = 0.0f;
struct VECTOR vec;
vec.x = 0.0f;
vec.y = 0.0f;
while(angle <= PI)
{
vec.x = cos(angle);
vec.y = sin(angle);
//ここでxとyを使った処理、描画でも何でも良い
angle += PI / 18.0;//10度 = 180/18
}
ってやれば良いのです。
…すまん、もう眠い、限界だ、続きは近いうちに。
0371名前は開発中のものです。
03/02/26 03:37ID:/z8f2ccXこんな時間にお疲れ様です
・・・今回の内容はちょっと難しそうだなぁ
昼起きてからじっくり読ませてもらいます
私もそろそろ寝よ・・・
0372あぼーん
NGNG0373名前は開発中のものです。
03/02/26 09:09ID:0KVHlNbG俺もやっと追いついたんだが、continueとかしらないぞ!
おかげで悩んでた問題が解決しますたが、一からプログラム
してないよね?経験者だよね?
かなり、自分の力量のなさに泣きそうなんですが。
返事モトム
0374∞ ◆TPeOraQid2
03/02/26 09:46ID:AO2CG5SFまったくの初心者ではないが、経験者というほど経験をつんでない。
これから修行を積めば大丈夫だから安心しる
STGをちょいと改造
http://forgamedev.zombie.jp/uploader/up5/img/088.lzh
0375名前は開発中のものです。
03/02/26 09:48ID:5vfashpU漏れは今のところLSIC86試食版でやってるんだけど、
グラフィックが使えないようだからBorland C++に乗り換えようと思ってるんだけど。
0377名前は開発中のものです。
03/02/26 10:10ID:0KVHlNbG即スレサンキウ。
よかった。∞さんが、まったくの初心者だったら、
俺才能ないなと、泣いているところだった。(あきらめはしないが)
>>375
漏れはDelphi。
0378新しい生徒 ◆DWbD4/1xkk
03/02/26 12:24ID:9oc4YgkpRPGの戦闘画面です
#ひろゆきとの戦い:バージョン01
cls0
mes"ひろゆきが現れた!"
stop
*hiroyuki
butoon"たたかう"*comand0
butoon"にげる"*comand2
stop
*comand0
mes"これでいい?"
butoon"OK"*comand1
butoon"キャンセル"*hiroyuki
*comand1
dame-ji=dame-ji+1 : goto *comand0
stop
*comand2
if kai> 0 : goto *owari
mes"ひろゆき「あなたは2ちゃんねるアク禁ですよん」"
stop
*finish
cls
mes"ひろゆきに"+dame-ji+"のダメージを与えた" : goto *owari
stop
*owari
mes"戦いは終わった"
stop
0379名前は開発中のものです。
03/02/26 15:53ID:xJ8e4S5fソースが崩壊してて恥ずかしい。・゚・(ノД`)・゚・。
0380名前は開発中のものです。
03/02/26 16:10ID:rCqOEbooせめて自分で動かしてみて動くコードをだせよ。
0381名前は開発中のものです。
03/02/26 16:15ID:kOHm86npそれはただのオナニーだろ、他でやれ。
ソースだけのupは容量軽減と解釈すればなんとか理解出来るが。
ソースだけのupの人も、環境を持っていない人の事を考えてexeも入れてあげるといいと思われ
C++もdelもHSPもフリーなんだから、exe触って憧れて真似して覚えるってのもあろうから。
0382煮頃 ◆mIGaChInq.
03/02/26 17:53ID:PeOEz4duhttp://forgamedev.zombie.jp/uploader/up5/img/091.zip
0384新しい生徒
03/02/26 20:19ID:Y+qlltMlこれに
*comand3
mes"まだ攻撃しますか?"
button"YES",*hiroyuki
button"NO",*finish
stop
というやつをつけて前のラベルをちょいと改造して完成したか?とおもったら今度は動かなくなった・・・
0385電波330
03/02/26 20:39ID:+V3fv4SA課題1、数当て。
電波少年的ゲーム製作、1日目でいきなり死にそうなんで堪り兼ね、恥を忍んで質問します。
rand、乱数、C++で検索すると、「rand() / 1000;」と、「rand() % 1000;」の両方がhitするのはなぜですか?
後者だと動きません。(これを信じてしまった為に数時間を無駄にしてしまいますた・・・)
srandについての質問です。
upしたものに、「srand(50);」を追加すると、動かなくなるのはどうしてですか?
//将来的には、「srand(現在の時刻);」を行う事によって乱数を作り出そうと思っています。
0386名前は開発中のものです。
03/02/26 21:12ID:pqLn9AXQおいおい演算子くらいしっかり覚えとけよ。
/ は商を、 % は剰余を求める演算子だ。
0387名前は開発中のものです。
03/02/26 21:14ID:W1hnCPp7具体的には10進数表記して下3桁を切り捨てた値になります。
rand()で返ってくる値はRAND_MAX以下の正の整数で、デフォルト値は処理系依存が、
32,767のことが多いです。
つまり、rand()/1000 は、0〜32 の値をとることになります。
rand() % 1000 は、rand()の値を1000で割ったときの余りになります。
つまり0〜999の値を取ることになります。
で、あなたのプログラムが rand()%1000 で動かなくなる理由ですが、
0388名前は開発中のものです。
03/02/26 21:15ID:W1hnCPp72つめ(b方式のwhileループ)の yyy=(za+((zb-za) /5)) あたりを例に考えてみてください。
たとえば xxx の値が6であると、za=4,zb=8 の時点で
yyy = (za+((zb-za) /5)) = 4 となり、
永遠にza=に4を代入し続けることになります。
この問題から、あなたのプログラムには
「b方式では特定の数値を当てることが出来ない」という不具合があることを示しています。
rand()/1000でうまくいき、rand()%1000でうまくいかないのは、
偶然デフォルトの状態でrand()を呼び出すと発生するものだったというだけのことです。
srand()を行っていないため再現性があったのです。
0389塾長
03/02/26 21:22ID:9AhhBBa6まず rand() って関数が返す値の範囲は 0 から RAND_MAX
(処理系依存だが 32767 以上) だろ?
仮に 100 っていう乱数が返ってきたとする。
100 / 1000 の値は、小数点切り捨てになるから 0 になっちまうんだ!
お前がやりたいのは 0 から 1000 の数の乱数を出すことだろ?
だったら rand() % 1000 が正解だ。
rand() % 1000 にしたり、srand() を追加すると動かないのは
お前のプログラムの b 方式のロジック自体が悪い。
変数名をわかりやすくしたり、while ループの中に printf
を入れてデバッグしたり、自分で原因究明しろ!
言っておくが、このスレのスレタイは
「今日から必死で1から全て学んでゲーム作成します」
だぞ!
「今日から必死で塾長が全てのプログラムをデバッグします」
じゃねえんだ!
0390塾長
03/02/26 21:24ID:9AhhBBa6ケコーン、って奴だな。
0391名前は開発中のものです。
03/02/26 21:29ID:W1hnCPp7387訂正。
3行目: デフォルト値は処理系依存が、 → デフォルト値は処理系依存ですが、
388訂正。
6行目: za=に4を代入 → zaに4を代入
9行目: あることを示しています。 → あることが分かります。
0392名前は開発中のものです。
03/02/26 21:30ID:7Y16V9n2/∧_∧ \
./ ( ゚ ∀゚ )、 `、
/ /\ \つ つ、ヽ
| | ,\ \ ノ | |
ヽヽ レ \ \) / /
\ [書込み禁止]'/
ヽ、 ____,, /
||
|| 〜終了〜
0393煮頃 ◆mIGaChInq.
03/02/26 21:39ID:PeOEz4du>mes"ひろゆきに"+dame-ji+"のダメージを与えた" : goto *owari
この行を
>mes"ひろゆきに"
>mes dame-ji
>mes "のダメージを与えた" : goto *owari
と三行に分けたら動くかも
0394新しい生徒
03/02/26 21:53ID:Y+qlltMlたびたびありがとうございました。
何か、プログラム自体は問題無いと思うのですが、コンパイル+実行をすると
すでに名前が使用されているので変数にできませんと出てしまいました。
変数を別名に変えてみます。
0395電波330
03/02/26 23:15ID:+V3fv4SA演算子だとは思いもつきませんでした。
昨日までdelphiをやっていたので、「Random(1000)」1〜1000の乱数を返す、のつもりで
/や%は()のような記号だとばかり考えて悩んでいました。。。レスありがとうございました。
>>387-388
動かなくなる理由は完全にこちら側のケアレスミスでした。
言語を疑う前にコードを1から洗いなおすべきでした。申し訳ございません。わざわざありがとうございました。
>>389
重ね重ね申し上げますが、まさか演算子だとは思いもつ(以下略)
>スレタイ
次スレではちゃんと変更しましょう。
http://forgamedev.zombie.jp/uploader/up5/img/093.txt
自動販売機です。電波少年的1日目、あと課題3っつです。
0396猫又 ◆quHoSW/FCI
03/02/27 00:37ID:zNuog97qこのスクリプト、「たたかう」「キャンセル」を20回ぐらい繰り返すと、
オブジェクト数の上限64個を超えてしまうさかい、エラーになるで。
あと、変数「dame-ji」やけど、演算子「-」を使うてるさかい、
式「dame-ji=dame-ji+1」は「dame - ji = dame - ji + 1」に分解されてるで。
それにif文で変数「kai」が出てるけど(たぶん攻撃回数かなんかをカウントする
予定やったんやろ)、他で利用されてへんし。
最後に、ラベル「*finish」に移動する部分がないんやけど・・・。
0397けう
03/02/27 01:23ID:eKR3sXOZttp://forgamedev.zombie.jp/uploader/up5/img/094.lzh
でもチラツキが気になる。もう寝る
0398電波330
03/02/27 02:35ID:F6P2OzyFソースupキボンヌ。どのようにやってるのか知りたいです。
マルチタスク?とかいうやつを使ってるんでしょうか・・・
http://forgamedev.zombie.jp/uploader/up5/img/096.txt
並び替え。あと課題2つ。
塾長!!課題1つ思い浮かばないのでなんか適当なの出してください!
おながいします!
0399塾長
03/02/27 02:47ID:XZhCrT/r自販機のプログラムだが、switch 文を使ったほうが見やすいと思うぞ。
>>397
ちらつきをなくすには InvalidateRect の第 3 引数を FALSE にしろ!
なぜそうなるのかの理由についてはヘルプを読め!
もう Windows のプログラムは余裕で作れそうだな。
お前はそろそろ、このスレの卒業の時期かもしれん…
>>398
配列を使わず、「リンクリスト」で名簿管理プログラムを作れ。
または「クイックソート」を使ったプログラムを書け。
困ったら Google で調べろ!
俺は明日からしばらく留守だから、各自自習してろよ!
0400∞ ◆TPeOraQid2
03/02/27 03:48ID:vA8QjnCPhttp://forgamedev.zombie.jp/uploader/up5/img/097.lzh
(´-`).。oO(だれか見るのだろうか)
0401電波330
03/02/27 04:54ID:F6P2OzyFイメージしていたものと全然違って、関数[]みたいな感じですね。
プライベート宣言したものは、外部からの閲覧すら出来ないようなので、
「int xxx」のように、ただの入れ物として使う為の物なんでしょう、おそらく。
コードは無いようなものなので5つめと一緒にあげます。upろだ無駄に流しても悪いですし。
>>塾長
リンクリストで検索したら糞HPしか見つからずに20分無駄にしてしまったので、
トーマスエンクイストについてのレポートをまとめるからそれで勘弁しろゴルァ!!
>名簿管理プログラム
どんなものかわかんねーよヴォケが
リンクリストって、マルチ?擬似?タスク?とは違うんでしょうか?
とりあえず、絞り込んだら1件hitとか、絞り込まなかったら
【お友達のホームページ】(リンクリスト)とかしかhitしないんで、時間的余裕無いので却下。
クイックソートならクイックソートでヒント出せよな。検索したらコピペで終わるだろ
Googleで調べろって、ルーチンを丸写しじゃねえか。
もっとまともな課題出せねえのかよ!こいつはホームランだな!
そういうのは課題って言わねえんだよ!
>switch文
switch文の事をよく理解していない(エラーが40箇所以上出た)頃に書いたので、
最初は多用していたのですが、エラーの原因がわからず全部if文に置き換える形でエラーを潰した為、
あんなに膨らんでしまいました。break;がどういう働きをするか理解できたので、今なら多分なんとか出来ます・・・
>400
明日ゆっくりと見させていただきまつ・・・敵がわらわら出てくるとこ読みまくらせていただきます。
ありがとうございました。
0402電波330
03/02/27 06:23ID:F6P2OzyF凄まじい勢いで退化しているような気もするけど、5課題めって事で。
0403あぼーん
NGNG0404名前は開発中のものです。
03/02/27 10:01ID:n/Xg/w0H0405winmainを隠蔽してみた
03/02/27 11:25ID:JfZFQlLW0406名前は開発中のものです。
03/02/27 12:33ID:xws/eYQXrand() % 1000 じゃまずいんじゃないの?
rand() * max / 32767; ってやらない?
0407あぼーん
NGNG0408電波330
03/02/27 16:19ID:UJLkpaWQ基準を選んで、両端から調べ、見つかったら停止しておき、両方で見つかったらそれぞれを交換、
で、それを繰り替えす=クイックソートって認識だけで組んでおります。
あと4時間くらいで出来そうな気もするのですが、
いい加減時間も時間なので・・・質問です。
こういうものって、どこかからコードパクってきてそれを見て、
ルーチンワークとして単純にメモっておくなり覚えるなりした方がいいんですか?
それとも、真面目に組んだ方がいいんですか?
アルゴリズムを真面目に組むなんてただのヴォケですか?
超絶プログラマーの方、お答えキボンヌです。
0409名前は開発中のものです。
03/02/27 17:13ID:X4QGGARtあいにく俺は超絶プログラマでも何でもないが
自分に勉強が必要だと思うなら、そういうのはどんどん組んでいいと思うぞ。
データ構造やアルゴリズムの教科書を頑張って読みながらイチから組んでも
いいだろうし、あるいは何かサンプルソースが付属しているものがあるなら
それを参考にしながら組めば効率はあがるだろうし。まぁ勉強目的なら、
その辺は好みで。あとは時間との相談な。
時間がいっぱいある学生なら、苦労は買ってでもしたほうがいいと思うぞ。
働きながらだと、マジで勉強する時間は制限されるからな。
0410名前は開発中のものです。
03/02/27 19:39ID:7Ff2Tc6l下のコードがなにやりたいんだかわからん
0411名前は開発中のものです。
03/02/27 19:40ID:u2ULVOM5どうやったらそんなにかかるんだよ。
アルゴリズム理解してないんじゃねーの?
0412電波330
03/02/27 20:46ID:YS/IDaWiそろそろ12時間になるので諦めて他の課題行きます。
特定条件下でのみ動くものなら、7〜8個出来たんだけど、
(降順を昇順にとか、3142なら大丈夫だけど1342なら動かないやつとか)
まあ無理でした。わかんねー。
基準値を取って、それ以下を左にそれ以上を右に、で左端と右端からやってって、
終わったら左辺と右辺で同じ事を繰り返して最終的にdiv 2 で1になるまで繰り返す。んだよな?っていうかもういいや。それどころじゃない。
if、for、whileだけで出来るよね?って言うかマジでわかんねー。放置、放置と。ソートなら出来るし。
0413∞ ◆TPeOraQid2
03/02/27 22:40ID:vA8QjnCPhttp://aglaia.c.u-tokyo.ac.jp/Java/test/cgi-bin/show.cgi?chapter=algorithm
クイックソートもあるよ
0414電波330
03/02/27 22:48ID:YS/IDaWiキターーーーー!!苦節13時間、しかも裏道。見つけたものといえば、BCC Developerのバグくらい・・・
罵倒してください。おながいします。
>413
いや、車輪の再発見をやってるわけでして・・・
とりあえずありがとうございます。
0415名前は開発中のものです。
03/02/27 23:11ID:NRq4/oR+いや、標準関数でも良くやった方さ。
まさか、コピペで動くから出来たって訳じゃないだろ?
数値比較を返す関数を用意する事を、理解する方が
クイックソートアルゴリズムより、難解のような。
それはそうと、再帰の話が出ないが、再帰なしでクイックやろうとしてるのか?
…まさかな。
0416名前は開発中のものです。
03/02/27 23:11ID:X4QGGARt>qsort( )
( ゜∀゜)アヒャヒャー
まぁ何だ。ちょっとしたゲームの中では多量の未整列データを溜め込んで
一気にソートせにゃならんような場面は、実はあんまないということに
気付いたりしたら、他のアルゴリズムにもチャレンジしてみてくれ。
0417名前は開発中のものです。
03/02/27 23:20ID:rrgh8LFXhttp://pc2.2ch.net/test/read.cgi/tech/1014783451/
ムズー
0418電波330
03/02/28 00:29ID:rxvorC8v「時間を費やした=がんがった!」と勘違いしている受験生のような一日に終止符を打たねば・・・
>>415
コピペではありません。
片っ端からエラー出してエラー書き換えてってのを数十回繰り返して辿り着きました。
F1が使えないってのがいかんとも厳しい・・・
・・・再帰?
>>416
アヒャヒャヒャ。qsortを見つけたのは、以前当スレで紹介していただいたサイトの関数一覧を見ていると、
そのものずばりqsortなるものを発見してしまい・・・という次第です。
他アルゴリズムに挑戦はまた追々、少しアルゴリズムは忘れたいです。
0419名前は開発中のものです。
03/02/28 00:31ID:sJzCJLYj0420名前は開発中のものです。
03/02/28 01:00ID:sJzCJLYjクイックソートのアルゴリズムがちょっと良くわからないっていうなら、
今更感が強いけどちょっと聞いていきなよ。
―クイックソートの大体の考え方―
クイックソートはまず、ある数の集合Aの中から一つの数aを任意に選んで、Aをa以下の数の集合sAと、a以上の数の集合lAに分けるのさ(sはsmall、lはlarge)。
すると、sAに含まれる数ってのは、全てa以下なわけで、lAに含まれる数っていうのは、全てa以上なわけだね。簡単に書いてみると
(1)sA <= a <= lA
っていう関係になるんだ。ここで、sAに対して、Aの時と同じ操作をすると…
(2)ssA <= a' <= lsA (a'はsAに含まれる任意の数)
っていう関係になるよね。(1)と(2)をあわせると、
ssA <= a' <= lsA <= a <= lA
って言う風になるよね。
あとは、出現する集合が全て値を一つしか持たなくなるまで、同じ手順を繰り返すだけ。
以上、クイックソートの大体の考え方でした。
0421名前は開発中のものです。
03/02/28 01:38ID:ts2K0BuQ再帰ってのは、自身を自身の中で呼び出す関数。googleで検索でもすると、サンプルは沢山出てくるよ。
因みに、420さんに便乗させてもらうけど、基準の値を軸に数値を分けるそして分けた片方に、また同じ処理をってので再帰を使う。
つまり、ソートする物が、基準値より小さい値の物ってだけで処理的な部分は使い回せるでしょ?
イメージとしては
1 2 3 4 5 6 7 8 9 10
↓再帰呼び出し(ソートじゃない、二分するだけのイメージ)
1 2 3 4 5
6 7 8 9 10
↓再帰呼び出し
123
45
657
89
↓再帰呼び出し
12
3
4
5
67
8
9
10
って具合だ。実際にはスタックに処理を積んでいるのだが、見た目には加速度的に、枝分かれするが如く数値が分けられていくだろ。
0422名前は開発中のものです。
03/02/28 02:12ID:WUder+VOあまりやりすぎるとスタック溢れ(?)してフリーズする
およそ10歩ぐらいまでは軽い(2、3秒以内)んだけど
11歩、12歩になると突然のように激重(10秒以上)になる
あんまり多いならばメモリ確保してそっちにデータ積んで
ループしてやっていくほうがいいのかな・・・?
0423あぼーん
NGNG0424名前は開発中のものです。
03/02/28 03:07ID:ts2K0BuQ少し違う。
SLGやなんかだと、上右下左の四方向に移動力を消費しながら進んで
進んだ先で、まだ同じ処理ってやる訳だ。
スタック漏れじゃくて、再帰で掘り下げてく処理がクイックソートと逆の理論で
爆発的に増えて、returnしなくなっているんだよ。
0425名前は開発中のものです。
03/02/28 12:29ID:sJzCJLYj再起は使わず、ダイクストラ法を応用しています。
UNIXで組んだので、バイナリは添付していませんがご了承ください。
コンパイラはgccです。
http://forgamedev.zombie.jp/uploader/up1/img/084.zip
よろしければ、感想なんかをよろしくお願いします。
ついでに、俺は塾生じゃないです(´Д`)
0426新しい生徒
03/02/28 13:36ID:TxeuDEcEmain()
{
printf("This is a test!");
}
こういうプログラムを書いたのですがコンパイルできないです。どうすればよいのでしょうか。
0427名前は開発中のものです。
03/02/28 14:48ID:tmNNMsQY0428名前は開発中のものです。
03/02/28 14:57ID:jekjvI3Kエラーの内容読めよ
0429電波330
03/02/28 15:16ID:PQLPjVFi自分で組んでた時に誤動作の原因としては、
「sA,sA,sA,」を昇順に並び替えようとして、sAと入れ替えるべきものが無い→投了。
とか・・・そういうのはいっぱい作りました。
クイックソート自体の理解が間違っていたかも。
集合sAの個数とlAの個数は=では無いのか・・・。
「sA,sA,sA」に操作を行うと、集合「 」と集合「sA,sA,sA」になるわけ・・・かな?
なんか今やれば、8時間くらいで組めそうな気がするけど(藁
>>421
再帰に関しては、聞いた事はあるけど実装を試みたり、必然に迫られて使用した経験はございません。
なんとなくイメージは掴めたような・・・
二分する(int 数値)
{
if(数値 != 1 )
{
二分する(数値 div 2);
}
}
これで、数値が1になるまで二分され続ける・・・のかな?
再帰ってアルゴリズム以前の基礎的なものっぽい。。。のかな?って言うか出直してきまつ
0430電波330
03/02/28 15:16ID:PQLPjVFiおそらくあのまま120時間、1200時間続けていても解けなかったと思われ
>>420さんの言っているのと全然違うのをイメージしてましたし。。。
http://forgamedev.zombie.jp/uploader/up5/img/100.txt一応、申し訳程度にup。
forにbreakを使ってる?のとかfor(;;)とか、keytypeとか意味不明。
クイックソートには半月後くらい後にもしまだやっていたら挑戦してみようかと。。。
>>426
エラー内容をダブルクリックしたら当該箇所に飛べますよ。
BCC Developer使用ですが、多分VC++でも似たような事が出来ると思われ。
あと、エラーのある行番号が出たりもすると思う。
0431あぼーん
NGNG0432電波330
03/02/28 23:43ID:jx/sbcGAおまえら、投票してください。
1〜3までのどれが一番いいと思われですか?
おながいします。
0433名前は開発中のものです。
03/02/28 23:52ID:ts2K0BuQがんばれよ。
typedef とは、独自型の宣言で、コンパイラに覚えてもらう物です。
例えば、構造体を宣言した時、
struct _DWORD2
{
int Hi, Low;
};
って具合に宣言した時に、その型の変数を宣言する時に
struct _DWORD2 number;
って一々面倒だろ。
でだ、
typedef struct _DWORD2 tag_DWORD2
{
int Hi, Low;
}_DWORD2;
ってやると
_DWORD2 number;
って宣言できるんだよ。
ます、typedef指定子、次に正式な宣言、tag記述はあっても無くてもよい。
これはプログラマの為であって、コンパイラの為では無い。無くても問題無い。
最後にセミコロンで閉じる前に、独自型の名称。
つまり、typedef int keytype;とは、keytype型とはint型と見てくれよ。って意味。
次は、for、breakな。
0434名前は開発中のものです。
03/03/01 00:04ID:LU7CqVC4for(初期化式; 条件式; 後処理式)です。
つまり、カラのfor文は、条件式が常に真。無限ループです。
break文は、そのbreak文から最も内側のループを抜けるって意味です。
sampleでは、forの無限ループですね。
私はやりませんが、スコープ('{'と'}'で括る事)を省略する人が、いますね。
sampleもそうですね。whileとifのスコープが無いですね。
スコープが無いと、次の式だけを評価します。
つまり
while(1) i++;
while(1)
i++;
は、
全て
while(1)
{
i++;
}
と同じ意味です。注意したいのは、改行は関係無い所です。
どうです?分り辛いでしょ。まあ、人のコーディングスタイルにケチはつけられませんが…
0435煮頃 ◆mIGaChInq.
03/03/01 02:01ID:ri9k9b+Mデアゴスティーニから週刊リアルロボットというのが出ると聞いて
そうだ!プログラムで対戦するロボットものを作ろう!!と息巻いてみましたが
gotoとgosubを作ったまでで息切れです
せめて後、ループぐらいは作りたい
できれば計算式も四則計算ぐらいはやりたいなーっと
実行にはDirectX9.0が必要です
コンパイルにはQuadrupleD3.0が必要です
素材はttp://www2u.biglobe.ne.jp/~presys/kg_cn03.htmからお借りしました
0436ミ,,゚Д゚彡っ━~ヒマジソ ◆mL2ZRk1cK.
03/03/01 04:28ID:SY0NWyRs受験一応終ったばっかりで暇なんですよ。後期は受かっても行かね。
急に勉強しなくなったら物足りなくて・・・暇を持て余してます
とりあえず手元にある三冊の本仕上げます。
(JAVAの本、ゲームボーイソフトが作れるC、C++言語の本、ゲームのアルゴリズム本)
JAVAは・・・あんま良くないっぽいけど携帯のゲーム作れる程度になれればいいや、
と思ってます。本買っちまったしね(その時は近くに居たお爺さんに熱く十分ぐらいPGについて語られたw)
その後はC言語中心に逝こうと思ってます。
・・・とりあえず寝ます。皆さん宜しくです
0437あぼーん
NGNG0438電波330
03/03/01 16:11ID:m1mMSI/6for文とkeytypeの解説どうもです。
そんなふうにfor文が使えるとは知りませんでした。ありがとうございました。
>>435
Del+DirectXだ・・・凄い。
昨晩はDirectXのヘルプを読んでるだけで夜が明けてしまい、慌てて寝ますた。
2D描写してから寝よう、と探し続けたんですが該当箇所すら見つけられない。
サンプルも全部3Dで、逃げ出したくなったのでありました。
DirectXで参考になるようなソースはどこかにありませんかね・・・
というか、導入すら出来ていない(藁
0439名前は開発中のものです。
03/03/01 20:50ID:EJwZxevy俺はDirectX7しか使ったことないから(しかもVBから)良く知らないんだけど、
確かDirectX8からそれ以降のヴァージョンには、2D描画専用の関数やらなんやらは無くなったはず。
だから、多分2D描画専用の奴を探しても、一生見つからないと思うよ……
DirectX7以前だったら問題ないけど…
0440名前は開発中のものです。
03/03/01 20:56ID:0gRpI5l12Dをやりたいのなら、こっちも検討する価値はあるかと。
0441電波330
03/03/02 00:35ID:ZGIYzsvQレスありがとうございます。
統合されたって事は知っていたんですが、
日本語のようなもので書かれたヘルプのなかに、
2D描写に該当する部分は無いのか?と血眼になって探しておりました。
まったく、無駄な努力を重ねる事にかけては右に出る者はいないと自負しております。。。
>>440
資金が不足しているのでちょっと厳しいです。(買おうと試vえば買えるのbナすが)
とりあえず膨大なマニュアルの半分程度に目を通してわかったのは、
初期化というのが凄まじく大変であるという事と、
機能的にはなんでも出来るが、その分とてつもなく難解で、
Helpだけを読む事で扱えるような代物では無いという事。
また、マイクロソフト製品以外はサポートされておらず、ちょっとばかり大変である事。
DirectXの為に、とC++に来た身としては、ポカーンなのであります。
いろいろと、ただふわふわと無意味に彷徨っております・・・
平日ヒッキーなので土日は課題は無理です。今日は糞カキコだけでお許しを。
少しDirectXHelpと無駄なスパーリングをしてから寝まつ
0442ミ,,゚Д゚彡っ━~ヒマジソ ◆mL2ZRk1cK.
03/03/02 02:48ID:TUYgBgA5でもカッコイイの作るならやっぱDirectXかなぁ・・・
現在C言語習得進行中
0443あぼーん
NGNG0444名前は開発中のものです。
03/03/02 04:10ID:uQzKRstZDirectDraw使おうかPeekMessage内で描画しようか迷ってる
DirectDrawってビデオカードによっては対して速度でないみたいだし
PeekMessageで30-60fps出れば問題ないんだがどうしようかなぁ
オフスクリーン領域は256*224*16bitか320*240*16bitにして
実際のスクリーンはStretchBltで2倍(512*448, 640*480)にすると・・・
0445名前は開発中のものです。
03/03/02 04:21ID:4Bi8GLBuそれに、わざわざStretchする理由は?
0446煮頃 ◆mIGaChInq.
03/03/02 04:55ID:3utS/X7eライフゲーム風のなにかです
初の非コンソールものヽ(`Д´)ノ
1000回ほどループすると画像の更新をやめます(こちらでは約7秒でした)
それまでは終了とか受け付けないらしいです(汗
まだまだゲームには遠い
0447名前は開発中のものです。
03/03/02 11:05ID:uQzKRstZ普通PeekMessage関数使うんだったね
DirectDrawを使わずにPeekMessage内でBitBltするだけで速度出るなら
わざわざ使う必要ないし。。。
Stretchして2倍にしないと画面小さ過ぎて見にくいと思う
ツクール2000も320*240で実際の表示は640*480にしてるし
0448あぼーん
NGNG0449名前は開発中のものです。
03/03/02 13:37ID:7Z5m404U「DLLが見つからない」と出ちゃうんですけど。
MFCですか?いつになったら到達できるかなぁ…
0450名前は開発中のものです。
03/03/02 14:07ID:hpT9hy9L0451名前は開発中のものです。
03/03/02 14:12ID:hpT9hy9Lもしmfc使って、そういうプログラム書くっていうことは、
windowsプログラムがわかってなくて、入門書のとおりに手探りに
やったって事かな?
0452425
03/03/02 15:16ID:53LJSqjrttp://forgamedev.zombie.jp/uploader/up5/img/105.zip
っていうかANSI準拠で作ってるんで、誰か感想とかくださいよ…(´・ω・`)
40X40マスの、移動力20でやってますが、処理は全然重くないです。
っていうか、WindowsだとCtrl+dってやっても、scanfがEOFかえさないんだね……
しかもコンソールみづらい……
0453あぼーん
NGNG0454煮頃 ◆mIGaChInq.
03/03/02 17:46ID:3utS/X7eΣ(´Д`ズガーン
MFC使うと別になにかないと実行できないんですか
VBみたいなものなのかな
もしかしてうぷしたファイルだけじゃコンパイルするのにもファイルが足りてない?(TT
>>451
全くそのとおりです
はじめて画面にドットがでて小踊りしている状態です
たぶんこの場所(onDraw)でループするのはまずいんじゃないかなぁ……と
思いましたが対処方法がわかりませんでした
タイマーかなにかで呼ぶべきかな、と想像したのですが
入門書には記載がなく、ググっても要領を得なかったので今回はあきらめました
まさに「今日から必死で1から」ですヽ(`Д´)ノ
0455名前は開発中のものです。
03/03/02 19:18ID:KRJUovLxキーワード
MFC
スタティックリンク
0456451
03/03/02 19:45ID:HnCtA+YU0457電波330
03/03/02 23:48ID:+27+zflb0458名前は開発中のものです。
03/03/03 01:37ID:CYpjwjgBネガティブ思考がうつるから。
慰めて欲しいの?
0459名前は開発中のものです。
03/03/03 01:41ID:pJUIJ6Ok0460煮頃 ◆mIGaChInq.
03/03/03 04:36ID:NHKuDNKe>>446の改良版です、今度はいつでも終われて永遠に動きます
>>455
ナイスコーチングです!!
ウィザードでスタティックリンクを選ぶかプロジェクト→設定→一般のどちらかですね
>>456
素敵な響きです!!アイドルっ!
でも検索してみたらタイマーのほうが先にわかりやすいサイトに当たったのでまた今度
覚えてろよッ!!決して理解できなかったわけじゃないからなっ -=・゚・(ノД`)・゚・
>>457
多重人格とか分裂症とかはよく言われますがたぶん犯人は一人です
0461煮頃 ◆mIGaChInq.
03/03/03 06:13ID:NHKuDNKehttp://forgamedev.zombie.jp/uploader/up5/img/107.zip
0462煮頃 ◆mIGaChInq.
03/03/03 10:58ID:NHKuDNKe今度はGBAです
壁当てゲームのなりそこない
コンパイルに必要なのはVC++のIDE + GCC + Devkit
IDがNHK!!
三月三日に三連投ヽ(`Д´)ノ
0463電波330
03/03/03 20:55ID:z1ulV1+0どうして、QDでほぼなんでも作れそうな技術を持っているのに、
MFCなんか叩いてるんですか?しかもGBAとか・・・
あと、ソースにコメントが無いのは、up前にコメント削除しているからですか?
それとも、無コメントスタイルなんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています