C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
samusu0905
記事: 336
登録日時: 5年前

C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#1

投稿記事 by samusu0905 » 5年前

C++で2Dアクションゲームを作ってる途中なんですが、キー入力したらタイトル文字を数秒間点滅させてゲームプレイに移動する処理をしたいので、わかる人なら誰でも構いませんのでプログラムを教えてください><
ここにコードを載せておきます。

コード:

//********************************************************************************
// タイトル処理
//********************************************************************************
#include <stdio.h>				//C言語
#include <time.h>				//C言語
#include "gs.h"					//学内ライブラリィ
#include "def.h"				//共通定義
#include "Title.h"				//タイトル


//グローバル変数参照---------------------------
extern int gSceneMode;			//現在シーン
extern int gTimer;				//タイマー
extern int gTime;			//点滅タイムセット
extern gsTexture sTitleText1;	//タイトル文字1
extern gsTexture sTitleText2;	//タイトル文字2
extern gsTexture sTitle;		//タイトル背景
extern gsSound sTitleBGM;		//タイトルBGM
extern gsSound sButtonSE;		//決定音SE


//開始-------------------------------------------------------------------
void TitleStart(void)
{
	gsPlaySound( sTitleBGM, LOOP_ON);		//タイトル
}

//メイン処理-------------------------------------------------------------
void TitleMain(void)
{
	gTime++;

	if( gsKeyState(VK_SPACE)==GSKS_DOWN ||
		gsGetJoyPadState(0, JOYPAD_BUTTON10)==GSKS_DOWN )
	{
		if( gTime%4 >= 2)
		{
			gsDraw2D( sTitleText2, 270, 450);
		}
		gSceneMode = MODE_GAMEPLAY;
		gsPlaySound( sButtonSE, LOOP_OFF);
		gsStopSound( sTitleBGM);
	}
}


//表示-------------------------------------------------------------------
void TitleDraw(void)
{
	//タイトル背景
	gsDraw2D( sTitle, 0, 0);

	//タイトル文字1
	gsDraw2D( sTitleText1, 180, 260);
	
	if( gTime%65 >= 25)
	{
		//タイトル文字2
		gsDraw2D( sTitleText2, 270, 450);
	}
}
間違いや書くべき物が抜けているところがあれば訂正お願いします><[/b]

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

Re: C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#2

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

この掲示板では、単なる答えを回答するのではなく、プログラムの楽しさ、考え方を知ってもらうために支援する・アドバイスをすると言うスタンスで活動しております。
と言うことで、まずフォーラムルールをご覧頂ければと思います。
http://dixq.net/board/board.html

学内ライブラリィと言うことで課題だと思いますが、タイトルを一定時間おきに点滅させるということが出来ていますので、それをベースに一定時間経過したらmainに移るタイミングのif文を書いてみて頂けないでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

samusu0905
記事: 336
登録日時: 5年前

Re: C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#3

投稿記事 by samusu0905 » 5年前

具体的にはif文でキー入力後、文字の点滅を一定時間やって、次のモードに移行する処理をしたいだけなのですが。
プログラムで具体的にどうゆう処理をすればできるのかを知りたいです。
お願いします。

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

Re: C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#4

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

samusu0905 さんが書きました:具体的にはif文でキー入力後、文字の点滅を一定時間やって、次のモードに移行する処理をしたいだけなのですが。
プログラムで具体的にどうゆう処理をすればできるのかを知りたいです。
お願いします。
すいません。それは課題の丸投げに該当します。
ただ答えをもらうより、自分で考えることに価値があると思うわけです。
なので、できるだけご自身で書いて頂く必要があります。
その上で、問題点やアドバイスが有れば、こちらから書き込むというのが理想の展開です。

【補足】
この話の流れだと、C言語で全くプログラムが書けないので全部書いてほしいとしか読み取れません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

sql

Re: C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#5

投稿記事 by sql » 5年前

タイトル(点滅はこの時点では無し)→キー入力→文字点滅開始→何回か点滅(任意の回数)→次のシーン(ここだとPLay?)へ・・・という感じでしょうか?
おそらく今の状態では、初期段階から点滅が開始していて、キーを押した瞬間に次のシーンへ移動してしまう・・・のではないかと思います。
「初めは点滅しない」のであればいきなりTitleMainのなかで何の条件もなしに「カウント++」と書くのはいけない!というのはわかるかと思います。

では、「キーが押されたら」の条件式の中に書くとどうなるか?学内ライブラリということなのでどういう処理をしてくれるかはわからないですが、この中に書くと「キーが押されている時だけカウント加算」になってしまうかと思います。それだと押しっぱなしにしないと(または連打)カウントが加算されず困ることになると思います・・・

自分が初めに思いつくのが、bool型のフラグを1つ用意します。名前は「start_count_flag」とかテキトーに。(初期値はfalseで)
すると、TitleMainの中に書くのは「キーが押されたらフラグをtrueに!」、「フラグがtrueの時はカウントを加算」、「カウントが100以上(100というのは例です)になったらシーンをPlayに!」という処理だと思います。そしてDrawには点滅の計算式(もう書いてありますね!)を書けばいいと思います。
これをコードにできるか・・・ですね。(これはあくまで一例です)

samusu0905
記事: 336
登録日時: 5年前

Re: C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#6

投稿記事 by samusu0905 » 5年前

sqlさん、分かりやすい説明有難うございます。
sqlさんの説明を参考にしながらもう少し自分で考えてプログラム組み込んでみます。
あと少しで出来るとおもうので。頑張ります!

samusu0905
記事: 336
登録日時: 5年前

Re: C++でゲームのタイトル文字を、キー入力したら数秒間点滅させる処理

#7

投稿記事 by samusu0905 » 5年前

参考にしながらプログラム打ったらできました!
有難うございます。

閉鎖

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