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

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

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

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

オナーニスレだけどよろしくね。
0685たけおNGNG
見てる人は見てる( ̄ー ̄)
0686ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/cblock.html
↑VC編始めました。いろんなところのソースを見ながら書きました。
 ちゃんと動いてないかもしれません…。
 タイマーとかデバイスコンテキストとか破棄されてなかったらごめんなさい。

>>683
ケコーンしましょう。

>>684
今の所、バックバッファは用意しませんでした。
WM_PAINTのところ何も書いてないんですが、いいんでしょうか。
BeginPaint・EndPaintの役割が、まだはっきりつかめてなかったりします(w

>>685
おぉ、ありがとうございます。
見てくださるかたが、もしいらっしゃらなかったらちょっと悲しいです。

※肩こりで頭が痛くて、変な事書いてるかもしれません…。ごめんなさい。
0687デフォルトの名無しさんNGNG
>>VBテトリス
テトリスの上カーソルキー、使う予定がないなら回転をアサインしてほしいなぁ。
そうすると片手で遊べるんだけど(w

>>VCブロック崩し
描画は>>684の方法でOKでしょう。現状のディスプレイDCに直接BitBltだと
そのうちチラツキが気になってくるハズ。
で、画像の表示は今はDDB使ってるけどそのうちDIBを使うことになると思う。
DIBならメモリに直接イメージを描けるからマスクパターンも要らなくなるしね。
WM_PAINTは処理しない場合でもDefWindowProc()が適当に処理してくれるから気にしなくても大丈夫。

BeginPaint()とEndPaint()はWM_PAINT内では
必ず呼ぶということだけとりあえず覚えておけばOK。

とりあえずこんだけ。
0688デフォルトの名無しさんNGNG
>>686
まず *.aps, *.plg, *.opt, *.ncb はソースアーカイブから削除ね。他の環境に持っていっても、役に
立たんから。

ReleaseDC(), DeleteDC() の使い方を間違えてるな。
 CreateCompatibleDC() などで作ったメモリデバイスコンテクストは、DeleteDC() で解放する。
 GetDC() や GetWindowDC() で取得したデバイスコンテクストは ReleaseDC() で解放する。
混同しないよう。

グローバル変数を使いすぎだが、それはともかくグローバル変数の宣言はヘッダにまとめておく。
extern を実装側に書くと、不一致が生じたときに検出できないで、致命的なバグになるぞ。逆に
外に見せる必要が無い関数/変数は static リンケージにして、同一ファイルからのみアクセスで
きるようにしておくのが身のためです。

画面サイズのこととか、エラーチェックしてない点とか、わりとツッコミどころ満載だが、とりあえず気
になったとこだけサクッと書き直してみた。
http://members.tripod.co.jp/lambda_func/cblock01_x.zip
0689デフォルトの名無しさんNGNG
書き直すなよ。
0690デフォルトの名無しさんNGNG
とりあえずCで書くなら.cppじゃなくて.cにしとけ。
0691デフォルトの名無しさんNGNG
>>689
別に、俺が書いたコードをそのまま使えとは言わんよ。サンプルとして参照したければ
すればいいし、したくなきゃ捨てときゃ良いだけ。
0692 NGNG
>>689
漏れもそう思って昨日言おうとしたけど、1が読んだら参考になると思ってやめた。
1ならそれをうまく吸収できそうだし。
0693ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/tetris6.zip
↑テトリス修正しました。変更点は

・上キーで回転できるようにした
・タイトル画面とゲームオーバーの画面で終了したら、正常にアンロードされない問題の修正
・横キーとスペースキーを同時に押したら壁に埋まってしまう現象の修正

です。

>>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
>>689
わざわざ労力を使って書き直して頂けるというのは大変嬉しいです。

>>690
.cにしたら問題が出そうな気がしたので.cppにしました。

>>691
いえいえ、捨てるなんて�dでもない。

>>692
吸収するべくがんばります。
0695デフォルトの名無しさんNGNG
>>693
> 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 される)

みたいな状態が発生してコンパイルに支障が出る可能性がある。
0696デフォルトの名無しさんNGNG
>>695
> > あと、#if defined のところがよく分かりませんでした…
> あれは通称コードガードという技法で、
そういう通称あるの? いや一般的になんと呼ばれてるのか知らんのだけど。
0697デフォルトの名無しさんNGNG
>>694
>>686のソースはまるっきりCだろ、コメント以外は。

>>688のもほぼC。
C++じゃなきゃ通らないのはごく一部、structをtypedefしてないとか参照渡し
とか名無しの引数くらい。
0698687NGNG
>上キーで回転できるようにしました。
サンクス。これでお気楽に遊べるようになったよヽ(´ー`)ノ

>描画の時、見える部分を直接いじるとやっぱチラついてくるもんなんですね。
バックバッファを使えば目に見えるBitBltは一回で済むからチラつかなくはなるよ。
あと、CreateDIBSection()で取得したDIBなら普通にBitBltできるよ。
他の方法はちょっとわかんない・・・これしか使ったことないもんで(;´Д`)
まあDIBよりもバックバッファを実装する方が先だな。実装方法はわかる?

>白なら転送しない…みたいに書けばいいんでしょうか。
非パレットでのマスクならそうだね。パレットモードなら0番を描画しないとか。
やろうと思えばアルファプレーンを用意しての半透明描画だって可能。
0699 NGNG
ぷよぷよぱくったことあるよ。
画像もぷよぷよ
0700デフォルトの名無しさんNGNG
バグ報告。
ブロックが接地してからの挙動がおかしい。
具体的には、ブロックが接地したあとの猶予時間にブロックを移動させたり
回転させたりすると変な動作をしてる。
これは速度が速くなってくると頻発するようになる。

あと、Lineが100あたりになったとき実行字エラーの'9'(インデックスが有効範囲外)が
発生してプログラムが強制終了。
速度が遅いときにはほとんど問題ないみたいなので多分、高速化のロジックあたりに
問題があるんだと思う。

でもこのバグが解消してもこれ以上はスピードが速すぎてゲームとして
成立しなさそうな気がする。このどうしようもなくなってくる感じは
任天堂の初代のゲームボーイ版を彷彿とさせるものがある(w
0701636NGNG
前から思ってたんですけど、
そこらへんのページやVectorにも僕の作ったテトリス、私の作ったテトリス、
俺の作った対戦型テトリスとかいろいろ置いてありますが、テトリスって勝手に作って公開しても別にいいんですか?
シュアウェアとかにしても構わないんですか?(するつもりないけど…)

>>637 >>638 >>646 >>654
教えていただいてありがとうございました。
学校の期末試験期間中現実逃避して書き込んだんで中々レスする機会がありませんでした。
プログラミングをはじめて1〜2ヶ月目の挫折を1年経った今、見事にはらすことができました。
あの時の「VisualBasic6.0評価版」ではなく、ポケットコンピューター「PC-G850S」で。
0702デフォルトの名無しさんNGNG
>>701
テトリスの名前を使うのは商標権の侵害で確実にクロ、
名前を使わなくても、著作権の同一性保持権の侵害でグレーと思われる。
とりあえず、フリーソフトまたはシェアウェアでテトリスを公開していて、
著作権者のThe Tetris Companyに警告されたケースは結構あるらしい。
でも、みんな次から次へと作るから全然追いついてなさそうだ。

ライセンスを正規に獲得したければこの辺か。
ttp://www.tetris.com/corporate/
実際どういう手続きになるのかは知らない。そんな感じ。
0703  NGNG
警告きてから、考えよう
0704636NGNG
>>702
やっぱり駄目ですか・・・残念
Googleで「自作 テトリス」で検索すると2000以上もの件数が…
これでは全然追いつけそうにないですね。さらに増えていくし…
しかしこの中には犯罪とも何とも思わず作っている人も多いんだろうなぁ。

>>703
ホームページにメールアドレスを書かない主義なので、
警告するときは直接電話がかかってくるんだろうか。それともそのままタイー・・・
0705デフォルトの名無しさんNGNG
その辺よく分からないんですよね。

普通のゲームは、いわゆるクローンは別にクロではないそうですけど、
テトリスの場合は(テトリスカンパニー側は)かなり厳しいですね。

どこまで似てるのはよくてどこからはダメなのか、というのはよくわからんです。
0706  NGNG
まあ、テトリスっぽくなければOKでしょう(謎
0707デフォルトの名無しさんNGNG
下から上にブロック発射すればよい。

ブロック崩しゲーとしてはそっちの方がなんとなく正しい気がする。
ばきゅんばきゅんって感じで
0708デフォルトの名無しさんNGNG
実質、テトリスを勝手に作って公開しても問題ないと思う。
テトリスのシステム自体は「アイデア」だから、よほどゲームとしての
類似性がない限り法的にどうこうできないと予想される。
ブロック崩しだって同じでしょ?
0709702NGNG
うむ。その辺もあってグレーとした。判例があるわけではないしな。
たぶん裁判になればパックマン事件みたく
映画の著作物云々でウダウダやるのだろうが。
ちと著作権のありかたについて考えさせられる事例ではある。

アイデアとしての落ちものパズルについては
カシオの特許で問題になってたが、その後どうなったのだろう。
0710デフォルトの名無しさんNGNG
商標の問題だけじゃないんだ。
『テトリス』って名前使わなきゃ良いと思ってたよ。
オセロはダメでもリバーシなら可みたいな。

著作権よりも>>709が言うように特許じゃないの?
0711デフォルトの名無しさんNGNG
漏れもC勉強したいけど、コンパイラが……
バイト中。つーか月1k円の小遣いって(藁
0712ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/cblock.html
↑ブロック崩し(VC)、次UPしました。
 自機が動かせるようになりました。

>>695
プリコンパイルヘッダっていうんですね。参考になります。
StdAfxを作っておくと、たしかにコンパイルが早くなりました。

コードガードのところ、よくみたら「#if defined」ではなくて、
「#if !defined」になってました…。ようやく機能が理解できました(藁

>>697
>>「>>686のソースはまるっきりCだろ、コメント以外は。」
たしかにそうかも…
>>C++じゃなきゃ通らないのはごく一部、structをtypedefしてないとか参照渡し
>>とか名無しの引数くらい。
ほおほお。typedefしなくてもstructって毎回書かなくていいんですね。
…って、いろいろ便利そうなので、cppのままにしときます。
ありがとうございます。

>>698
今回UPした分、バックバッファ使ってないせいか、やはりチラつきました。

>>CreateDIBSection()で取得したDIBなら普通にBitBltできるよ。
おお、それは便利そうですねー。一回実験してみます。
>>バックバッファを実装する方が先だな。実装方法はわかる?
ん〜、どうでしょうか。できるだけやってみます。
>>アルファプレーンを用意しての半透明描画だって可能。
半透明ですかー。やってみたいなぁ。
半透明の演算って、加算でやるんでしょうか?
0713ヒッキー@プログラミングNGNG
>>699
(・∀・)イイ
PC版ぷよぷよから画像抜き出したりしたら面白そうですね。

>>700
ご報告ありがとうございます。

>>ブロックが接地してからの挙動がおかしい。
>>これは速度が速くなってくると頻発するようになる。
速度が速くなるまでやってみました。…たしかにおかしいです。
>>Lineが100あたりになったとき実行字エラーの'9'が発生してプログラムが強制終了。
一度に2マス以上落ちて、配列の要素を超えてしまったんではないかと…
直します。
>>でもこのバグが解消してもこれ以上はスピードが速すぎて…
たしかに。レベル上がるごとに落ちる速度に掛け算してるのがまずかったと思います…。
ゲームボーイ版テトリスで一番長くプレイしたので、影響が出たのかもしれません(藁

>>701
おお、ポケコンですかー。ウチにあるのは5行ほどしか表示できないので、
極端に狭いテトリスしかできません(藁

>>702
テトリスのライセンスのページってあるんですね。
最終的にロシア人の作者にお金が逝くのだろうか。

>>707
発射…(藁
テトリスとは違うゲームが出来上がりそうですね。

>>708
たしかにブロック崩しもタイトーにお金払わなければならんのでは…
という感じがします。商用でなければいいんでしょうか。

>>709
映画とゲームを比較して裁判で争うのっておかしいですよね。
たしかに最近のFFはまさに映画ですが。
(裁判で今後認めさせる為に無理矢理あのようなゲームにしたのでは…)
カシオって、落ち物パズルの特許もってたんですか?

>>710
オセロって日本人が考えたんでしたっけ。

>>711
コンパイラはフリーでありますよ。
ボーランドのTurboC++とかDownloadできるみたいです。
GUIのツール類は無いみたいですが…
0714デフォルトの名無しさんNGNG
>>698
DIB は描画時にデバイスコンテクストにあわせて変換が入るから、遅くないか?
0715 NGNG
「映画の著作物」は頒布の話だから、ゲームのアイディア保護とは違う気もします。
このへんようわからんのですが…
http://www.google.co.jp/search?q=%89f%89%E6%82%CC%92%98%8D%EC%95%A8&hl=ja&lr=
http://www.ne.jp/asahi/law/y.fujita/used_sw/kenkai9801.html

関係ないのでsage
0716デフォルトの名無しさんNGNG
>>714
DDBに比べれば確かに遅いかもしれないけど
最近のマシンなら十分に使い物になる。60fpsくらい全然余裕(解像度にもよると思うけど)。
バリバリに画面描画を行うならDirectXがいいかもしれないけど
たいていはDIB(っていうか、旧WinG)で間に合うと思う。
0717デフォルトの名無しさんNGNG
>>713
お言葉はありがたいけど……
フリーであるんだけどね、通信速度が……WinUpDateで精一杯(藁
ISDN?いやいや、56kbpsしか出ませんよ(泣
通信費か、もしくは……
0718デフォルトの名無しさんNGNG
>>717
Cマガ買え
0719デフォルトの名無しさんNGNG
小遣1k円……
ノート1冊0.1k円……
がんばる!
0720デフォルトの名無しさんNGNG
>>717
とりあえずCの勉強ならLSI-Cの試食版でもやってみれば?
アーカイブで400Kだから全然余裕だろ?
0721701NGNG
>>713
けど6行あるうちの4行しか使ってません。というか使えません。
大きくすると描画に時間がかかってゲームにならないんです。
しかも教育用ポケコンの仕様かどうかわかりませんが、横幅が普通のよりせまいんです。
だから雑誌に載っているプログラムを打ち込んでもはしっこが見えない・・・(泣
0722デフォルトの名無しさんNGNG
>>720
アリガトウ♥
コレから落としてきます。 ねこでも――で便供養中です。
0723デフォルトの名無しさんNGNG
スマソ。
/便供養中/勉強中/鬱;
0724  NGNG

いいものいっぱい!Yahoo!オークション で激安情報!

SFC+おまけ
http://page3.auctions.yahoo.co.jp/jp/auction/c14653830

ドリンクホルダー
http://page3.auctions.yahoo.co.jp/jp/auction/c11344496

ドライヤー
http://page.auctions.yahoo.co.jp/jp/auction/40411210

Panasonicテレビデオ
http://page4.auctions.yahoo.co.jp/jp/auction/d12789591
0725デフォルトの名無しさんNGNG
a 宣伝ですか?
g とりあえず、あぼ〜んっと。
e あげとこうっと。
0726デフォルトの名無しさんNGNG
>>380……
>>724宣伝ウザい。
0727デフォルトの名無しさんNGNG
かちゅ〜しゃでみると>>721のうごきがおかすぃ、、。
0728ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/cblock.html
↑次UPしました。VBのソースを移植してたらイパーイ時間かかりました。
 変更点は

・自機からボールが跳ね返る
・背景の表示

です。自機、背景から透けてますでしょうか。

>>714
DIBって遅いんですか?
今の所まだDDB(?)でやってます。

>>715
あー、そういえばゲームの中古販売の時に出てきた言葉でしたね。
思い出しました。

>>716
マシンパワーでプログラムの処理時間をカバーできるという事ですね(w
ゆくゆくはDirectXを覚えたいです。

>>717
うーん、つらいですねー…。
よく見たら月々のお小遣い1000円じゃないですか…10K円だと思ってた。

>>718
Cマガって、付録にコンパイラの体験版ついてるんですか?

>>719
ルーズリーフをみんなに1枚ずつもらうとか…

>>720
LSI−C、最初つかってました。

>>721
やっぱ4行でないと重いのか…
横幅狭いのはつらいですねー。専用のプログラムを書かないと…。

>>722
ガムバッテください。

>>724
テレビデオちょっと欲しいかも。

>>727
どういうことでしょう(w
0729デフォルトの名無しさんNGNG
P/ECEをやれYO!
OK?
0730デフォルトの名無しさんNGNG
>>728
とりあえず、コンパイラの警告レベルを 4 にしましょう。

if (x = 0)

みたいな、ありがちなバグがいくつも。
0731717NGNG
>>713へカーソル合わせると700~713が順不同に表示されるんです。
うちだけですか?
0732727NGNG
失礼!!727でした。>>713という番号がおかしいみたい。なぜ?
0733デフォルトの名無しさんNGNG
>>728
うちの環境でVer.3を動かしたところ、
動きがもんの凄いスローで、
右側のスコア欄に恐らく該当する部分の表示が
やばいことになっています。
0734デフォルトの名無しさんNGNG
ひさしぶりに見たらまた盛り上がってたみたいだな。

>>714
確かにDIBはピクセルフォーマット変換が入って画面へのBitBltは遅くなるが、
DDBだとスプライト描画が足を引っ張るから、大抵のゲームでは問題にならな
いよ。DDBで多重スクロールなんてやろうとしたら鬱になるかと。
あと、DIBもデスクトップのピクセルフォーマットと同じフォーマットで作成
すると速くなるよ。それじゃDIBの意味ないんだけどさ。DirectDraw使った方が
速い。
0735デフォルトの名無しさんNGNG
windowsプログラミングってやったこと無いんだけど、
これから勉強しようとするときは、サンプルとか見て
この関数なんな?とか、この型はいったい何者?って思っても
とりあえずこうするもんだ、とかでOKなの?
やってみたいんだけど、WinMainの引数からして意味不明・・・。

スレ違いだったら、すいません。
0736デフォルトの名無しさんNGNG
>>735
とりあえず「プログラミング Windows 第五版」を買って読みましょう。適当にコードを書くと、
動くところまでたどり着かんで死ぬ。
0737デフォルトの名無しさんNGNG
>>735

ttp://www.kumei.ne.jp/c_lang/
こことか見ながら勉強してみ。わからんとこがあったらヘルプ見るか検索。
それでもわからなければどっかで聞いてみる。
そのうち色々とわかるようになる。わからなければプログラミングには
向いていないってことで。
0738デフォルトの名無しさんNGNG
>>731-732
バージョンは?ksockのバージョンは?
かちゅをいれなおしてみたら?
それかログを削除 -> 取得しなおすとか
0739727NGNG
>>738
レス、サンキュさんです。後者で直らないので入れなおしてみます。
名スレ汚してすまんす……。
0740735NGNG
>>736.737
勉強してみることにします。
同じくスレ汚してすいません。
0741デフォルトの名無しさんNGNG
>>734
16→16より24→16のほうが速かったりするらしいけど
0742734NGNG
ついでに言うと、ドライバによって全然速度違ったり。
3dlabsのドライバはめちゃくちゃ速いんだか遅いんだかどっちだったか忘れたけど
極端に違った記憶がある。
0743デフォルトの名無しさんNGNG
DIB の利点として挙げられているのは、要するに

 「ピクセルを直接操作できる」

だけど、これってメモリデバイスコンテクストに対して GDI 関数を呼ぶよりも速いからお薦め、
という意味? DDB でもメモリデバイスコンテクストを作って SelectBitmapすれば SetPixel(),
GetPixcel() でピクセル操作自体は可能だよね。
0744デフォルトの名無しさんNGNG
>>743
ピクセル操作に関数呼んでたら遅くなるじゃん…アドレス指定してゴリゴリ出来る
ところがミソなんじゃない?あとはピクセルフォーマット決められるとか。

漏れはメモリ領域取ってStretchDIBitsとか使うけど。パレット付きとか使うとき楽。
上限反転も気にしないで済むし。
0745744NGNG
>>744
ぐは,上下反転ね(;´Д`)
0746 NGNG
ピクミン操作は、どうよです!
0747デフォルトの名無しさんNGNG
>>744
上下は高さをマイナスにすればいいんだよ。ヘルプにも書いてあったような。

SetPixelはDIBの直接アクセスに比べると遥かに遅いです。
少なくとも100倍は差があるかと。MMXも使えないし。
0748744NGNG
>>747
流石にそれは知ってますよ。説明不足だったかな。スマ
個人的にはリソース不足も関係なく使えてウマーなのでStretchDIBitsを使ってます。
0749デフォルトの名無しさんNGNG
DirectDrawSurfaceだと9x系でもリソース消費が少なくて(゚д゚)ウマー
0750デフォルトの名無しさんNGNG
DirectDrawSurfaceってGDI関数使っての描画できないんだっけ?
TrueTypeつかって文字書きたいときなんかどうすんの?
0751デフォルトの名無しさんNGNG
>>750
IDirectDrawSurface7::GetDC() なんかでデバイスコンテクスト拾える。DirectX 8 だとダメだが。
0752デフォルトの名無しさんNGNG
仮に使えないとしてもGDI関数使えないのはDIBもいっしょだから条件は同じ
0753ヒッキー@プログラミングNGNG
そろそろ体がやばいです(w

>>729
う〜ん、なんか僕にはなじめそうにない機種なのでやめときます…
あの韓国の携帯ゲーム機がちょっと欲しかったりします。

>>730
してみました。…イパーイ警告でました(w
ありがとうございます。

>>731-732
うーん、なんででしょうか。リンクが多すぎるのかな。

>>733
コードが悪かったのかもしれません…。
直したいと思いますが原因の追求をどうやればいいのか…

>>734
やっぱスプライトの処理でコマゴマとBitbltしたら遅そうですねー。
スト2の地面の描画とか真似しようと思ってもDDBだったら無理なんでしょうか。
DirectXってやっぱ覚えたほうがいいですね。

>>735
僕もWinMainがサパーリわかりませんが、初めてCのコード書いた時の
Mainと同じように把握しています。
0754ヒッキー@プログラミングNGNG
>>741
そういうことも、あるんもんなんですね。

>>742
ドライバで差が出てしまうと、どうしようもないですねー。

>>743-744
やっぱGetPixelとかは直接DIBをいじるより遅いんですね。

>>746
ピクミン、やった事ないです…

>>747
マイナスにすればいいですか?ヘルプ見てみます。

>>748-749
(゚д゚)ウマー

>>750-751
ほおほお。後で使えるように覚えておきます。

>>752
DIBの場合って、フォントを描くにはどうしたらいいんでしょう?
0755デフォルトの名無しさんNGNG
>>752
???
DIBはGDI使えるが?
0756デフォルトの名無しさんNGNG
>>755
DIB という単語が多義的に使われていて混乱してる気がするな。

 ほんとに素の DIB だと SetDIBitmsToDevice(), StretchDIBits() で描画することしか出来ない。
 GDI 関数を使いたければ CreateDIBSection() で DIB セクションを作成する必要がある。

ということで OK?

ついでに DDB, DIB, DirectDrawSurface の得失

DDB
 + GDI 関数が使える
 + BitBlt() が高速
 - ピクセル操作は Win32 API 呼び出しが絡むので遅い
  (単に API がどうこうというだけでなく、データをビデオメモリ上に持ってるんじゃない?)

DIB
 - GDI 関数が使えない(ただし CreateDIBSection で補える)
 - BitBlt() はやや遅い
 + ピクセル操作はポインタ経由で行えるので高速
 + ピクセルフォーマットを自分で決められる

DirectDrawSurface
 + GDI 関数が使える (ただしピクセル操作よりは遅くなる)
 + BitBlt() が高速
 + 標準で透過処理などをサポートしている
 + ピクセル操作はポインタ経由で行えるので高速
  (ただしシステムメモリにサーフェイスを作った場合、ビデオメモリに作ると操作は逆に遅くなる)
 - ピクセルフォーマットはデバイス依存になる

というところで。

良くも悪くもシステムが面倒を全部見てくれる DDB, ハードウェアが直接見える DirectDrawSurface,
その中間に位置する DIB という感じ。
0757デフォルトの名無しさんNGNG
結局、>>752がDIBセクションを知らなかっただけということじゃないのか?
そうじゃないなら言葉足らず。
0758ヒッキー@プログラミングNGNG
VBのソースをひたすらVC用に書き直してたら、
何を書いているのかわからなくなりました…。鬱だ

>>756
詳細なご説明ありがとうございます。
用途によって使い分けるのがいいんですね。
ゲームを作るときにDIBを使う…という意味がはっきりしました。
逆に、絵を数枚だけ表示したい時などはDDBの方がよさそうですね。
0759デフォルトの名無しさんNGNG
>>758
ガンバレ

DIBってデバイスに依存しないビットマップって意味だから,一旦DDBにコピーして
おいてから描画すると高速になる事があって(゚д゚)ウマーだね。面倒くさいけど(w

ま,細かいことはこれから覚えていけばいい事だし,とにかく作ってみて完成させる。
コレが一番。やればやっただけ効果あるし,やる気ある奴は伸びるのも早いよ。
0760デフォルトの名無しさんNGNG
>>758
前のほうでちょっと書いたんだけど、Win3.1の頃にはWinGっていう規格があった。
最後のGっていうのはGameの略。つまりゲームアプリのために作られたもの
なんだけど、それがWin32になってAPIとして取り込まれたものがDIBセクション。
DIBとDIBセクションは一応別物として理解していてくれ。
DIBセクションに関してはCreateDIBSectionで検索すればすぐ出てくる。
0761ヒッキー@プログラミングNGNG
http://www.geocities.co.jp/SiliconValley/2530/cblock.html
↑次UPしました(VC)。変更点は

・ブロックの表示&はね返る

です。

>>759
ほおほお。いろいろ作ってみます。
DIBを作ってみて、速度を計ってみようと思います。
>>一旦DDBにコピーして
というのは、DDBにいったんBitBltするんでしょうか?

>>760
あー、そういえばPCを初めて買った時に見た、雑誌の付録で
WinGを使ってるのがありました。
MSDNのCreateDIBSectionのページを見てみます。
ありがとうございます。
0762デフォルトの名無しさんNGNG
ゲーム作るならDDBなんて無視していいと思うけどな。
CreateDIBSectionかDirectDrawの二択。

とりあえず、32bitカラーのCreateDIBSectionがおすすめ。
アライメントとかの問題も気にする必要ないから初心者にも扱いが楽。

CreateDIBSectionで速度的に問題があれば、DirectDrawに手を出してみるのが
いいかと。ただし、IA32についてちゃんと理解していなければ、ちっとも速くな
らないから注意。
0763デフォルトの名無しさんNGNG
>>761
>というのは、DDBにいったんBitBltするんでしょうか?
そうそう。表示デバイスとコンパチブルなビットマップを作ってBltするんだよ。
CreateCompatibleBitmapでMSDN探せば出てくるよ。

書き換えのチラツキ防止策にも使われたりしますが,ゲームじゃあまり使わ
れないから,気にしなくてもいいかも(w
0764デフォルトの名無しさんNGNG
正直ウ○○でそう。(自粛
なぜかネットにつなぐとしたくなるんだよ。
フレッツじゃないし、56kbps(前もこんな人いたような)だからつらい。

まぁ1がんばれ。
0765 NGNG
その後 ウ●●はどうなった?
じゃなくて1さん元気?
0766あきまさNGNG
1さんは何処へ逝ってしまったんですか〜?
0767デフォルトの名無しさんNGNG
養生せえ、養生せえ。

元気の出る波動送っときます。
も〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜ん…
         も〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜ん…
0768ヒッキー@プログラミングNGNG
保守age
そろそろ復帰します…。
0769デフォルトの名無しさんNGNG
>養生せえ、養生せえ。
えっ、何かの搬入ですか?
それとも、電源工事?
0770デフォルトの名無しさんNGNG
ブロックくずしってさ64kbyteプログラミングに向いてないか?
って思うんだ
0771デフォルトの名無しさんNGNG
>770もっと減らせると思う。やってみれば?
0772 NGNG
>>1
あけましておめでてーな。
本年もよろしくお願いいたしやがります。
0773デフォルトの名無しさんNGNG
正月どこにも行かなかった身としては、
書き込みが少ないのが悲しい。

ひまつぶし
    しようと思うが
          カキコ無し
                  圖
0774ヒッキー@プログラミングNGNG
数日間、ゲームやってました…放置してスミマセンでした。

>>762
ういー。了解しました。
IA32って、どういうのでしょう?Itaniumの仲間ですか?

>>763
ほおほ。参考になります。
コンパチブルなBITMAPは一応作ることができたのですが、
普通にBITMAPを作ると白黒になってしまうようなのですが、
解決策はあるのでしょうか?
(MSDNの内容がイマイチ読み取れませんでした…)

>>764
漏れもテンション上がるとウ○○がしたくなります…
あとコーヒー飲んだ後。
がんばります〜。

>>765
若干元気になりました。

>>766
ただいまー。
また、そちらのスレに顔出しマス…。

>>767
なんか耳鳴りがすると思ったら波動を送ってくださってたんですね(藁

>>768
ん?

>>770
小さくできそうですねー。
でもwindows.hをインクルードするだけで重くなるような…

>>771
もっと減らせますか?んんん。

>>772
今年も夜露氏苦おねげーします。

>>773
歌丸師匠!?
もっと正月もがんばったら良かったかと思っています。
0775デフォルトの名無しさんNGNG
>>774
IA32はi386〜Pen4(PenPro含む)
0776 NGNG
インテル・アーキテクチャ・32bit
0777デフォルトの名無しさんNGNG
>>774
> でもwindows.hをインクルードするだけで重くなるような…
ヘッダと実行ファイルのサイズは関係ないって。

ただ CRT に関しては libc.lib (libcmt.lib) をスタティックリンクして使うか msvcrt.dll を使うかでサイズに
差が出る。プロジェクトの設定から [C/C++] - [コード生成] - [使用するランタイムライブラリ] で選択ね。
0778デフォルトの名無しさんNGNG
>>774
>普通にBITMAPを作ると白黒になってしまうようなのですが、

コンパチDC作ってビットマップ作成だったかも知れん。スマソ
ここら辺ややこしいんだよな…
0779債務不履行の名無しさんNGNG
おおお!>>1=>>774=ヒッキー@プログラミング がageている!
いつもsageなのになぁ。

今日、某新聞の求人広告に………があってつい見にきてしまった。
保守上げだ。
0780MonamoeNGNG
なんか漏れ1さんと似てるなぁ…。

漏れも高校の時CとVB勉強してたよ。
今はC++だけど。
年齢もかなり近い。
1さんは漏れの1つ年上みたいだね。
しかも漏れもヒッキーでゲーム作ってたりする。

Cで書かれてるブロック崩しやらせてもらったけど、
なかなかいい感じだね。

1つ注文すると、最大化ボタンはいらないと思うよ。
CreateWindow関数のWS_OVERLAPPEDWINDOW
ってのを変更すれば最大化ボタンを消せるYO!
お互い頑張ろうね!
0781ぴくみん‏NGNG
がんばれ ‏ がんばれ
0782ヒッキー@プログラミングNGNG
だめだ…
一回休むと続けづらくなってきました…

とりあえずVC起動
0783ヒッキー@プログラミング ◆hky/PGis NGNG
てすと
0784不良社員NGNG
>>782
そういうときはやらんでよし。
他に興味あるプログラムを作るか、
遊ぶかダラけるかをおすすめします。

とりあえず、やる気でないときは私はそうしてます。
やる気ってコントロールするのが難しいんだよね
■ このスレッドは過去ログ倉庫に格納されています