• ベストアンサー

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% (2177/4070)
回答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

  • C言語って何??

    タイトルの通りです。 C言語って何ですか? 全くわかりません(´・ω・`) できるだけ詳しく、簡単に教えていただけると嬉しいです。よろしくお願いします(`・ω・´)

  • C言語とC++

    現在C言語を用いてシューティングゲームを作成しています。 ゲームを作成している方の中には、CではなくC++で作成している人もいるようなんですが、C++で作成するとどのような違いがあるのでしょうか? メリットやデメリット、将来性など詳しく教えてもらえると助かります!

  • C言語の仕組み

    C言語の仕組み printfという命令で画面に文字を表示できますが、文字が表示される画面はMS-DOSの画面や開発プログラムの実行ウィンドウの中ですよね。 もしC言語がPCに直接命令できるのであれば、画面全体が真っ暗になって、そこに文字が表示されるべきなのではないかと思いました(つまり、OS上で動くべきではない)。 しかし、仮に全く最初から文字を打つとしたら、ディスプレイの仕組みを理解して、ドットで文字を表示させなければなりません。 いったいprintfというのはどこに対して命令しているものなのでしょうか

  • 素数を表示するプログラム(C言語・while文)

    タイトルの通り、1~1000までの素数を表示するプログラムをC言語のwhile文で作りたいと思います。ですがどうしてもプログラムの作成方法が分かりません。 プログラムの内容を教えてくださると幸いです。お願いします。

  • c言語でできること

    c言語は具体的には何ができるのでしょうか ものすごくがんばれば市販のゲームソフトなども作れるようになるのでしょうか というのは 今、僕はc言語のプログラミングを勉強しています コンパイルするとms-dosの黒い画面が表示されますよね。オセロなどのゲームはとても見にくいです。 あのようなゲームではなく、ちゃんと絵があるようなゲームは作れるのでしょうか?? また3Dのゲームはつくれるのでしょうか? 「c言語のゲーム」とググってもありません c言語だけではできなくてdirectxなどがいることは知っています。 プログラミングを学ぶ上でなにか目標ができたら それに向けてがんばれると思うので情報よろしくお願いします。 わかりにくい文章ですいません^^;

  • c言語の初心者です

    c言語の初心者です 2進数を入力して10進数を表示するプログラムを作りたいのですが まったくできません それなので2進数の入力のヒントだけでも教えてもらえないでしょうか?

  • C言語を学ぶ理由が知りたいです!

    高校一年です。 タイトルどおり、C言語を学ぶ理由をしりたいです。 僕は、普段使ってるソフトのようなGUIアプリが作りたいです。 しかし「やさしいC」という本を買ったのですがCUIのことしか書いてありません。 GUIアプリを作りたい場合は、C言語じゃだめなんでしょうか? もしC言語でGUIアプリが作れるならどうのようにして作るのか教えてください かなりの初心者です。あまり難しい言葉を使わないでいただけると嬉しいです。

  • C言語プログラム

    C言語プログラム ある数を入力して、入力された数を一辺とする図形を描くプログラムを作りたいんです。 分かりやすくすると、 入力された数が5だった時、画面には ***** ***** ***** ***** ***** ↑こう出力させたいんです。 四角だけじゃなくて、 * ** *** **** ***** ↑こういう三角とか、逆三角とか、 *        * **     *** ***  ***** **     *** *        * こんなかんじでいろんな形を描けるようにしたいんです。 C言語で、for文の二重ループを使うようにとのことなんですが、 どうすればいいでしょうか。 こういうのってズルですけど、何かヒントでも貰えればと思っています...。

  • C言語を始めたい

    タイトルのとうりC言語を始めたいのですが、この「教えて!goo」などで調べてフリーソフトをインストールしたりしてみたのですが、うまくいきません。 というのは1回ボーランドをインストールしたのですが、すべて英語で、日本語のヘルプを見ても良くわからず、インストールするものを間違えたかどうかも分からないです。 手順どうりちゃんとやれば絶対に出来るように教えてください。出来れば下のように教えてくれれば有難いです。 1、~~~~~ 2、~~~~~ 3、~~~~~ ...

  • C言語超初心者です。

    C言語を始めたばかりで、レベルの低い内容で申し訳ないですが、よろしくお願いします。 コンパイルした文字や文字列などを、コマンドプロンプト上ではなく、画面全体をクリアにして、コンパイルした文字や文字列のみを表示するには、どのようにしたらよいでしょうか? できれば表示する位置を指定する方法も、教えていただきたいです。 使用しているのは、Tera Pad、BorlandC++5.5コンパイラーです。 よろしくお願いします。