画面を一定時間止める方法

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

画面を一定時間止める方法

#1

投稿記事 by BODY » 12年前

以前もここで質問させていただいた者なのですが
RPGの戦闘画面について質問があります。

ウィンドウに「〇〇にダメージを与えた」と表示することは
出来たのですがwhileループでScreenFlipとClearDrawScreenを←このへん曖昧です
実行する都合上、文字が一瞬で消えてしまいます。
この場合文字を数秒だけ表示しておくにはどうすればいいのでしょうか?

WaitTimerを文字を表示した直後に書いたのですが
なぜか画面が数秒止まったあとに文字が一瞬表示されるという結果になってしまいます。
使用しているのはVisual Studio2013とDXライブラリでC言語で書いています。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 画面を一定時間止める方法

#2

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

処理の中にWait処理を入れるのはもっともやってはいけない処理の一つです。
参考:
http://dixq.net/g/h_11.html

それは一般的にはフレームカウンタを使って実現します。

コード:

int counter = 0;
while(略){
    if(counter<60){
        //文字描画
    }
    counter++;
}
こうすれば60フレーム、つまり1秒間文字を表示することが出来ます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画面を一定時間止める方法

#3

投稿記事 by softya(ソフト屋) » 12年前

そうですね。一応私の書いたRPG講座があるのですが初心者の方には難しすぎるみたいです。
メッセージの制御や、戦闘画面の作り方などもあります。
「マイ 日記 • C言語交流フォーラム ~ mixC++ ~ RPG講座」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2
難しすぎる場合は、まず「ゲームプログラミングの館」を人に説明できる程度理解できるまで勉強してみてください。
「ゲームプログラミングの館」で分からないことがあれば質問して下さい。
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/

あとDixqさんの作ったRPGのサンプルも有りますよ。
「サンプルプログラミングの館」
http://dixq.net/sm/d10.html
ご本人も書いている通り、コード記述部分を参考にせず考え方だけ参考にして下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Milla

Re: 画面を一定時間止める方法

#4

投稿記事 by Milla » 12年前

whileループでゲームループを止めちゃうのはまずい気がする。
それは画面を止めるというより、ゲームの処理を止めちゃうので。
理想はゲームループは回しつつ、画面ウェイトが入ってる状態。

BODY

Re: 画面を一定時間止める方法

#5

投稿記事 by BODY » 12年前

No.2のwhile文の中には何を書けばいいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画面を一定時間止める方法

#6

投稿記事 by softya(ソフト屋) » 12年前

BODY さんが書きました:No.2のwhile文の中には何を書けばいいのでしょうか?
それこそゲームプログラミングの館をご覧ください。
http://dixq.net/g/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 画面を一定時間止める方法

#7

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

ちゃんと私の書いたリンク先を見て頂けましたか?

BODY

Re: 画面を一定時間止める方法

#8

投稿記事 by BODY » 12年前

お返事ありがとうございました。
皆さんの仰った通りサイトとサンプルプログラムを参考にし
なんとかwhileの中でカウントする方法でなんとか目的を達成することができました。
でもこのやり方って本当はあんまりよくないんでしょうか?
あとcounterに数値を加算するところで
counter++;と表記すると値が加算されずcounter+=1;だと上手くいくんですがこれは
どうしてなのでしょうか・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 画面を一定時間止める方法

#9

投稿記事 by softya(ソフト屋) » 12年前

> なんとかwhileの中でカウントする方法でなんとか目的を達成することができました。
> でもこのやり方って本当はあんまりよくないんでしょうか?

while(!ScreenFlip()&&!ClearDrawScreen()&&!ProcessMessage()){
が沢山あるなら良くない方法です。


> あとcounterに数値を加算するところで
> counter++;と表記すると値が加算されずcounter+=1;だと上手くいくんですがこれは
> どうしてなのでしょうか・・・

その問題を再現できる短いコードを提示してください。
そのほうが話しが早いです。
※ 間違っている点に気づいていない人が説明しようとしても、やはり間違っている点を省略してしまうので問題点が明らかになりません。再現できるソースコードは真実を反映します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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