• ベストアンサー

c言語 ちらつき

タイトルの通りなのですが現在c言語で簡単なシューティングを作っているのですが、敵を6体表示すると画面全体が激しく点滅を繰り返し(ちらつき?)どうにもなりません。 敵の数を減らす訳にもいかず・・・。どうしたらこの画面がちらつかなくなりますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

画面の表示処理が、 1) 画面消去 2) 背景描画 3) キャラクター描画 を繰り返すような方式だと、そういう事があります。 画面消去の状態を表示してしまうのが原因です。 一般的な解決法としては、ダブルバッファリングという手法で、 1) 仮想の画面に背景描画 2) 仮想の画面にキャラクター描画 3) 実際の画面に仮想の画面を貼り付け なんかの方法で、実際の画面に背景やキャラクターが描画されていない状態を作らないって事で対処します。 それ以前の解決法だと、 1) 画面消去 は、初回の1回のみで、 2) 直前のキャラクターがあれば、その部分を消去 3) キャラクター描画 で、2)3)を繰り返しとか。 キャラクターが重なると、やっぱりちらつきます。 背景があると、キャラクターの消去を背景での塗りつぶしする事になり、ちょっと高度です。

zzaqq
質問者

補足

回答ありがとうございます。 なるほど、ダブルバッファリングですか。それはcでも使えるのでしょうか? 検索してみても他の言語での解説しか出てこないもので

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>なるほど、ダブルバッファリングですか。それはcでも使えるのでしょうか? >検索してみても他の言語での解説しか出てこないもので C言語「だけ」では使えませんね。 もとよりC言語の標準ライブラリにはグラフィックを扱うものがありません。 環境によってはライブラリが用意されていたりしますが。 WindowsならAPIでも解決できる(そして、検索でも見つかる)と思われますが…。 質問者さんの環境が不明ですので。 # VC++とでも書いてあればWindowsであろうことは想定できる…でしょうけど…。 # それでもCUIで作っていたらダブルバッファリングとか無関係ですし。 まぁ、WindowsでGUIと想定して… http://www13.plala.or.jp/kymats/study/multimedia.html http://relog.xii.jp/archives/2006/06/windows_gdi.html http://blog.goo.ne.jp/masaki_goo_2006/e/d3c18365234ffb3383f5c30e32c83cf5 などなど…。 「Win32 ダブルバッファリング」で検索しただけですが。

zzaqq
質問者

お礼

ありがとうございます

関連するQ&A