ゲームプログラミングの館の12節について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jag

ゲームプログラミングの館の12節について

#1

投稿記事 by jag » 16年前

ゲームプログラミングの館の12節の、「画像を動かす。」でサンプルプログラムをそのままコピーしたのですが、
実行すると、しばらく何も起きず突然完全に動いた後の画像が表示されてしまいます。(分かり難くてすみません)
13節では問題なく動いたので、sleep関数が原因だと思うのですが、理由がまったくわかりません。
なぜでしょうか?

Dixq (管理人)

Re:ゲームプログラミングの館の12節について

#2

投稿記事 by Dixq (管理人) » 16年前

12章は「うまく表示できない例」を見せる為の章で、
なぜ13章のようなプログラムを書かないといけないか理解する為の章です。

「12章ではうまくいかないのに13章だとうまくいく」と思って頂けたなら
13章のプログラムのありがたみがわかって頂けたかと思います。

画面にうつす内容をモニタの書き換えのタイミングを無視して書き換えようとすると、うまくいかないのです。
そのタイミングは使っている人のモニタによって様々で、60Hzのモニタを使っている人もいれば
70や80Hzのモニタを使っている人もいます。
そこで裏画面処理といって、計算途中は描画されている表画面には反映せず、
裏画面で全て計算してしまってから、モニタのリフレッシュに合わせて表示内容を更新しよう!という試みが必要なのです。

13章のプログラムはうまくいきましたよね?
ゲームを製作される時は、13章のプログラムをお使いください。

モニタのリフレッシュはだいたい60が一般的じゃないかと思いますが、モニタが対応していれば簡単に変更可能です。
もしVistaなら
デスクトップ右クリック>画面の設定>詳細設定>モニタ 
で変更可能です。XPでも同じような手順で出来ます。
もしゲームのFPSを一定にたもつ処理をしなければ、
このリフレッシュを早くすればゲームの進行も早くなってしまうので気をつけてください。(時間を計って移動制御しているようなプログラムではおきませんが、ループ回数のカウンタを使っているような場合速さが変化します)

jag

Re:ゲームプログラミングの館の12節について

#3

投稿記事 by jag » 16年前

しかし、12節の文で画像動いてるように見えたりチラついたりするように書かれていますが
それすらなりません。

似たようなことで、
違う話になってすみませんが、Cをつかって1文字表示して間をおいてまた1文字表示する・・・というプログラムを作りたくて下のように書いたのですが、
実行すると5秒ほどたって一気に「aaaaa」と表示するようになってしまいます。
これらはなぜおこるのでしょうか?
#include<stdio.h>
#include<windows.h>
int main(void)
{
	int i;
	for(i=0;i<5;i++){
		printf("a");
		sleep(1);
	}
	return 0;
}

Dixq (管理人)

Re:ゲームプログラミングの館の12節について

#4

投稿記事 by Dixq (管理人) » 16年前

12章のプログラムは使うことが無いと思うので、正常に表示されなくていいのです。
また、しばらくしてからaaaaaが表示されるのは単にまだプロセスが実行されてないだけなのでは?
生成した実行ファイルを直に実行したらどうなりますか?

Libra

Re:ゲームプログラミングの館の12節について

#5

投稿記事 by Libra » 16年前

文字列を勉強した際に作ったお遊びプログラムがjagさんの作りたいものの仕様に近いと思うので、添付します。

toyo

Re:ゲームプログラミングの館の12節について

#6

投稿記事 by toyo » 16年前

Vistaをお使いではないですか
Vistaでは12章のプログラムは解説通りには動かなかったと思います
(表画面に直接描画できない)

jag

Re:ゲームプログラミングの館の12節について

#7

投稿記事 by jag » 16年前

>toyoさん
なるほど。
Vista使ってますのでそのせいなんですね



上に書いたコードを、sleepとwindowsの最初を大文字にしてc++としてvisual studioでコンパイルするとちゃんと思うように動きました。

しかし、学校でLinuxを使ってCのプログラミングをしていて、Cで作りたいのです。
家のPCでcygwinをインストールして、gccでコンパイルして実行すると、後から一気に表示するようになってしまいます。
gccのせいなのですか?
というか、これを最初に書くべきでしたね、本当にすみませんm(_ _)m
cygwinでgccでコンパイルしたものをwindowsで実行しようとすると「cygwin1.dllが見つかりません~」などとでて実行できません。

ren

Re:ゲームプログラミングの館の12節について

#8

投稿記事 by ren » 16年前

混乱していた所、全く同じ質問をされている方がいらっしゃったので助かりました。
当方もOSはVistaでした。
症状は同じで、描画のループ処理が終わった後に一気に表示されるというものでした。
12節に注意書き等が有った方が良いかもしれません。
13節は正常に動作しました。

Dixq (管理人)

Re:ゲームプログラミングの館の12節について

#9

投稿記事 by Dixq (管理人) » 16年前

そうですね。12章に少し注意書き書いておこうと思います。ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る