[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
174: 名前は開発中のものです。 [sage] 04/06/27 19:00 ID:PY8053hi(1/2) AAS
 >>169実際にはWindowsのゲームプログラミングはそれほど難しくないよ。 
 内部にゲーム画像を作成してキー入力などに応じて更新、それを 
 描画するだけだからね。ウインドウプログラミングの「流れ」を 
 掴めれば、パズルゲームやADV/RPGは比較的簡単に作れる。 
  
 何からはじめればよいかわからない、ということなら 
  
 C++ ゲーム プログラミング 
  
 といったキーワードでぐぐるなり、書店で「Windowsプログラミングの本」 
 を眺めて何をすれば「Windows用プログラム」になるのか、調べてみると 
 良いかも。 
  
 本当に「基礎」をやるなら、高レベルのライブラリではなくまずSDK 
 ベースのWindowsプログラミングで「Windowsのプログラムの流れ」を 
 しっかり追った方が良い。
175: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/06/27 19:17 ID:v+n6K1pQ(1/3) AAS
 インベーダー途中 
 外部リンク[zip]:gamdev.org 
176: 生徒A [] 04/06/27 19:26 ID:WIo25CTE(1) AAS
 しばらく来ない内にすごい事になってるよ…もう付いていけない 
177(1): 生徒BLUE [] 04/06/27 22:04 ID:b0jvqBNF(1) AAS
 あまりソースを貼り付けるのは荒らしっぽい?のでうぷろだにしました 
 今はまだ170行ですがインベーダーなら500〜1000ぐらいにたぶんなるので 
 そろそろ切り替えようと思っていたところです 
  
 キー入力はGetAsyncKeyStateを使いました 
 0x8000の意味とかまだよくわかりませんけれど 
 if ((GetAsyncKeyState( VK_UP )    & 0x8000) == 0x8000) 
 { 
 y--; 
 } 
  
 チラチキ対策でダブルバッファを使った描画をしています 
 参考にしたソースをほぼそのままコピペしていますが内容は理解しています 
 このあたりは以前、やったことがあるのでまだまだ大丈夫 
  
 課題5キー入力 
 外部リンク[zip]:gamdev.org 
178(1): 名前は開発中のものです。 [sage] 04/06/27 22:28 ID:6fdveQpW(1) AAS
 画像だけなら簡単だが、音をつける段階で挫折しそうだ。 
  
 ダイレクトXを使わずに、WAVを複数同時に鳴らすことがどれほど大変か・・・ 
179: 名前は開発中のものです。 [sage] 04/06/27 22:41 ID:PY8053hi(2/2) AAS
 >>178 
 そうだね。 
 「自分でPCMバッファを作成し波形を合成、リアルタイムに出力」 
 なんてことになると結構しんどい(面白いとも言うがw)・・・。 
  
 まあ、画像でも同じような場面(自分で管理するバッファを処理し 
 ながらのリアルタイム出力)はあるわけだが。
180(1): 名前は開発中のものです。 [sage] 04/06/27 22:48 ID:qWAk5Epz(1/2) AAS
 ほらほら、先生が仕切らないから、落ちこぼれがでちゃったぞ。 
 一人は突っ走ってるし。 
181(1): 名前は開発中のものです。 [sage] 04/06/27 22:58 ID:qWAk5Epz(2/2) AAS
 >>177 
 > 0x8000の意味とかまだよくわかりませんけれど 
 「ANDでマスクとる」とかはわかる? 
  
 定数書いちゃダメとか、staticって書くようにするとか、 
 拡張子がcppなのにC言語風じゃん!とか、 
 バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ 
 作成してしまった方が処理の無駄がないとか、ブラシとペンも。
182: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/06/27 23:05 ID:v+n6K1pQ(2/3) AAS
 >>180 
 とりあえず突っ走ってるって俺じゃないよな? 
  
 >>134CPU使用率が70%〜80%まで行ったんだけど・・・。 
183: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/06/27 23:07 ID:v+n6K1pQ(3/3) AAS
 ( ゚д゚)ハッ!もしや、落ちこぼれが俺か! 
184(1): 副担任 [sage] 04/06/27 23:48 ID:sIosK61q(2/2) AAS
 先生が帰ってくるまで漏れが面倒みましょうか? 
185: ぷち [] 04/06/28 00:10 ID:W5zBmX8i(1) AAS
186: 名前は開発中のものです。 [sage] 04/06/28 03:20 ID:vjeNxAuN(1) AAS
 落ちこぼし師 
187: 名前は開発中のものです。 [sage] 04/06/28 04:46 ID:AKJFcicb(1) AAS
 >>184 
 お願いします。 
 ソース貼っても、アドバイス求めても生徒ばっかりでレスなくて(´・ω・`)ショボーンです。
188(1): 生徒A [] 04/06/28 06:10 ID:D8BhR1kS(1/3) AAS
 なんとか徹夜して6時間ほど粘ってキー入力まで行ったけど、限界が近い… 
  
 WM_TIMERで画面の更新を行っているんですが、なんかすごくちらつくんですよ 
 あと、DeleteObject(hBr)というのを使うと、何故か画面が白くなるんです… 
 なので、使ってません。 
  
 外部リンク[lzh]:gamdev.org 
189: 4  ◆3VUXqvbfSY  [] 04/06/28 06:20 ID:kLFrYp0l(1/2) AAS
 すみません皆様… 
 ミニ死の行進してました… 
  
 アプロダについて: 
 あっても、別に構いませんが、必要無いようにします。 
 具体的には、トップダウンで(例えばCなら) 
 メインを作る。 
 ↓ 
 個々に使われた関数を作る 
 みたいに、ソースを(出来るだけ解りやすく)分割して、表示しようと企んでいます。 
進行度: 
 自分で出来る方がドンドン進まれるのは、むしろ、喜ばしいです。ただし、課題はあくまで初心者ラインにしておきます。 
 だから、焦らなくて大丈夫。今の課題は、「キーで、赤い四角を動かす」です。 
先生: 
 や、やっと一人…m(_ _)mヨロシクオネガイシマス 
次の課題: 
 当たり判定。 
 先ほどの、「動く赤い四角」を避けゲーに改造しましょう 
 敵は 敵x = rand() % 640;//rand()*640/RAND_MAX 
 で…敵y++;のように動く単純な敵です。 
 当たったら終了と言う仕様で… 
190(1): 副担任 [sage] 04/06/28 10:23 ID:HdfIcXTc(1/3) AAS
 漏れは先生と考え方が違うので一応書いておきます。うざかったらクビにしてください。>先生 
 ・動けば正義(いい設計はできたほうがいいけどまだ求める段階ではないと思う) 
 ・ソースは固めてどこかにアップする(バックアップ、成果としてわかりやすい) 
 ・バイナリは付けて欲しい(開発環境を全てそろえるのは難しい) 
 ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい) 
  
 あくまで初心者のためのライブラリとしてとらえています。 
 「絵を描くにはこうする」「動かすにはこうする」「…」「…」のサンプルコードの固まりにしたいです。 
  
 課題の方針には賛成なので従います。 
  
 というわけで分からんことがある人は漏れが面倒みます。勉強しながら…。orz 
191: 副担任 [sage] 04/06/28 10:26 ID:HdfIcXTc(2/3) AAS
 訂正すまそ。 
  × ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)  
 ○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)  
192(1): 名前は開発中のものです。 [sage] 04/06/28 10:28 ID:Ten9Dr/x(1/2) AAS
 >>188 
 簡単だが添削。ウィンドウプロシージャだけ。 
  
 DeleteObjectの2行はWM_PAINT内でやってはダメ。 
 WM_PAINTは何度も呼ばれるため、最初の描画が終了した時点で、作ったペンやブラシは 
 無効になるため、色がつかなくなる。DeleteObjectするならWM_DESTROY内で。 
 ちなみにCreateしたものはちゃんと削除するのがお約束。 
  
 SelectObjectしたものに関しても、元に戻しておくのが一応の作法。 
 holdobj = SelectObject(hdc, hobj);// 以前のオブジェクトハンドルを保存 
 // 何か処理 
 holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 
  
 何故か赤く塗りつぶされないというのは、ディスプレイDCに複数回描画を行っていて、それが 
 ちらつきとして現れるから。こういう場合はオフスクリーンに描画し、最後にディスプレイDCに 
 BitBltする。 
193: 名前は開発中のものです。 [sage] 04/06/28 10:30 ID:Ten9Dr/x(2/2) AAS
 ちと訂正・・orz 
  
 ×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 
 ○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 
194(2): 63 ◆xdaKt6k1XI  [sage] 04/06/28 15:51 ID:W33tIq0j(1/2) AAS
 >>190 
 変な質問ですいません 
 バイナリってなんですか? 
195(2): 生徒A [] 04/06/28 16:36 ID:D8BhR1kS(2/3) AAS
 >>194 190じゃないですが、もともとは2進数という意味だと思います。 
 だから、この場合は、1と0の組み合わせで作られた機械語データ 
 (実行ファイル)の意味だと思います。 
 他にも、テキストデータ以外のファイル全てを指す事もあります。 
196: 生徒A [] 04/06/28 16:40 ID:D8BhR1kS(3/3) AAS
 >>192 ありがとうございます。 
 DeleteObjectのやり方は分かったのですが、 
 オフスクリーンのやり方がちょっとよく分からないです。 
 具体的には、オフスクリーンの作成方法です。 
197: 名前は開発中のものです。 [sage] 04/06/28 17:06 ID:cdlT0cfW(1) AAS
 CreateCompatibleBitmap 
198(1): 副担任 [sage] 04/06/28 17:37 ID:HdfIcXTc(3/3) AAS
 >>194 
 Windowsの実行ファイルのことです。"〜.exe" ってやつ。 
 C言語とかはコンパイルして実行ファイルを作らないとプログラムが動きません。 
 HSPはインタプリタ言語なので実行ファイルは作らなくていいみたいですね。 
  
 >>195 
 正解です 
上下前次1-新書関写板覧索設栞歴
あと 589 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s