貴様ら!ブロック崩し作るので見てください
■ このスレッドは過去ログ倉庫に格納されています
0001ヒッキー@プログラミング
NGNG作りたくなりました。
Bitbltなど使う予定ですが、細かい技術がないので、
小出しにプログラムしようと思います。
(タマが動くだけとか、キーボードで自機を動かすだけとか)
オナーニスレだけどよろしくね。
0596デフォルトの名無しさん
NGNGガムバレ
0597デフォルトの名無しさん
NGNG妙にDelphiびいきだなぁ(笑
漏れは別にSTL依存は全く問題無いと思うけど。むしろSTLを使いこなせたら
ちょっと尊敬しちゃう。漏れはコンテナクラスくらいしか使う気しない。
Direct3D使うようになると、DelphiどころかVC++/IC++以外のコンパイラは
たとえC/C++であっても却下なんだよなぁ。
Borlandもさっさと妥協してオブジェクトファイルのフォーマットをMSに合わ
せれば良いのだが。
0598デフォルトの名無しさん
NGNG> Direct3D使うようになると、DelphiどころかVC++/IC++以外のコンパイラは
> たとえC/C++であっても却下なんだよなぁ。
なんで? 詳細キボンヌ
0599デフォルトの名無しさん
NGNG言語というより一つの処理系にすぎないと思うんだけど。
0600デフォルトの名無しさん
NGNGっていうか、VBにもユーザコントロールって無かった?
0601デフォルトの名無しさん
NGNGそこで成長が止まるか コンポ自作側に回るかが分岐点かもな
UserControl はActiveXを手軽に作れるのがメリットで、便利とは
思うけど、あくまでもコントロール。
コンポーネントはコントロールも作れるけど、クラスの一種。
コンポーネントにしたからといってオーバーヘッドはクラス化と同じ
程度。(実行時型情報を動的に使えば多少のオーバヘッドは出るけど)
またコンポーネントを作る事でクラス作成の訓練にもなるのがイイ感じ
それってC++でも一緒じゃないの?
参考書片手に勉強すればいい話かと。
結局本人次第としか言いようがない・・・。
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG問題はまあ クラス設計とかが難しいって話かもしれないけど
趣味で作るなら 何回か作れば最適なのが見つかるし。
0605デフォルトの名無しさん
NGNG>>1 =ヒッキー@プログラミング
例のブロック崩しですが(この話題ってもうおわったの?)、
ブロックをすべて崩した後に、ボールをキャッチせず、残りのボールを0にすると
「ゲームクリア」となるのはいいのですか?
しかもその後面が変わって即「ゲームオーバー」となってしまう。
ださい と思うんやけど。
ソース見てくるわ
# VBは経験ないので、直感で読みます(藁
# C言語を勉強中http://www.kumei.ne.jp/c_lang/で。
# ポインタってのがよく分からないのが、つらい。
0606ヒッキー@プログラミング
NGNG的を射たご意見、ありがとうございます。
ちょっとやる気がでました。
>>590
そういえばN88Basic互換のフリーソフトがVectorにありましたね。
サンプルがう○この描画でしたが(藁
>>592
ハイスコア、ネット上で集計するにあたって、何が必要でしょう?
アプリケーション上から自動で処理するには、CGIにPOSTメッセージ
を送ればいいんでしょうか。
>>593
Modって、音楽のModですか?
>>595
Delphiってインラインアセンブラ使えるんですか?
おー、結構すごそうですねー。
KylixってDelphiと互換の開発環境だったんですねー。
参考になります。
>>596
ありがとうございます。ガムバリます。
>>597
STLとは何でしょう?検索してみます。
やっぱWindowsで開発する以上、MSのツール使った方がいいのかなぁ…。
>>600
なんか、OCXというのを作る機能がありましたね。
一回、Web上に張りましたが、ウイルスぽい警告を出されるので
萎えました(藁
>>601
Delphiって、実行ファイルにコンポーネントを埋め込めるんでしょうか。
…としたら、探しまくるようになりそうですね。
僕は人が作ったクラスは内部で何をやってるのか見えないので、
あまり好きではないです。手軽に作りたい方が先行してたら
既にあるものを使わせて頂いた方が楽ですが。
>>602
うーん、いろいろ考え方がありますねー。
やっぱプログラムを勉強する人次第なんでしょうか。
>>603
なんか、開発環境デフォルトでついてる、謎のクラスやらを
覚えるのが大変で、どこに手を付けていいやら分からなくなります。
>>604
クラス、一回作ってみようと思います。
VBで作ってもダメかな…。
>>605
ご指摘ありがとうございます。直してみました。
遊んでくださる人がいる以上、不都合は直そうと思いますが、
1個直す度にUPしてたら、ファイルだらけになるのではないかと
思い、ちょっと戸惑ってました。
0607ヒッキー@プログラミング
NGNG↑次UPしました。変更点は、
・ブロック全て破壊後にボールを落としても、StageClearとなる現象の修正
です。
0608597
NGNGMicrosoftとBorlandではオブジェクトファイルに互換性が無いんだけど、
(昔はあったらしいがMSが仕様変更したときにBorlandがついてこなかったとか)
dllならimplib使ってBorland用のlibを作れるからDirectXでもあまり問題
無いんだけど、Direct3Dは重要なライブラリがスタティックライブラリで
提供されてて、それはdllじゃないからBorlandのコンパイラでは利用不可能。
DirectX7の頃はそれほど重要でもなかったんだけど、X8になったらシェーダー
のコンパイル関数とかがスタティックライブラリの方に入ってて死亡。
一応、NVIDIAのNVASM使ってコンパイルできなくも無いけど、試行錯誤するのに
毎回コンパイルしなきゃいけないのは面倒かと。
事実上、DirectX8でBorlandコンパイラには死刑宣告されたようなもんだ。
0609デフォルトの名無しさん
NGNGMSの単なる嫌がらせか?
0610デフォルトの名無しさん
NGNGその点でDirectXが使えない=死刑宣告というのは偏狭。
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNGだからぁ、Direct3DはCOM使ってない部分があるんだって。
COMにしないのは何故だか分からんが。速度的な問題かも。かなりの部分がインライン
関数になってるくらいだし。
>>610
597に「Direct3D使うようになると」って但し書きしてるから、そこも見てから言っ
てくれ。
>>611
coff2omfでも駄目みたい。
ただ、検索したらボーランド用のライブラリを公開してる人がいたよ。
どんなのか見たら、Direct3DXの関数を全部エクスポートしたdll作って、
それを利用するみたい。
俺もソースの無いdllとかを改良するときに同じ事してるけど、これなら
呼び出しコストが少し増えるだけで利用できるわな。
0613598
NGNGgcc(mingw)とかlcc-winとかはどうなのかな。
0614デフォルトの名無しさん
NGNG0615傍観者
NGNGここは1の成長を見守るスレなんだから。
0616デフォルトの名無しさん
NGNGやるとしたら、このあたりか?
鬱だ氏のう DirectX 2
http://pc.2ch.net/test/read.cgi/tech/997101556/
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGblock29.zip の ManageBall.bas について質問なんですが、
286行目から…
---------------------------------------
'キーボードの時の角度の補正
If CBall.vx > 0 Then
If Press.Shift Or Press.Ctrl Then
If Press.Right And CBall.Angle >= 25 Then CBall.Angle = CBall.Angle - 10
If Press.Left And CBall.Angle <= 65 Then CBall.Angle = CBall.Angle + 10
Else
If Press.Right And CBall.Angle >= 20 Then CBall.Angle = CBall.Angle - 5
If Press.Left And CBall.Angle <= 70 Then CBall.Angle = CBall.Angle + 5
End If
Else
If Press.Shift Or Press.Ctrl Then
If Press.Right And CBall.Angle <= 65 Then CBall.Angle = CBall.Angle + 10
If Press.Left And CBall.Angle >= 25 Then CBall.Angle = CBall.Angle - 10
Else
If Press.Right And CBall.Angle <= 70 Then CBall.Angle = CBall.Angle + 5
If Press.Left And CBall.Angle >= 20 Then CBall.Angle = CBall.Angle - 5
End If
End If
---------------------------------------
「CBall.vx > 0」というのは右に向かっている状態ということでしょうか。
[SHIFT]で加速パドルになってて、かつ角度が「25度以上」なら、
パドルの力が加わって右方向に流れる角度(-10)になる
というイメージでいいでしょうか?
その次が、同じく加速パドルで「65度以下」なら、パドルによって
左方向の力が加わり、角度が垂直方向より(+10)になる
ということですか?
「25」「20」「65」「70」という角度にはなにか意味があるのでしょうか?
もしよろしければ教えてください。
0619ヒッキー@プログラミング
NGNGスタティックライブラリって、コンパイラが変わると
使えなくなるんでしょうか?
>>615
実はこういう話題も、僕にはまだちょっと難しいですが
興味があるので、調べながら読ませてもらっています(藁
>>616-617
どもども。お気遣い、ありがとうございます。
>>618
>「CBall.vx > 0」というのは右に向かっている状態…
はい、右に進む場合は座標がだんだん正の方に増えていくので、
そのように書きました。
>「25」「20」「65」「70」という角度にはなにか意味が…
あまり意味はないのですが(w 、ただ、15度以下になったり、
75度以上にならないようにしようかと思いまして。
急角度になりすぎると、角度を修正する事ばかりにとらわれて、
ゲーム性が違うほうに向かってしまうんではないか、
と感じたので、そのようにしました。
0620ヒッキー@プログラミング
NGNG↑次UPしました。変更点は
・マウスモードでボールを複数出すと自機が重くなる現象の修正
です。
ソース、1行の修正で済みました…。
もうちょっと注意深く調べるようにします。
0622598
NGNG> スタティックライブラリって、コンパイラが変わると
> 使えなくなるんでしょうか?
コンパイラというか、コンパイルしてできるオブジェクトファイルの形式ね。
大体はシステムで共通なんだけど、Borlandだけ他と違ってるということかな。
なんでスタティックライブラリだけかというと、DLLの場合はシステムでロー
ドできる必要があるから、独自のものにはできないので問題が起きないから。
0623傍観者
NGNGおつかれ〜〜、早速見てみます。
>>616-617
サンクスコ。
やっぱいい奴の周りにはいい奴が集まるって事だねヽ(´ー`)ノ
他スレなら『しきるな(゚Д゚)ゴルァ!!』だし。
0624デフォルトの名無しさん
NGNGマウスモードの時に最小化ボタンをクリックしたりデスクトップのアイコンをクリックすると
ボールが発射されてしまいますね。これは直してほしいところです。
ゲーム画面をクリックすると開始、
ゲーム画面の中だけにマウスの移動範囲を制限するというのはどうでしょうか。
そして一時停止するとマウスの移動制限をなくし、
またゲーム画面をクリックするとマウスの移動範囲を制限し、ゲームを開始する。
このようにすればなんとなく解決する気がします。
ただこれにすると一時停止中でしかマウスモード→キーボードの切り替えができませんが。
あとなんとなく左クリックで開始と一時停止、右クリックでボールを増やすという方が一般的な気がします。恐らく。
とりあえずマウスの移動制限の説明のリンクを。
ttp://www.elixir.co.jp/developer/vb/lib/vb_all.htm
0625デフォルトの名無しさん
NGNG良い人材を見つけたら自分で育てたくなるのがPGってもんだ(謎
>>1は、もうこのゲームのチューニングは十分ではないだろうか?
ここら辺から先は別の人間が進めても良いと思う。
>>1が作ったソースコードをベースに、有志が独自の改造を施してみては?
そして改造したらジオで公開し、ココに報告する。と。
>>1は次は何を作りたいんだ?
0626デフォルトの名無しさん
NGNG0627ヒッキー@プログラミング
NGNGいえいえ、こちらこそソースを読んでいただいて
ありがとうございます。
>>622
そういうことでしたか。
DLLは独自のものにできないんですね。
オブジェクトファイルって、exeになる前の中間ファイルのことですか?
(というか、リンクという作業もよくわかりません(w)
>>623
おー、どうもありがとうございます。
>>624
そうですね。画面外をクリックした時に始まるのは変ですね。
マウスの移動範囲を制限するというのは、ゲームを正しく動かす為には
有効なやり方だと思いますが、手軽さが減るのではないかなぁ
と思います。
リンク先、参考にさせていただきます。どもども。
>>625
僕も止め時が難しいなぁと感じてました(w
でも、ソースを放置するにも、説明が少なすぎるし、
何かまとめになるようなモノを書こうかと思っています。
順番的には、次はテトリスを作ろうかと。
>>626
まだいくつかVBで作ってみようと思います。
他の言語に移るのはもうちょっと勉強してからにします。
(次の候補は一応VCにしました。)
0628デフォルトの名無しさん
NGNGテトリスが一応出来たら、ぷよぷよへの応用も結構できる。
ただ、ブロックの消える判定が違うが。
0629デフォルトの名無しさん
NGNG0630622
NGNG> DLLは独自のものにできないんですね。
今Windowsで使われてるのはPEフォーマットという奴
> オブジェクトファイルって、exeになる前の中間ファイルのことですか?
そう。というかVBも中間ファイルとかいって作ってるはずだが。
> (というか、リンクという作業もよくわかりません(w)
オブジェクトファイル同士(とライブラリ)をくっつけて実行ファイルを作ること
0631デフォルトの名無しさん
NGNG次はテトリスって話だけど、少なくともテトリスはブロック崩しより簡単だよ。
ぷよぷよは再帰使うと簡単だけど、VBって再帰使える?
0632デフォルトの名無しさん
NGNGテトリス
ぷよぷよ
電卓(俺推奨 藁 (1/3)*3が1と表示されるヤツ
だな。
0633デフォルトの名無しさん
NGNG薬師丸ひろ子まだ〜。
0634ヒッキー@プログラミング
NGNGぷよぷよは面白そうですねー。
でもぷよぷよ、すごく苦手なんです…連鎖のデバッグができない(w
>>629
ほおほお。そうですかー。
次にやってみたいと思います。
>>630
おー、ご教示ありがとうございます。
リンクという作業がようやく納得できました。
>>631
うーん、テトリスならすぐにできそうなので、
それからブロック崩しの続きを考えようと思います。
再帰ですか。VBはできないような……できるのかな。
ぷよぷよで再帰とはどこで使うのでしょう?
くっついた時の判定でしょうか?
>>632
あー、電卓の存在を忘れるところでした。
インタープリタは書いてみたいですが、もう少し経験を積んでから
やり始めようと思います。
>>633
そろそろ髪の毛1本づつとか送って来たりして(w
0635デフォルトの名無しさん
NGNG削除判定のときじゃない?
簡単な塗りつぶしのアルゴリズムと一緒。
0636デフォルトの名無しさん
NGNG配列変数で仮想画面を作ってそれで判定する・・・であってますか?
いや、というより本当に聞きたいのはブロックの回転の仕方なんです。
■
■ → ■
■■ ■■■
と回転させる時、みなさんはどのようにして回転させていますか?
やはり変数に(2次元配列変数)
│012
┼──
0│000
1│001
2│111
などと形を記録しておいて、回転の度に該当する変数を呼び出しているのでしょうか。
ていうか以前にそこらへんをすべてむりやり計算して回転させようとして無茶苦茶になって挫折したんです。
うーん、上手く説明できない。これでわかるかな?
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG計算して回転させるのも「むりやり」じゃなくてフツーだよ。
まぁ、やるなら最初にプログラム内で回転させたパターンを全部生成して、それを
使うのが一番良いと思うが。
0639デフォルトの名無しさん
NGNGVBでDirectX使ってみたら?
たしかDirectX7はVBからでも使えたような・・・。
0640デフォルトの名無しさん
NGNGモナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/test/read.cgi/tech/1003113413/
の ( = ゚ ω゚ ) みたいになるぞ・・・
0641デフォルトの名無しさん
NGNG俺も詳しく知らないのでほっとけば誰かの講釈が入るだろうと思って
たんだけれど・・・・
MODで名前あってるか知らないけど、確かCSならHL(ハーフライフ)
持ってればただでゲームできるという代物だったよーな。
つまりHLのプログラムを利用したゲームだって事だと思う。
クォーク(クエイク?)とかアンリアルとかもにたようなモノだと
どこかで読んだ記憶がアリ。なんとかエンジンって言うのかな。
俺はこれくらいしかしりません。
0642デフォルトの名無しさん
NGNG>>640の言うようになるかどうかはお前次第だ。
別に移行のタイミングなんて関係ないから気にするな。
0644デフォルトの名無しさん
NGNGmodは知ってるけど、googleで検索すればいくらでも解説はあるから無視した。
ただ、音楽の方のmodばかりヒットするから、マイナス検索使わないと面倒だが。
そもそもこのスレに関係ないし。
0645デフォルトの名無しさん
NGNGゲーム作りに興味ありそうなんで、
俺が知ってる事を言ってみただけなんですが
すいませんでした。
0646ヒッキー@プログラミング
NGNG体調悪くて、書き込みできませんでした。
>>635
お、再帰使えますか?実験してみます。
あー、囲まれた領域を塗りつぶすアルゴリズムですか。
>>636
僕も回転の仕方で詰まりました(w
やっぱ回転後の配列を用意したほうがいいのかなぁと。
>>637
そうなんですよね。
>>638
うむぅ。そうしてみようかと思います。
>>639
DirectXをVBから使う方法を解説した本が一応手元にあるんですが、
GDIを使って処理する方が勉強になるかと思いまして。
>>640
読んでみようと思います…
>>641
あー、そういえばグラフィックを入れ替えるデータを
配布している方がいらっしゃいますね。
あれって、自分でデータを解析されているんでしょうか。
>>642
どもです。気楽に逝こうと思います。
>>643
お、回転のパターンが載ってますね。
じっくり見てみます。
>>644
やっぱ有名なんですね。
>>645
おかげ様で、また新たな単語を知る事ができました。
興味があるので、検索してみようと思います。
0647デフォルトの名無しさん
NGNG0648ヒッキー@プログラミング
NGNG↑テトリス、未完成ですがUPしてみました。
今の所、端に埋まったりします…
>>647
お、このスレ1番上に出てきますねー。感動。
生き返ったのでage
0649デフォルトの名無しさん
NGNGいちばん上までブロックが積もっても、ゲームオーバにならない・・・。
ランタイムエラーとやらが出て、終了してしまいます。
0650デフォルトの名無しさん
NGNGprivate static int[][] pattern = {
{},
{ 0x00f0, 0x4444, 0x00f0, 0x4444 }, // 棒
{ 0x0660, 0x0660, 0x0660, 0x0660 }, // □
{ 0x0e40, 0x4640, 0x4e00, 0x4c40 }, // 凸
{ 0x0e80, 0x4460, 0x2e00, 0xc440 }, // L
{ 0x0e20, 0x6440, 0x8e00, 0x44c0 }, // 逆L
{ 0x0c60, 0x2640, 0x0c60, 0x2640 }, // Z
{ 0x06c0, 0x8c40, 0x06c0, 0x8c40 }, // 逆Z
};
0651デフォルトの名無しさん
NGNG(・∀・)イイ!!VBはよくわからんが、とりあえず指摘。
>>649さんのに加えて、回転する時の軸が変(つーか普通のと違う)から、ちょっと違和感あり。
回転のほうは、壁にめり込む場合は回転できないようにするのかな??
あまり役に立てなくてスマソ。
1、頑張れよ〜〜
0652デフォルトの名無しさん
NGNG回転法則自体は>>643の仕様どおりになってると思う。
(壁にめり込むのは別として)
市販されてるテトリスは回転法則がソフトによってまちまちです。
例えばこの辺を参照
ttp://www.din.or.jp/~koryan/t_r01.htm
0653デフォルトの名無しさん
NGNG同時期に出た各社のテトリス(アーケードでもATARI版とかあった)の中では
セガのが一番良かった。落下スピードが反則的に速いかわりに、地面について
からくっつくまでの時間がとても長い。
BPSのパソコン版はイマイチ。
0654デフォルトの名無しさん
NGNGぶっちゃけ、回転パターン用意した方が速い(両方の意味で)けど、
一応、計算で求めれ無い事も無い。
│012
┼──―
0│000
1│001
2│111
↑を配列変数「block」として、
for(x=0;x<3;x++)
for(y=0;y<3;y++)
work[y][2-x] = block[x][y];
ってーやれば、一応workの中に回転後のブロックが出来る(多分)
もちろん、
│0123
┼──――
0│0010
1│0010
2│0010
3|0010
なんつー場合は、
for(x=0;x<4;x++)
for(y=0;y<4;y++)
work[y][3-x] = block[x][y];
っつー事になるわけだけどもね。
まぁ、よっぽどカラフルなテトリス(個々のブロックに色がついている)でも
作ろうとしない限り必要ねーんだけど。
俺だったら>>650使うね。
0655ヒッキー@プログラミング
NGNG↑テトリス、次UPしました。
今のところ問題点としては
・壁に埋まる
・レベルが上がらない(早くならない)
などです。
>>649
どもども。
一番上まであがったら座標が-1になるときがあって、それで
エラーを吐いていたようです。応急処理的に、MsgBoxを出してみました。
ご報告、ありがとうございます。
>>650
僕もそういう感じで処理したかったんですが、
VBだと冗長な処理になってしまいます…。
宣言時に初期化できないもんでしょうか。
>>651
ういー。がんばります。
>>652 さんのおっしゃる通り、いろいろ回転が違うみたいですね。
ゲームボーイでさっきやりましたが、>>643 さんにリンクして頂いた
回転と違っていました。
って、>>652さんのページ、すごいですね(藁
>>653
あー、セガのってサルのやつですですよね。
僕は当時お小遣いが少なくてほとんどできませんでした…。
なんかOL風の人が、異様な形相ですごい速度を
さばいてたのを見ました。
テトリスってパソコン版あったんですか?知らなかった。
>>654
回転、計算でもとめれるんですねー。
僕は回転の仕方を考えていたら頭がよじれそうになりました。
やっぱ配列に回転後のデータを格納しておいた方が速いのでしょうか。
0656バード大佐
NGNGいつのまにかテトリス開発に移ってたのかw
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNGブロック崩し、テトリス、パックマン、リバーシ(オセロ)、ぷよぷよ、インベーダー……
このあたりはゲームプログラミング初心者に最適な題材だからだ。
ゲーム会社の研修の課題にも使われるぞ(マジで)。
0659デフォルトの名無しさん
NGNG操作レスポンス非常に良好ですが、落としたブロックが固まる前に
次のブロックを回転させようとして大変な状態になること多数。
下キーで落とした時にはすぐに固まって次に行って良いかと思いました。
あと、揃えた列が消える時に画像効果が欲しいですね。
それと、この際タイトルに
「貴様ら! 落ちてくるブロック揃えて消してください」なんてどうかと。
0661デフォルトの名無しさん
NGNG貴様ら!テトリス作ったからプレイしてください
でどう?
0662デフォルトの名無しさん
NGNG「貴様ら!ブロック崩し作るので見てください (662)」
↓
「貴様ら!ブロック消し作るので見てください (3)」
0663デフォルトの名無しさん
NGNG>けしって何
の部分が
「こけしって何」に見えた俺は逝ってよし?
0664デフォルトの名無しさん
NGNG(´-`).。oO(逝かないで・・・)
0665ヒッキー@プログラミング
NGNG↑次UPしました。
まだ若干ブロックに埋まったりします…
>>656
はは。テトリス終ったら、またブロック崩しの続きを作ろうかと思っています。
>>657
オリジナリティを出すのはまだ早いかと思いまして…
>>658
>ゲーム会社の研修の課題にも使われるぞ
ほおほお、そうなんですか?
もっとやらねば。
>>659
そうですねー。下キー押したときは固まるようにしようと思います。
画面効果、考えてみます。
>>660
採用させていただきました(w
>>663
こけしですかー。最近見てないなぁ…。
0666ヒッキー@プログラミング
NGNG↑次UPしました。一応ちゃんと動くようになりました。
あとは音を付けたいと思います。
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGhttp://jiten.www.infoseek.co.jp/Kokugo?pg=result_k.html&col=KO&qt=%B5%AE%CD%CD&sm=1
昔は尊敬の意味があった(^^)
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNGこのスレッド見てて、そう思った。
俺も頑張ろう。
0671デフォルトの名無しさん
NGNG「ら」は尊敬じゃないだろう。
0672ヒッキー@プログラミング
NGNG↑次UPしてみました。
・音の追加
・バランスの調整
・タイトル画面の追加
などしてみました。
>>667
なんとなく、一貫性があった方が良いかと考えまして。
そろそろ、他の名前の付け方考えます…
>>668
ほおほお。貴様!ありがとうございます。
>>669
目撃ドキュソ
>>670
このスレでプログラムの勉強始めてから、がんばるのは
スバラシイ事だと実感しました。
>>671
そうですね…うーん、貴様ドモ!…余計ダメですね。
0673デフォルトの名無しさん
NGNGどのキーでブロックを回転させるの?
0674ヒッキー@プログラミング
NGNG逆回転は今の所ありません…
0675
NGNG0676660
NGNG0677デフォルトの名無しさん
NGNG0678ヒッキー@プログラミング
NGNG最近、更新回数が減ったせいか、酸化してくださるかたも
減っていったような…
そろそろブロック崩しの続きでも作ろうと思います。
>>675
うんちを取って、終了してしまいました(藁
>>676
今辞書引いたところ、ドモはラよりも駄目みたいです…
>>677
方…(・∀・)イイ
0679デフォルトの名無しさん
NGNGとつくづくおもふ。
臭蚊屁の……
次スレは「貴様方!C言語勉強するので見てください」だな(藁
0681ヒッキー@プログラミング
NGNGクサカベさんって、煽り専門のように見えるのですが
気のせいでしょうか。
この発言に「はつみみです。」っていうレスついたりして(藁
>>680
おー、第2段が(w
さっそくご挨拶に逝きました。
対抗age
0682ヒッキー@プログラミング
NGNG開発停滞してる間にお客さんが減ってしまった…。
VCにブロック崩しを移植しようと思っているんですが、
どのようにして画像を表示したら良いか模索中です。
STATICでCreateWindowを実行したらいいんでしょうか。
とりあえずいろいろ実験します。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG1. メインウィンドウと同じサイズのビットマップを用意しておく(バックバッファ)
2. ゲームではバックバッファにデータを書き込む
3. 一通り書き終わったら、バックバッファをメインウィンドウに BitBlt して貼り付ける。
こんなものでいいと思うが。普通の Windows アプリケーションでは WM_PAINT メッセージに対応して
描画するんだが、ゲームだったら無視して適当なタイミングで BitBlt() しても構わんでしょ。
0685たけお
NGNG0686ヒッキー@プログラミング
NGNG↑VC編始めました。いろんなところのソースを見ながら書きました。
ちゃんと動いてないかもしれません…。
タイマーとかデバイスコンテキストとか破棄されてなかったらごめんなさい。
>>683
ケコーンしましょう。
>>684
今の所、バックバッファは用意しませんでした。
WM_PAINTのところ何も書いてないんですが、いいんでしょうか。
BeginPaint・EndPaintの役割が、まだはっきりつかめてなかったりします(w
>>685
おぉ、ありがとうございます。
見てくださるかたが、もしいらっしゃらなかったらちょっと悲しいです。
※肩こりで頭が痛くて、変な事書いてるかもしれません…。ごめんなさい。
0687デフォルトの名無しさん
NGNGテトリスの上カーソルキー、使う予定がないなら回転をアサインしてほしいなぁ。
そうすると片手で遊べるんだけど(w
>>VCブロック崩し
描画は>>684の方法でOKでしょう。現状のディスプレイDCに直接BitBltだと
そのうちチラツキが気になってくるハズ。
で、画像の表示は今はDDB使ってるけどそのうちDIBを使うことになると思う。
DIBならメモリに直接イメージを描けるからマスクパターンも要らなくなるしね。
WM_PAINTは処理しない場合でもDefWindowProc()が適当に処理してくれるから気にしなくても大丈夫。
BeginPaint()とEndPaint()はWM_PAINT内では
必ず呼ぶということだけとりあえず覚えておけばOK。
とりあえずこんだけ。
0688デフォルトの名無しさん
NGNGまず *.aps, *.plg, *.opt, *.ncb はソースアーカイブから削除ね。他の環境に持っていっても、役に
立たんから。
ReleaseDC(), DeleteDC() の使い方を間違えてるな。
CreateCompatibleDC() などで作ったメモリデバイスコンテクストは、DeleteDC() で解放する。
GetDC() や GetWindowDC() で取得したデバイスコンテクストは ReleaseDC() で解放する。
混同しないよう。
グローバル変数を使いすぎだが、それはともかくグローバル変数の宣言はヘッダにまとめておく。
extern を実装側に書くと、不一致が生じたときに検出できないで、致命的なバグになるぞ。逆に
外に見せる必要が無い関数/変数は static リンケージにして、同一ファイルからのみアクセスで
きるようにしておくのが身のためです。
画面サイズのこととか、エラーチェックしてない点とか、わりとツッコミどころ満載だが、とりあえず気
になったとこだけサクッと書き直してみた。
http://members.tripod.co.jp/lambda_func/cblock01_x.zip
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG別に、俺が書いたコードをそのまま使えとは言わんよ。サンプルとして参照したければ
すればいいし、したくなきゃ捨てときゃ良いだけ。
漏れもそう思って昨日言おうとしたけど、1が読んだら参考になると思ってやめた。
1ならそれをうまく吸収できそうだし。
0693ヒッキー@プログラミング
NGNG↑テトリス修正しました。変更点は
・上キーで回転できるようにした
・タイトル画面とゲームオーバーの画面で終了したら、正常にアンロードされない問題の修正
・横キーとスペースキーを同時に押したら壁に埋まってしまう現象の修正
です。
>>687
上キーで回転できるようにしました。
描画の時、見える部分を直接いじるとやっぱチラついてくるもんなんですね。
DIB、検索してみました。便利そうですねー。
でもDIBに対して行うBitBltのようなものを自分で実装しないといけないんでしょうか。
マスクデータが要らないのはいいですね。
白なら転送しない…みたいに書けばいいんでしょうか。
>>BeginPaint()とEndPaint()はWM_PAINT内では必ず呼ぶということだけとりあえず覚えておけばOK
ほおほお。了解しました。
>>688
>>*.aps, *.plg, *.opt, *.ncb はソースアーカイブから削除ね
やっぱいらないデータもあるんですね…。よく調べずに添付してしまいました(w
ほおほお、新たに作成したDCはDeleteDCで、
既にあるDCを取得した場合はReleaseDCを使えばいいんですね。覚えます。
>>グローバル変数の宣言はヘッダにまとめておく
>>外に見せる必要が無い関数/変数は static リンケージに
そうしてみます。externはなるべく使わないようにします…
書き直して頂いた分、見させてもらいました。
書き方、すごく参考になりました。ありがとうございます。
StdAfxって、最初に1回だけコンパイルする分ですよね?
あと、#if defined のところがよく分かりませんでした…
0694ヒッキー@プログラミング
NGNGわざわざ労力を使って書き直して頂けるというのは大変嬉しいです。
>>690
.cにしたら問題が出そうな気がしたので.cppにしました。
>>691
いえいえ、捨てるなんて�dでもない。
>>692
吸収するべくがんばります。
0695デフォルトの名無しさん
NGNG> StdAfxって、最初に1回だけコンパイルする分ですよね?
プリコンパイルヘッダのこと?
Windows アプリケーションだと <windows.h> やら何やらヘッダファイルを読み込むわけだが、
これはかなりサイズが大きくて、解析に時間がかかる。そこで <windows.h> など良く使うヘッ
ダファイルを
1 あらかじめ解析して、コンパイラがすぐに使える形 (*.pch) に変換しておく
2 *.c, *.cpp をコンパイルするときには毎回 <windows.h> などを解析する代わりに、1 で作っ
たコンパイル済みヘッダ (*.pch) を使う
ことで、コンパイルの速度を上げられる。小細工の類だが、知っておいて損は無いやね。
> あと、#if defined のところがよく分かりませんでした…
あれは通称コードガードという技法で、二回以上同じヘッダファイルを #include したときに発生
するトラブルを避けるためにつけておく。このぐらいの小規模なプログラムだと問題ないんだが、
規模が大きくなってくると
ヘッダ A がヘッダ X を #include
ヘッダ B がヘッダ X を #include
main.cpp がヘッダ A, B を #include (X は都合二回 #include される)
みたいな状態が発生してコンパイルに支障が出る可能性がある。
■ このスレッドは過去ログ倉庫に格納されています