合計 昨日 今日

DXライブラリ三大処理について。

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: TMZ
[URL]
Date: 2017年9月02日(土) 22:23
No: 1
(OFFLINE)

 DXライブラリ三大処理について。

DXライブラリでゲームを作っています。
①Enterキーを押すと
②文章が表示される。
③画面が一定時間揺れる。
④揺れ終わると文章が表示される。
上記のような処理をしたい場合、下記のように記述すると
御法度?である ScreenFlip()などの三大処理を入れるしかないのでしょうか?
あるいは、そもそもの設計に問題があるのでしょうか?
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func() {
  if ( Input::press( ENTER ) ) {
    showText( "画面が揺れます。" ) ;
    shakeScreen() ;
    showText( "終了です。" ) ;
  }
}
void shakeScreen() {
  int count = 0 ;
  while ( ProcessMessage() == 0 && count < 10 ) {
    ClearDrawScreen() ;
    shake() // 画面表示の座標を変えるなどの関数
    ScreenFlip() ;
    count ++ ;
  }
}

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,485,523 ポイント)
Date: 2017年9月02日(土) 22:41
No: 2
(OFFLINE)

 Re: DXライブラリ三大処理について。

三大処理が複数個所にあるとしたら、それはほぼ間違いなく設計に問題があります。
funcがどこから呼ばれているのか分かりませんが、根底となるルーパーから呼ばれているならその中で新たに三大処理をいれるべきではないです。
毎フレームルーパーに処理を返しましょう。
Enterキーが押された瞬間揺れフラグを立てる等して現在揺れていることを識別可能にします。
またカウンターを用意し、カウンターが特定の値になったらフラグを落とします。
一例としてサンプルコードはこんな感じでしょうか。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "DxLib.h"
 
bool isShaking = false;
int counter = 0;
 
void shake(){
}
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
    isShaking = true;//何らかのタイミングでフラグを立てる
    while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){
        if(isShaking){
            shake();
            counter++;
            if(counter>10){
                isShaking = false;
            }
        }
    }
    DxLib_End(); // DXライブラリ終了処理
    return 0;
}

Name: TMZ
[URL]
Date: 2017年9月03日(日) 10:28
No: 3
(OFFLINE)

 Re: DXライブラリ三大処理について。

返信有り難うございます。
ご教示頂いた設計にします。

ちなみに、
三大処理を複数箇所に書かざるをえない状況とは
どのようなものなのでしょうか?

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,485,523 ポイント)
Date: 2017年9月03日(日) 12:17
No: 4
(OFFLINE)

 Re: DXライブラリ三大処理について。

基本的に無いと思っていいですが、館で紹介しているように
http://dixq.net/rp2/06.html
致命的エラーが起きてこれ以上続行中不可能なときただ死ぬのを待つだけの処理等には使っても構わないかと思います。

Name: TMZ
[URL]
Date: 2017年9月03日(日) 14:54
No: 5
(OFFLINE)

 Re: DXライブラリ三大処理について。

[解決!]

返信ありがとうございます。
何があっても絶対に使うことはない、と考えておいて間違いはなさそうですね。

大変参考になりました!
どうも有り難うございました!


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[12人]