まだ買えません。
村での状態を示す変数を追加。 mura_map_dataにショップ用の番号3,4,5を追加。
//判定用データ 0:通過可能 1:通過不可 2:ノーマルスタート
//3:アイテムショップ 4:雑貨屋 5:鍵屋
int mura_map_data[17][20]={
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1},
{1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1},
{1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1},
{1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1},
{1,0,0,0,1,1,1,1,0,0,0,1,4,1,1,0,0,0,0,1},
{1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1},
{1,0,0,0,1,3,1,1,0,0,0,0,1,1,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,1,5,1,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
};
店の種類、どのアイテムを選んでいるか、名前、アイテム名、アイテムの説明を追加。
//店の種類
int shop_knd;
//どれを選んでいるか
int shop_select;
//店の名前
char shop_name[3][32]={
"アイテム ショップ",
"ドレス & 雑貨 ショップ",
"鍵 ショップ"
};
//商品名
char shop_item[3][23][64]={
{"輝く指輪","魅惑の指輪","輝く宝石","魅惑の宝石","輝くステルスジャケット",
"魅惑のステルスジャケット","輝くフェロモン","魅惑のフェロモン","輝く親父の根性魂","魅惑の親父の根性魂"},
{"使い古された斧","魅惑のドレス","神秘のドレス"},
{"滑り込みのスペルの鍵","竹取のスペルの鍵","悲しみのスペルの鍵","美なるスペルの鍵・壱","美なるスペルの鍵・弐",
"芸術のスペルの鍵・壱","芸術のスペルの鍵・弐","?の鍵","ボツになりしスペルの鍵","迷路なるスペルの鍵",
"恐ろしきナイフスペルの鍵","ちょっちょっちょwなるスペルの鍵","ジオメトリーなるスペルの鍵","螺旋と追跡なるスペルの鍵","光と変化なるスペルの鍵",
"殺戮のナイフなるスペルの鍵","曲線なるスペルの鍵","四面楚歌なるスペルの鍵","金をくれしスペルの鍵","ネタになりしスペルの鍵1",
"ネタになりしスペルの鍵2","嫌になりしスペルの鍵"},
};
//値段
int shop_price[3][23]={
{600,2500,500,1700,900,
3500,600,2500,700,2800},
{5000,700,-1},
{300,300,300,300,300,
300,300,300,300,300,
500,500,500,500,500,
500,500,500,10000,100,
100,500,}
};
char item_explain[3][23][256]={
{
"低速移動時のアイテム吸収範囲が1.3倍にアップ",
"低速移動時のアイテム吸収範囲が更に1.3倍にアップ",
"アイテムゲットボーダーラインが40ピクセル下にさがる",
"アイテムゲットポーダーラインが更に30ピクセル下にさがる",
"自機の当たり判定が約0.9倍に縮小",
"自機の当たり判定が更に約0.9倍に縮小",
"敵の当たり判定が1.2倍に拡大",
"敵の当たり判定が更に1.2倍に拡大",
"食らいボム判定時間が1.5倍に延長",
"食らいボム判定時間が更に1.5倍に延長",
},
{
"キコリだった頃を思い出させる斧",
"好きな時に変身し、性質の違う強いショットが撃てるようになる",
"好きな時に変身し、最強のショットが撃てるようになる?(未実装)"
},
{
"ズサギコ的オーラを醸し出している不思議な鍵",
"エーリン的オーラを醸し出している不思議な鍵",
"悲しみのオーラを醸し出している不思議な鍵",
"アイシャ的美なるオーラを醸し出している不思議な鍵",
"リリア的美なるオーラを醸し出している不思議な鍵",
"竹崎界的芸術のオーラを醸し出している不思議な鍵・壱",
"竹崎界的芸術のオーラを醸し出している不思議な鍵・弐",
"感謝のオ-ラを醸し出している不思議な鍵",
"ボツになったが死にきれず蘇った不思議な鍵",
"惑わしのオーラを醸し出している不思議な鍵",
"危険なナイフのオーラを醸し出している不思議な鍵",
"混乱とテンパりのオーラを醸し出している不思議な鍵",
"ジオメトリックなオーラを醸し出している不思議な鍵",
"渦を巻いた形をした不思議な鍵",
"カラフルな色を発している不思議な鍵",
"今にも襲いかかってきそうな不思議な鍵",
"規則性のある曲線を描いた不思議な鍵",
"途中から折れ曲がっている不思議な鍵",
"黄金で作られた不思議な鍵",
"ネタオーラを醸し出している不思議な鍵",
"ネタオーラを醸し出している不思議な鍵",
"嫌になってきそうな不思議な鍵",
}
};
//自キャラ移動制御
void m_ch_move(){
if(m_ch.x%32==0 && m_ch.y%32==0){
switch(mura_map_data[m_ch.y/32][m_ch.x/32]){
case 2:
mura_count=-1;
practice=0;
stage=0;
boss.boss_num=0;
boss.knd=-1;//enter_bossで1足されるため
func_state=GAME_INI;
return;
case 3:
m_ch.muki=1;
m_ch.y+=4;
shop_knd=0;
mura_state=SHOP;
return;
case 4:
m_ch.muki=1;
m_ch.y+=4;
shop_knd=1;
mura_state=SHOP;
return;
case 5:
m_ch.muki=1;
m_ch.y+=4;
shop_knd=2;
mura_state=SHOP;
return;
}
店の処理・描画を行う関数を追加
//店の処理・描画
void graph_shop(){
//店から出る
if(CheckStatePad(configpad.bom)==1){
shop_select=0;
mura_state=WALK;
return;
}
//品物を選択する
if(CheckStatePad(configpad.down)==1){
shop_select++;
if(shop_item[shop_knd][shop_select][0]=='\0'){
shop_select--;
}
}
if(CheckStatePad(configpad.up)==1){
shop_select--;
if(shop_select==-1){
shop_select=0;
}
}
//品物と説明の描画
//ショップ名
DrawStringToHandle(200,0,shop_name[shop_knd],color[0],font[1]);
//値段と品物名
SetDrawBright(127,127,127);
for(int i=0;i<23;i++){
if(shop_item[shop_knd][i][0]=='\0') break;
if(i==shop_select) SetDrawBright(255,255,255);
if(shop_price[shop_knd][i]==-1){
DrawFormatStringToHandle(100,20+20*i,color[0],font[0]," ----",shop_price[shop_knd][i]);
}
else{
DrawFormatStringToHandle(100,20+20*i,color[0],font[0],"%6d",shop_price[shop_knd][i]);
}
DrawStringToHandle(200,20+20*i,shop_item[shop_knd][i],color[0],font[0]);
if(i==shop_select) SetDrawBright(127,127,127);
}
SetDrawBright(255,255,255);
//説明
DrawStringToHandle(100,460,item_explain[shop_knd][shop_select],color[0],font[0]);
}
void mura_main(){
if(mura_count==0) mura_ini();
switch(mura_state){
case WALK:
m_ch_move();
mura_graph();
break;
case SHOP:
graph_shop();
break;
}
mura_count++;
}
購入やアイテム装備の処理は次回をご覧ください