点滅処理

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

点滅処理

#1

投稿記事 by DDF » 13年前

丸投げですみません…。
今現在、C言語とC++などを用いて文字の点滅処理を作る課題出たのですがまったく分かりません。

納期が近づいてるので、参考になるようなアドバイスまたはサンプルコードで説明して頂ければ幸いです。

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

Re: 点滅処理

#2

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

そもそも文字の点滅というのが環境に依存します。
それにC言語やらC++やらどっちでも良い的なのは本当に大丈夫でしょうか?

>納期が近づいてるので、参考になるようなアドバイスまたはサンプルコードで説明して頂ければ幸いです。

まず、フォーラムルールのテンプレートに従って投稿をお願いします。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

阿部

Re: 点滅処理

#3

投稿記事 by 阿部 » 13年前

コード:

 
#include "DxLib.h"
 

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) {
 
   char Key[256];
int tenmetuflag=0;
 int msgnumber,enenumsearchflg=1,walktmp=0;
 int attacknumber,tenmetumode=0,attackmode=0,tenmetucounter=0,zoukaryou=0,enezoukaryou=0,turn=1,Eneattackmode=0;
    char messagebox[120]="aaaaあああああああああああああああいうえお";

    if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理

    SetDrawScreen( DX_SCREEN_BACK ) ;                                                 //描画先を裏画面に設定

    while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]) {
        //↑メッセージ処理        ↑画面をクリア         ↑キーボード入力状態取得       ↑ESCが押されると終了

				if(tenmetuflag==0)
			DrawFormatString(120,340,GetColor(255,25,255),"%s",messagebox);



             if(Key[ KEY_INPUT_RETURN ]  == 1)tenmetumode=1;


//敵キャラ死に際点滅犯人か判定違ったらGAMEOVER画面へ
  if(tenmetumode==1){
tenmetucounter++;
if(tenmetucounter%3==0)tenmetuflag=1;else tenmetuflag=0;
  if(tenmetucounter==60){

  tenmetumode=0;
  tenmetucounter=0;



  }}


 
        ScreenFlip();
    }
 
    DxLib_End();
    return 0;
}

DDf

Re: 点滅処理

#4

投稿記事 by DDf » 13年前

回答ありがとうございます。
ライブラリー依存しないでの書き方または参考になるようなアドバイスなどありましたらよろしくお願いします。
可能であればC言語主体でお願いします。

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

Re: 点滅処理

#5

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

DDf さんが書きました:回答ありがとうございます。
ライブラリー依存しないでの書き方または参考になるようなアドバイスなどありましたらよろしくお願いします。
可能であればC言語主体でお願いします。
一応点滅しますが、どちらかと言うとチラツキです。

コード:

#include <stdio.h>
int main(void)
{
	while(1){
		printf("hello world!!");
		printf("\r");
		printf("              ");
		printf("\r");
	}
	return 0;
}
指定された条件だと出来るのはこのぐらいです。
C言語の基礎の基礎レベルで片付きますね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

DDf

Re: 点滅処理

#6

投稿記事 by DDf » 13年前

点滅処理はなんとなくですが理解できました。
最後にに点滅処理後の画面の切り替えはどのような構成で可能でしょうか?

すみませんがよろしくお願いします。

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

Re: 点滅処理

#7

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

多重投稿に注意して下さい。

>最後にに点滅処理後の画面の切り替えはどのような構成で可能でしょうか?

必要なんでしょうか?
どうしても環境依存するので、CTRL-Cでキャンセルするのが一番だと思います。

ちなみに、私はこれで課題OKになるならC言語を習って初期の段階だけだと思います。
つまり、課題の意図を取り違えていないか気になるんですが大丈夫ですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

阿部

Re: 点滅処理

#8

投稿記事 by 阿部 » 13年前

こんなかんじでできます

コード:

 
#include "DxLib.h"
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) {
 
   char Key[256];
int tenmetuflag=0;
 int msgnumber,enenumsearchflg=1,walktmp=0;
 int attacknumber,tenmetumode=0,attackmode=0,tenmetucounter=0,zoukaryou=0,enezoukaryou=0,turn=1,Eneattackmode=0;
    char messagebox[120]="aaaaあああああああああああああああいうえお";
     char messagebox2[120]="画面切り替わったよ";
 int state=0;
    if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
 
    SetDrawScreen( DX_SCREEN_BACK ) ;                                                 //描画先を裏画面に設定
 
    while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]) {
        //↑メッセージ処理        ↑画面をクリア         ↑キーボード入力状態取得       ↑ESCが押されると終了
                  switch(state){
					case 0:
                if(tenmetuflag==0)
            DrawFormatString(120,340,GetColor(255,25,255),"%s",messagebox);
 
 
 
             if(Key[ KEY_INPUT_RETURN ]  == 1)tenmetumode=1;
 if( Key[ KEY_INPUT_SPACE    ]  == 1)state=1;
 
//敵キャラ死に際点滅犯人か判定違ったらGAMEOVER画面へ
  if(tenmetumode==1){
tenmetucounter++;
if(tenmetucounter%3==0)tenmetuflag=1;else tenmetuflag=0;
  if(tenmetucounter==60){
 state=1;
  tenmetumode=0;
  tenmetucounter=0;
 
 
 
  }}
 
 break;
case 1:
            DrawFormatString(120,340,GetColor(255,25,255),"%s",messagebox2);
 
break;
 }
 
        ScreenFlip();
    }
 
    DxLib_End();
    return 0;
}

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

Re: 点滅処理

#9

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

阿部さん同じ投稿を2回しないで下さいね。 【補足】微妙には違うみたいですが。
それにDXライブラリで環境に依存しまくっていますので、DDf さんの意図にはそぐわないかと。
※ インデントが乱れているので気をつけたほうが良いと思いますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

しひ

Re: 点滅処理

#10

投稿記事 by しひ » 13年前

環境が対応しているのであれば、エスケープシーケンスを使う方法もありますね。

コード:

#include <stdio.h>

int main(void) {
    printf("\x1b[5mhello world!\x1b[0m\n");
    return 0;
}
http://en.wikipedia.org/wiki/ANSI_escape_code

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

Re: 点滅処理

#11

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

必要なコメントに関して完全にスルーされていますが、ちゃんと利用規約を読んだ上で投稿してください。
投稿の仕方がわからない場合はフォーラムルールのテンプレートに従って投稿をお願いします。
http://dixq.net/board/board.html

まず環境が分からないのと詳しい動作仕様が分かりません。
それがはっきりしないと回答もはっきりしないと思います。

閉鎖

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