店のメニュー

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

店のメニュー

投稿記事 by Tatu » 14年前

今回は店で品物を選べるようにする処理を追加しました。
まだ買えません。



村での状態を示す変数を追加。

CODE:

enum{
WALK,
TALK,
SHOP
}mura_state;
mura_map_dataにショップ用の番号3,4,5を追加。

CODE:

//判定用データ 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},
};

店の種類、どのアイテムを選んでいるか、名前、アイテム名、アイテムの説明を追加。

CODE:

//店の種類
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倍に延長",

	},
	{
	 "キコリだった頃を思い出させる斧",
	 "好きな時に変身し、性質の違う強いショットが撃てるようになる",
	 "好きな時に変身し、最強のショットが撃てるようになる?(未実装)"
	},
	{
	 "ズサギコ的オーラを醸し出している不思議な鍵",
	 "エーリン的オーラを醸し出している不思議な鍵",
	 "悲しみのオーラを醸し出している不思議な鍵",
	 "アイシャ的美なるオーラを醸し出している不思議な鍵",
	 "リリア的美なるオーラを醸し出している不思議な鍵",
	 "竹崎界的芸術のオーラを醸し出している不思議な鍵・壱",
	 "竹崎界的芸術のオーラを醸し出している不思議な鍵・弐",
	 "感謝のオ-ラを醸し出している不思議な鍵",
	 "ボツになったが死にきれず蘇った不思議な鍵",
	 "惑わしのオーラを醸し出している不思議な鍵",
	 "危険なナイフのオーラを醸し出している不思議な鍵",
	 "混乱とテンパりのオーラを醸し出している不思議な鍵",
	 "ジオメトリックなオーラを醸し出している不思議な鍵",
	 "渦を巻いた形をした不思議な鍵",
	 "カラフルな色を発している不思議な鍵",
	 "今にも襲いかかってきそうな不思議な鍵",
	 "規則性のある曲線を描いた不思議な鍵",
	 "途中から折れ曲がっている不思議な鍵",
	 "黄金で作られた不思議な鍵",
	 "ネタオーラを醸し出している不思議な鍵",
	 "ネタオーラを醸し出している不思議な鍵",
	 "嫌になってきそうな不思議な鍵",
	}
};
店に入るようにするため、m_ch_move()の以下の部分を変更

CODE:

//自キャラ移動制御
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;
		}

店の処理・描画を行う関数を追加

CODE:

//店の処理・描画
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]);
}
mura_main()では状態によって関数を使い分けるようにする。

CODE:

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++;
}
これで店に入り、品物を選べるようになりました。

購入やアイテム装備の処理は次回をご覧ください
最後に編集したユーザー Tatu on 2011年2月23日(水) 14:09 [ 編集 1 回目 ]

コメントはまだありません。