トップページ⇒tech
1001コメント487KB

貴様ら!ブロック崩し作るので見てください

■ このスレッドは過去ログ倉庫に格納されています
0001ヒッキー@プログラミングNGNG
VBでWinAPIを使う方法がわかってきたので
作りたくなりました。

Bitbltなど使う予定ですが、細かい技術がないので、
小出しにプログラムしようと思います。
(タマが動くだけとか、キーボードで自機を動かすだけとか)

オナーニスレだけどよろしくね。
0002デフォルトの名無しさんNGNG
名スレの予感!
0003デフォルトの名無しさんNGNG
オナニでもがんばれYO!
0004デフォルトの名無しさんNGNG
「完成しない」に3万5000薬師丸ひろ子
0005ヒッキー@プログラミングNGNG
この前、軽くやってみたんですが、
タマが45度以外の方向に進むのがどうやればいいのか考え中です。

三角関数使って、傾き計算するだけでいいですかね?
とりあえず今からやってみます。
0006デフォルトの名無しさんNGNG
がんばれ。
ただ、その前に物理の勉強が必要だな。(藁
0007ヒッキー@プログラミングNGNG
あ、ヤパーリ物理の勉強しないとダメですか。

高校の数学もろくにできてないんで、難しいです。
0008デフォルトの名無しさんNGNG
三角関数?簡単なブロック崩しだったらそんなの使わんぞ
壁の反射のヒントは「ビリヤード」かな?
0009デフォルトの名無しさんNGNG
ヒント:直角で構成された世界では、玉の角度が変化するのは動いている物体に
あたった瞬間だけ。
0010デフォルトの名無しさんNGNG
てめぇ!拝見させていただきますゴルァ
00118NGNG
つーか、玉の軌道をX軸で反転すれば問題なし。
0012ヒッキー@プログラミングNGNG
>>8
ビリヤードですか…苦手です。反射がイメージできない…。

>>9
角度の変化は動いている物体にあたった瞬間だけですか。
ほおほお。

>>10
ゴルァ!よろしくお願いします。
00138NGNG
あ、Y軸軌道であればX軸を中心に軌道反転、
X軸軌道であれば、Y軸を中心に反転だな。

誤りゴメソ
00148NGNG
ttp://www2.makani.to/akutoku/upload/dat/1004858247.bmp

こんな漢字?>1氏
0015ヒッキー@プログラミングNGNG
>>14
おお、すばらしい手書きの画像をありがとうございます!
そういえばそういうの習いました…。

www.geocities.co.jp/SiliconValley/2530/block01.zip
↑ちょっと埋まってしまっておかしいですが、
 評価よろしくお願いします。ソース付き。
 いまんとこ45度です…
0016デフォルトの名無しさんNGNG
 まあ、ビリヤードは跳ね返り係数を考慮しないといけないけど、ブロック
崩しならいらないかな。
 なので、>>13に加えて動いてる自機にあたったときに、どういう処理を
するかだね。
0017デフォルトの名無しさんNGNG
>>15
ど、どうって。もっとおっきくしよーよ。
くらいしか・・・(汗
00188NGNG
いやーVBワカンネ(藁

しかし、頑張ってプログラム作っている1氏に漏れはカンドーした!
Cが少しでもわかるなら、直線描画のソースやるけどいるか?
始点と終点入れるとライン描画する関数なんだけどさ、
ブロック崩し作るなら、この知識は絶対必要にナルヨ!
Cわからんっていうなら、文章形式で説明スルヨ
0019ヒッキー@プログラミングNGNG
>>16
跳ね返り係数ですか。あとでビリヤード系のページ探して
見てみますね。ありがとう。

>>17
たしかに小さすぎた。でかくしてみます。

>>18
おー、ありがとうございます。
実は、Cはちょこっとやってるのですが、なにぶん、DOS窓で
動くのしか作れないもので…VESAのライブラリ拾って16bit色
出してみたいと思いましたが、英語の文書が読めなくて挫折しました。
ソースいただけるならかなり嬉しいです!
0020デフォルトの名無しさんNGNG
「貴様ら!」と来て、「見てください」と突然丁寧になるのにワロタ
0021デフォルトの名無しさんNGNG
つぎはとりあえず、キーボード入力でバーを動かすプログラムかな?
00228NGNG
>1氏

ttp://www2.makani.to/akutoku/upload/dat/1004860590.txt

これね。10分後には削除するのでお早めに。
0023ヒッキー@プログラミングNGNG
>>22
いただきました。どもども。
じっくり読ませていただきます。

>>21
今がんばって製作しております。
0024ヒッキー@プログラミングNGNG
www.geocities.co.jp/SiliconValley/2530/block02.zip

一応キーボードで動くようになりました。
しかしZキーとXキーです。
当たったときの跳ね返り処理はまだないです。
00258NGNG
次はバーの当たり判定とバー移動の狡猾化だな。

当たり判定は、最初は難しく考えずに、ボール画像の底辺の座標とバー画像の上辺が
交わっている時に、ボール軌道を壁と同じ処理にぶち込めばいいだけだ。

ガンバレ
0026デフォルトの名無しさんNGNG
玉の速度をX成分Y成分に分ければヨシ。
考え方の詳細は物理の教科書で力学部分を参照。
跳ね返り係数はまず跳ね返り出来たときでいいんじゃない?
0027デフォルトの名無しさんNGNG
跳ね返りのとき、単に速度符号を反転するだけだと
振動しまくって壁から抜けられなくなるときがあるので注意。
0028デフォルトの名無しさんNGNG
http://www.geocities.co.jp/HeartLand-Keyaki/7104/oha/free_8.htm
ここの、タキオンブロックっていうのを参考にしてみてください。面白いですよ。
0029デフォルトの名無しさんNGNG
お前頑張ってるので鯖を提供してやる。
ttp://takuomix.homeip.net/
0030ヒッキー@プログラミングNGNG
www.geocities.co.jp/SiliconValley/2530/block03.zip
次、うぷしました。なんとかバーから跳ね返ることに成功。
しかしたまに失敗します…

>>25
参考にさせていただきました。

>>26
ほおほお。了解しました。
物理の教科書…あるかな。

>>27
うい〜。次に実行ファイル作るとに考えてみます。

>>28
DLしてみますね。

>>29
まじですか?ありがとう。

ちょっと飯食ってきます
0031仕様書無しさんNGNG
>>5
> この前、軽くやってみたんですが、
> タマが45度以外の方向に進むのがどうやればいいのか考え中です。

http://www.cs.unc.edu/~mcmillan/comp136/Lecture6/Lines.html
を参考にせよ。(digital-devide line drawingとか呼ばれたalgorithm)

それから、90度(縦にまっすぐ)と45度の二つで、同じ速度で玉動かす事考えろや。
45度の時、1.414倍の速度になったら駄目だぞ。
時間軸と玉の移動も、線を書く時のx軸y軸と同じような間引きを考えないというこった。
0032デフォルトの名無しさんNGNG
>>1
とりあえず、「ブレセンハム」って言葉を検索してみろ。
0033デフォルトの名無しさんNGNG
ん。スレタイトルとは裏腹に良スレage
0034爺NGNG
>>31
昔の元祖ブロック崩しはそんな高尚なことやってなかったと思うが、、、
0035デフォルトの名無しさんNGNG
>>34
それは、ただ貴方が知らなかっただけだと思われ(w
0036  NGNG
>>31
それ、全然参考にならんって。(ワラ
玉の動きは角度とスピードから計算するのがヨロシ。
x = x + speed * cos(angle)
y = y + speed * sin(angle)
floatで保存しておいて、画面に描く時にintに変換せよ。
0037デフォルトの名無しさんNGNG
>1
テメェ!早く拝見させてください
0038デフォルトの名無しさんNGNG
考えてるはずだ!
角度とか。



ごめん。言ってみたかった。
0039デフォルトの名無しさんNGNG
うおぉ・・・・、初めてこのスレに気づいたが、
なんだかプログラム始めたばかりの自分を思い出すぜー!
アップしてあるアプリとか見ても、なんだか初々しくて感動するぜ!
俺にもこんな時代があったなぁ。
1さん頑張れよぉ。
0040デフォルトの名無しさんNGNG
俺もVBで肩身が狭いので、1を何気に応援したい。

キー入力について(既に知ってたらごめんね)

Private Sub Form_keydown(KeyCode As Integer, Shift As Integer)

Ebd Sub
でキー入力イベントつかってるよね?

ここで引数の KeyCode に入力されたキーが入ってて、
上下左右のキーを押した場合、
vbKeyUp
vbKeyDown
vbKeyLeft
vbKeyRight
っていう値がそれぞれ入ることになってる。

だから、
If KeyCode = vbKeyUp Then 何他羅漢多良
っていう判別式をかけば、上下左右のキーで移動処理が可能になるよ。
ほかの動作キーにもそういう値があるからヘルプで確認してみて。
ついでに俺も初心者だ。
0041ヒッキー@プログラミングNGNG
>>31
ほお、そうですよね。XとYを同時に足したら1.414倍になりますね…。
リンク先のページ、参考にさせていただきます…が、読めるかな。
あ、ソースはCか(藁

>>32
検索してみました。
割り算使わない&整数のみで可能ですか。ゲームに向いてそうですね〜。
できたら実装したいです。それにしても意外とブロック崩しって難解なんですね…。
ゲームってそういうもんでしょうか。

>>36
おお、めちゃくちゃ分かりやすいです。
ひとまず、36さんの方向で…

>>37
漏れも早く次うぷしたいんだモルァ!

>>38
計算してます。角度とか。
0042デフォルトの名無しさんNGNG
ブロック崩しの場合
横方向の速度は一定でよかったんじゃなかったっけか
0043デフォルトの名無しさんNGNG
ゲームとして成立させるためには、
キーボードのオートリピートの対策も絶対必要だな。
0044デフォルトの名無しさんNGNG
>43
メッセージキューにキー入力が残る事?
0045デフォルトの名無しさんNGNG
というかブロック崩しならマウスにすれば?
0046デフォルトの名無しさんNGNG
おいおい、意外にも名スレだな。最近珍しいぞ。
0047デフォルトの名無しさんNGNG
いやぁ、VBでやるよりC++でやるほうが手軽で簡単だと思うぞ。
一回、DirectXのライブラリ組んでしまえば、アルゴリズムは全く同じなんだから。
VBの見えないフォームにビットマップ読み込んでデバコンを指定して・・・なんてかっこ悪いからな。
0048 デフォルトの名無しさん NGNG
スレタイトルに好感が持てタ
0049デフォルトの名無しさんNGNG
衝突は
点でやるなよ
線でやれ
0050デフォルトの名無しさんNGNG
>47
VBでDirectX使えば良いのでは?
0051デフォルトの名無しさんNGNG
ブロックは4つに分解して飛び散り、その
破片にも当たり判定つけてください。
0052デフォルトの名無しさんNGNG
美女を背景にしてください。
■ このスレッドは過去ログ倉庫に格納されています