選択肢の次の選択肢
Posted: 2014年12月22日(月) 19:37
お世話になっております。今回は選択肢関係の質問をさせていただきます。
現在カスタマイズ画面で機体のパーツをカスタマイズ出来るようなSTGを作っているのですが、パーツを選択するところでつまずいています。
まず以下が現在組んでいるカスタマイズ画面(Custom.cpp)のプログラムです
とりあえず基盤を作ろうということでパーツの反映やパーツが増えたときの処理などはまだ考えておらず、今のところ
・メイン武装を選択したらパーツを選択するためのウィンドウが出てくる
・ウィンドウが出てきた後に一番上の選択肢でENTERを押すと画面に「PARTS SELECTED」と表示される
・「カテゴリー選択に戻ります」でENTERを押すと再び「メイン武装」「サブ武装」「爆装」の選択肢に戻る
というのを行えるようにしたいのですが、現在
・「メイン武装」でENTARを押すと選択ウィンドウと一緒に「PARTS SELECTED」が表示されてしまう
・「カテゴリー選択に戻ります」でENTERを押すとパーツ選択ウィンドウは消えるが、「PARTS SELECTED」が消えない
・もう一度「メイン武装」でENTERを押しても選択ウィンドウが出ない
といった問題が出ています。
そこで質問なのですが、これらの問題の解決法としてはどのようなものがあるのでしょうか?
ちなみに自分はC++を学び始めて8ヶ月程度で、ポインタや継承に関してはどういうものなのかは分かってはいるが、どういうときに使うのがいいかはよくわかっていないというのが現状です。
開発環境はWindows7 VisualStudio2012となっています。
是非ともご助力の程よろしくお願いします。
現在カスタマイズ画面で機体のパーツをカスタマイズ出来るようなSTGを作っているのですが、パーツを選択するところでつまずいています。
まず以下が現在組んでいるカスタマイズ画面(Custom.cpp)のプログラムです
#include "Custom.h"
#include "DxLib.h"
#include "Keyboard.h"
Custom::Custom(ISceneChanger* changer) : BaseScene(changer) {
}
const static int MAIN_X = 20;
const static int SUB_X = 150;
const static int BOMB_X = 300;
typedef enum{
eCustom_Main,
eCustom_Sub,
eCustom_Bomb,
eCustom_Num,
}eCustom;
typedef enum{
eMainP_Rapid,
eMainP_Power,
eMainP_Junk,
eMainP_Back,
eMainP_Num,
}eMainP;
static int NowSelect = eCustom_Main;
static int NowSelectMP = eMainP_Rapid;
int mWeapon_flag =0;
int sWeapon_flag =0;
int bWeapon_flag =0;
int RaipdM_flag = 0;
int PowerM_flag = 0;
int JunkM_flag = 0;
//初期化
void Custom::Initialize(){
}
//更新
void Custom::Update(){
if(CheckHitKey(KEY_INPUT_G)!=0){ //Gキーが押されていたら
mSceneChanger->ChangeScene(eScene_Garage);//シーンをガレージに変更
}
if(Keyboard_Get(KEY_INPUT_RIGHT)==1){
NowSelect=(NowSelect+1)%eCustom_Num;
}
if(Keyboard_Get(KEY_INPUT_LEFT)==1){//右キーが押されていたら
NowSelect = (NowSelect+(eCustom_Num-1))%eCustom_Num;//選択状態を一つ上げる
}
if(Keyboard_Get(KEY_INPUT_RETURN)==1){//エンターキーが押されたら
switch(NowSelect){//現在選択中の状態によって処理を分岐
case eCustom_Main://メインウェポン選択中なら
if(mWeapon_flag==0){ //mWeaponフラグが0のとき
mWeapon_flag = 1; //mWeaponフラグを1にする
}
break;
case eCustom_Sub://サブウウェポン選択中なら
break;
case eCustom_Bomb://ボムウェポン選択中なら
break;
}
}
if(mWeapon_flag==1){
///メイン武器フラグが1のときの動作///
if(Keyboard_Get(KEY_INPUT_DOWN)==1){
NowSelectMP =(NowSelectMP + 1)%eMainP_Num;
}
if(Keyboard_Get(KEY_INPUT_UP)==1){//上キーが押されていたら
NowSelectMP = (NowSelectMP + (eMainP_Num-1))%eMainP_Num;//選択状態を一つ上げる
}
if(Keyboard_Get(KEY_INPUT_RETURN)==1){//エンターキーが押されたら
switch(NowSelectMP){//現在選択中の状態によって処理を分岐
case eMainP_Rapid://速射武器選択中なら
RaipdM_flag = 1;
break;
case eMainP_Power://高威力武器選択中なら
break;
case eMainP_Junk://ジャンク武器選択中なら
break;
case eMainP_Back:
mWeapon_flag=0;
break;
}
}
///動作ここまで///
}
}
//描画
void Custom::Draw(){
BaseScene::Draw();//親クラスの描画メソッドを呼ぶ
DrawString(0, 0,"カスタマイズ画面です。",GetColor(255,255,255));
DrawString(0,20,"Escキーを押すとメニュー画面に戻ります。",GetColor(255,255,255));
DrawString(0,40,"Gキーを押すとガレージ画面に切り替わります。",GetColor(255,255,255));
DrawString(0, 80, "SELECT PARTS",GetColor(255,255,255));
DrawString(MAIN_X, 100, "メイン武装",GetColor(255,255,255));
DrawString(SUB_X, 100, "サブ武装",GetColor(255,255,255));
DrawString(BOMB_X, 100, "爆装",GetColor(255,255,255));
if(mWeapon_flag==1){
DrawBox(MAIN_X-20,120,301,301,GetColor(255,0,0),TRUE);
DrawString( MAIN_X , 130 , "WEAPON-A : 速射性の高い武器です",GetColor(255,255,255)) ;
DrawString( MAIN_X , 150 , "WEAPON-B : 威力の高い武器です",GetColor(255,255,255)) ;
DrawString( MAIN_X , 170 , "WEAPON-C : 産廃武器です",GetColor(255,255,255)) ;
DrawString( MAIN_X , 280 , "カテゴリー選択に戻ります",GetColor(255,255,255)) ;
}
if(RaipdM_flag==1){
DrawString(200, 300, "PARTS SELECTED",GetColor(255,255,255));
}
int x = 0;
switch(NowSelect){//現在の選択状態に従って処理を分岐
case eCustom_Main://メイン武装選択中なら
x = MAIN_X; //メインの座標を格納
break;
case eCustom_Sub://サブ武装選択中なら
x = SUB_X; //サブの座標を格納
break;
case eCustom_Bomb://爆装選択中なら
x = BOMB_X; //ボムの座標を格納
break;
}
DrawString(x-20, 100, "■", GetColor(255,255,255));
}
とりあえず基盤を作ろうということでパーツの反映やパーツが増えたときの処理などはまだ考えておらず、今のところ
・メイン武装を選択したらパーツを選択するためのウィンドウが出てくる
・ウィンドウが出てきた後に一番上の選択肢でENTERを押すと画面に「PARTS SELECTED」と表示される
・「カテゴリー選択に戻ります」でENTERを押すと再び「メイン武装」「サブ武装」「爆装」の選択肢に戻る
というのを行えるようにしたいのですが、現在
・「メイン武装」でENTARを押すと選択ウィンドウと一緒に「PARTS SELECTED」が表示されてしまう
・「カテゴリー選択に戻ります」でENTERを押すとパーツ選択ウィンドウは消えるが、「PARTS SELECTED」が消えない
・もう一度「メイン武装」でENTERを押しても選択ウィンドウが出ない
といった問題が出ています。
そこで質問なのですが、これらの問題の解決法としてはどのようなものがあるのでしょうか?
ちなみに自分はC++を学び始めて8ヶ月程度で、ポインタや継承に関してはどういうものなのかは分かってはいるが、どういうときに使うのがいいかはよくわかっていないというのが現状です。
開発環境はWindows7 VisualStudio2012となっています。
是非ともご助力の程よろしくお願いします。