貴様ら!ブロック崩し作るので見てください
■ このスレッドは過去ログ倉庫に格納されています
0001ヒッキー@プログラミング
NGNG作りたくなりました。
Bitbltなど使う予定ですが、細かい技術がないので、
小出しにプログラムしようと思います。
(タマが動くだけとか、キーボードで自機を動かすだけとか)
オナーニスレだけどよろしくね。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005ヒッキー@プログラミング
NGNGタマが45度以外の方向に進むのがどうやればいいのか考え中です。
三角関数使って、傾き計算するだけでいいですかね?
とりあえず今からやってみます。
0006デフォルトの名無しさん
NGNGただ、その前に物理の勉強が必要だな。(藁
0007ヒッキー@プログラミング
NGNG高校の数学もろくにできてないんで、難しいです。
0008デフォルトの名無しさん
NGNG壁の反射のヒントは「ビリヤード」かな?
0009デフォルトの名無しさん
NGNGあたった瞬間だけ。
0010デフォルトの名無しさん
NGNG00118
NGNG0012ヒッキー@プログラミング
NGNGビリヤードですか…苦手です。反射がイメージできない…。
>>9
角度の変化は動いている物体にあたった瞬間だけですか。
ほおほお。
>>10
ゴルァ!よろしくお願いします。
00138
NGNGX軸軌道であれば、Y軸を中心に反転だな。
誤りゴメソ
00148
NGNGこんな漢字?>1氏
0015ヒッキー@プログラミング
NGNGおお、すばらしい手書きの画像をありがとうございます!
そういえばそういうの習いました…。
www.geocities.co.jp/SiliconValley/2530/block01.zip
↑ちょっと埋まってしまっておかしいですが、
評価よろしくお願いします。ソース付き。
いまんとこ45度です…
0016デフォルトの名無しさん
NGNG崩しならいらないかな。
なので、>>13に加えて動いてる自機にあたったときに、どういう処理を
するかだね。
0017デフォルトの名無しさん
NGNGど、どうって。もっとおっきくしよーよ。
くらいしか・・・(汗
00188
NGNGしかし、頑張ってプログラム作っている1氏に漏れはカンドーした!
Cが少しでもわかるなら、直線描画のソースやるけどいるか?
始点と終点入れるとライン描画する関数なんだけどさ、
ブロック崩し作るなら、この知識は絶対必要にナルヨ!
Cわからんっていうなら、文章形式で説明スルヨ
0019ヒッキー@プログラミング
NGNG跳ね返り係数ですか。あとでビリヤード系のページ探して
見てみますね。ありがとう。
>>17
たしかに小さすぎた。でかくしてみます。
>>18
おー、ありがとうございます。
実は、Cはちょこっとやってるのですが、なにぶん、DOS窓で
動くのしか作れないもので…VESAのライブラリ拾って16bit色
出してみたいと思いましたが、英語の文書が読めなくて挫折しました。
ソースいただけるならかなり嬉しいです!
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG00228
NGNGttp://www2.makani.to/akutoku/upload/dat/1004860590.txt
これね。10分後には削除するのでお早めに。
0023ヒッキー@プログラミング
NGNGいただきました。どもども。
じっくり読ませていただきます。
>>21
今がんばって製作しております。
0024ヒッキー@プログラミング
NGNG一応キーボードで動くようになりました。
しかしZキーとXキーです。
当たったときの跳ね返り処理はまだないです。
00258
NGNG当たり判定は、最初は難しく考えずに、ボール画像の底辺の座標とバー画像の上辺が
交わっている時に、ボール軌道を壁と同じ処理にぶち込めばいいだけだ。
ガンバレ
0026デフォルトの名無しさん
NGNG考え方の詳細は物理の教科書で力学部分を参照。
跳ね返り係数はまず跳ね返り出来たときでいいんじゃない?
0027デフォルトの名無しさん
NGNG振動しまくって壁から抜けられなくなるときがあるので注意。
0028デフォルトの名無しさん
NGNGここの、タキオンブロックっていうのを参考にしてみてください。面白いですよ。
0029デフォルトの名無しさん
NGNGttp://takuomix.homeip.net/
0030ヒッキー@プログラミング
NGNG次、うぷしました。なんとかバーから跳ね返ることに成功。
しかしたまに失敗します…
>>25
参考にさせていただきました。
>>26
ほおほお。了解しました。
物理の教科書…あるかな。
>>27
うい〜。次に実行ファイル作るとに考えてみます。
>>28
DLしてみますね。
>>29
まじですか?ありがとう。
ちょっと飯食ってきます
0031仕様書無しさん
NGNG> この前、軽くやってみたんですが、
> タマが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とりあえず、「ブレセンハム」って言葉を検索してみろ。
0033デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGそれは、ただ貴方が知らなかっただけだと思われ(w
0036
NGNGそれ、全然参考にならんって。(ワラ
玉の動きは角度とスピードから計算するのがヨロシ。
x = x + speed * cos(angle)
y = y + speed * sin(angle)
floatで保存しておいて、画面に描く時にintに変換せよ。
0037デフォルトの名無しさん
NGNGテメェ!早く拝見させてください
0038デフォルトの名無しさん
NGNG角度とか。
ごめん。言ってみたかった。
0039デフォルトの名無しさん
NGNGなんだかプログラム始めたばかりの自分を思い出すぜー!
アップしてあるアプリとか見ても、なんだか初々しくて感動するぜ!
俺にもこんな時代があったなぁ。
1さん頑張れよぉ。
0040デフォルトの名無しさん
NGNGキー入力について(既に知ってたらごめんね)
Private Sub Form_keydown(KeyCode As Integer, Shift As Integer)
Ebd Sub
でキー入力イベントつかってるよね?
ここで引数の KeyCode に入力されたキーが入ってて、
上下左右のキーを押した場合、
vbKeyUp
vbKeyDown
vbKeyLeft
vbKeyRight
っていう値がそれぞれ入ることになってる。
だから、
If KeyCode = vbKeyUp Then 何他羅漢多良
っていう判別式をかけば、上下左右のキーで移動処理が可能になるよ。
ほかの動作キーにもそういう値があるからヘルプで確認してみて。
ついでに俺も初心者だ。
0041ヒッキー@プログラミング
NGNGほお、そうですよね。XとYを同時に足したら1.414倍になりますね…。
リンク先のページ、参考にさせていただきます…が、読めるかな。
あ、ソースはCか(藁
>>32
検索してみました。
割り算使わない&整数のみで可能ですか。ゲームに向いてそうですね〜。
できたら実装したいです。それにしても意外とブロック崩しって難解なんですね…。
ゲームってそういうもんでしょうか。
>>36
おお、めちゃくちゃ分かりやすいです。
ひとまず、36さんの方向で…
>>37
漏れも早く次うぷしたいんだモルァ!
>>38
計算してます。角度とか。
0042デフォルトの名無しさん
NGNG横方向の速度は一定でよかったんじゃなかったっけか
0043デフォルトの名無しさん
NGNGキーボードのオートリピートの対策も絶対必要だな。
0044デフォルトの名無しさん
NGNGメッセージキューにキー入力が残る事?
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG一回、DirectXのライブラリ組んでしまえば、アルゴリズムは全く同じなんだから。
VBの見えないフォームにビットマップ読み込んでデバコンを指定して・・・なんてかっこ悪いからな。
0048 デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG点でやるなよ
線でやれ
0050デフォルトの名無しさん
NGNGVBでDirectX使えば良いのでは?
0051デフォルトの名無しさん
NGNG破片にも当たり判定つけてください。
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG自力で描画したりして、基礎を覚えるのも良いよ。
VBやDirectXのインターフェース覚えるのを頑張ってもいいが、
こっちは一生使える知識だし。
時代錯誤か?
0054デフォルトの名無しさん
NGNG俺が昔VBで作ったブロック崩しが変な動作だったのは点で判定したせいだったのか。
0055デフォルトの名無しさん
NGNG画面を正方形にして、上下左右の各辺にプレイヤーを配置する形で。
005640=44=50
NGNG連続書き込みで悪いけど、やり方教えて。
特に、自前でバッファを用意するってとこ。
VBだけで可能なの?
0057デフォルトの名無しさん
NGNGVBでやる利点無いよね?
中々面白そうなので、俺が作る事にした(w
剛体力学ブロック崩し。
005940=44=50=56
NGNG初心者がプログラミングを勉強しやすいのが利点。
なんてったって、インタプリタだし。
0060デフォルトの名無しさん
NGNG線でもダメなら
面でやれ
0061デフォルトの名無しさん
NGNG1は?
0062ヒッキー@プログラミング
NGNGありがとうございます。がんばります。
>>40
うい〜。vbKeyLeftとかで矢印つかえるようになりました!
>>47
C++ですか…MFCというのがどうもよく分からなくて放置してました。
>>49
線で衝突というのはどうしましょう?四角く範囲区切るということですか?
>>51
難しいです…
>>52
完成したあかつきにはどっかから画像探して貼り付けます。
>>53
はーい。がんばりたいと思います。
>>55
Winsockコントロール使ったことがあるので、何とかなるかも。
最後に考えます
>>61
帰ってきました。
0063デフォルトの名無しさん
NGNG0064ヒッキー@プログラミング
NGNG↑次のファイルうぷしました。
とりあえず、Y軸方向へ進むときに角度を計算しました。
>>36氏に感謝。
>>63
なるだけがんばります。
006540
NGNGあと、タイマーコントロールを使わないで、
代わりにループさせると処理が安定して早くなる。
VBのタイマーコントロールは優先度が一番低いらしいから。
で、ループ処理のなかに DoEvents と sleep をいれると、
うまくOSにも制御が戻るから。
sleep はAPIで、使い方は sleep(100)とか。
括弧の中の数字が、アプリの実行の停止時間で、1=0.001秒だったはず。
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG似たスレどこかで見ました。
006840
NGNG右に移動中、右からきた玉が自機を透ける。
0069ヒッキー@プログラミング
NGNGほおほお。sleep入れてみました。
VBのタイマーコントロールは怪しいらしいですね。
APIのGetTickCount使うようにしました。
>>66
脱がしたいです。
>>67
おもしろかったので真似しましたゴルァ!
0070ヒッキー@プログラミング
NGNGありがとうございます。
なんか、あまり考えずに書いたので、右側が跳ね返るときも
左側が跳ね返るときも同じ処理を書いていたようです…鬱
04を再アップしました
007140
NGNG了解!
俺は初心者だし、お互いがんばろう。
ついでに言うと、GetTickCountの使い方がわからん(ー_ー;
0072デフォルトの名無しさん
NGNGスレタイトルの最初が>貴様ら<で、最後が>ください<になってるので
思わずみてしまった。
伽藍とバザール的良スレ。最後までやりとげてほしい。
このスレと結果報告を兼ねるHPで有意義な情報を公開にょ
0073デフォルトの名無しさん
NGNG毎回SIN/COSを計算させずに 変数VX,VYを使う事
ball_x = ball_x + VX;
ball_y = ball_y + VY
そして、壁にあたれば VX,VYを
左右壁なら VX = -1*VX 上の壁がラケットなら VY=-1*VY と符号を変更する
その場合-1ではなく -1.0001 のようにするとだんだん速度が大きくなって面白い
2、あたり判定は ball_x/y と VX/Y を足した後の線分との距離を使う事
ラケットとなら線分の交差と点との距離を使え
交差なら 交差判定で検索しろ
点と線分の距離は
http://pc.2ch.net/test/read.cgi/tech/1003559977/3
0074
NGNG>>36
角度でやると、衝突後の反射ベクトル求めるのが大変だから、
素直にxyのベクトルでやった方がいいのでは?
応用(たとえば重力とか)やろうとしたときも、角度と長さでやると
後々困難になるしー。
>>62
線での衝突判定というのは、ボールのすり抜け防止の策です。
現在の位置と次ステップの位置の二点を結ぶ直線として、目的の線分との
交差判定を行います。
こうすると、どんなに速いボールでもブロックすり抜けなどの検出エラーは
出ませんぜ。
まあ今は壁だけの段階だからまだ関係ないけどね。
頑張ってね。
0075
NGNGあらら、かぶった。ごめん
0076ヒッキー@プログラミング
NGNGGetTickCountは、Windowsが起動してからの時間をミリ秒単位で
返す関数のようです。引数は無しです。
で、10ms経った時間を計ろうと思ったら、現在時間から前に計った時間を
引いて、10を超えたら…みたいに書いたらいいみたいです。
>>72
はい、なんとかHPにまとめてみたいと思います。
有意義な意見をくださる方がイパーイいらっしゃるので、
僕の為にだけではもったいないです。
>>73
そうですよね。Sinとか毎回計算してたら遅くなりそうですしね。
んで、線分の交差を検索したところ、外積やら知らない単語が
出てきたので、それを調べようとして泥沼状態です…
>その場合-1ではなく -1.0001 のようにするとだんだん…
ほおほお、たしかに(藁 取り入れてみたいです。
>>74
そういうことでしたか。ようやく納得できました。
ありがとうございます!
0077デフォルトの名無しさん
NGNGhttp://piza2.2ch.net/tech/kako/996/996157997.html
0078デフォルトの名無しさん
NGNGバーの端っこにぶつかったら急角度で跳ね返る、
要するに物理法則を無視した動きをするけどその辺はどのように解決する?
その辺をどうにかしないと、
バーやブロックや壁の垂直面・水平面が全て水平だったらボールの動く角度は
常に一定になるけど……。
0079デフォルトの名無しさん
NGNGアナログなコントローラでないと無理だけど。
008040
NGNG俺としては、物理学的なものは無視して、まずは形にすることをお勧めする。
0081デフォルトの名無しさん
NGNG単純に端に8ピクセルより近ければ 端からの距離を Dとして
VY:=-VT : VX=VX*D/8 とかでもそれなり
0082デフォルトの名無しさん
NGNGそれじゃボールのスピードが変わっちゃうYO!
0083デフォルトの名無しさん
NGNGリアルタイムゲームでキー押下イベントを使うVBアプリは糞と呼ばれます
描画はバックバッファを使うこと
非表示のPictureコントロール(AutoRedraw=True)に全部描いてから
FromにPictureコントロールの内容をコピーしよう
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG>>83
キーコード
カーソルキー左 37 、カーソルキー上 38、シフトキー 16
だっけ?左右逆かも。
0087デフォルトの名無しさん
NGNGvbKeyLeftとかってやつな
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG0090ヒッキー@プログラミング
NGNG↑次のファイルうぷしました。なんか、めり込みます…
線で跳ね返る処理をコピペしたら、おかしくなりました。
タマに、斜め方向に線をいれてます。(X状に)
>>77
リンク先、参考にさせてもらいます。どもです。
>>78
そうですね〜。完成が見えてきたら考えてみます。
>>79
アルカノイドのコンパネみたいなやつあったら嬉しいんですけどね(藁
>>80
うい〜。形を作ることを考えます。
>>81
そうですね〜。まずは好きにやってみます。
>>83
う…今回うぷした分でキー入力は修正しました。さんくす。
>>85
うい。してみました。
>>87
APIでキー入力の処理をしたので、VK_LEFTに変わってしまいました。
>>88
う〜ん、どのくらいでしょう。
趣味でたまにちょくちょくするくらいで、
期間的にはだいぶ長いことやってます…。
最初はファミリーベーシックで挫折(小学生時代)
ポケコンのベーシックにはまる(中学3年〜高校生)
CとVB勉強(高校〜)みたいな。
0091デフォルトの名無しさん
NGNGバグが酷いんだが、なんとかならんか?
激しく酷いぞ。
0092デフォルトの名無しさん
NGNG擬似スプライト処理をしたほうがいいね。ボールのフチが見えて萎える。
それからバックバッファを使わないと後々困ると思うよ。
いまのままだと、ボールやバーの移動量をふやすと軌跡がのこっちゃうでしょ。
0093デフォルトの名無しさん
NGNGこれは今すぐ直しなさい。
Form1_Unloadイベントに一行End書くだけでしょ。
タスクマネージャ見て驚いたよ。
0094ヒッキー@プログラミング
NGNGすいません、徐々に直していきます。
>>92
うい。了解。
前にフチを消す処理を書いたような覚えが…探してみます。
バックバッファですか。そこに書いてから実際の画面に転送ですよね。
やってみます。
>>93
ごめんなさい…ウチでもタスクマネージャ見たら溜まってたんで
焦りました。05を再アップしました。
今まで試してくださった方、大変申し訳ないです。
0095ヒッキー@プログラミング
NGNG↑次うぷしました。
背景になじませてみました
0096
NGNG覚えるの早いねー。
ブロックの管理あたりで一騒動ありそう・・・。
何か考えてる?
0097デフォルトの名無しさん
NGNG消化できてても吸収できてないと後々にひびく。
1が無理してなきゃいいが・・・
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG消化はできてるだろ。
問題は、覚えたかどうかだ。
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGこのスレをヴァカ学生どものテキストに使いたいくらいじゃよ。
結局GDI描画にしたのねん。
メモリ上に仮想VRAMおったてて、スクリーンにBitBltかけるライブラリとか
なら探せばいくらでもありそう。
でも、プログラム的にはGDIのBitBltと同じような処理になっちまうだがな。
まあ、ともかく1よ、テキトーにがんばってくれや。
燃え尽きんようにな。
■ このスレッドは過去ログ倉庫に格納されています