#author("2018-07-21T05:17:28+09:00","","")
注:hspda.as をincludeしてください
#author("2018-07-21T05:56:02+09:00","","")
注:hspda.as をincludeしてます


 title "Level Point D3"
 #include "hspda.as"
 
 //////////////////////////////////////////////////////////////////////////////////////////
 //	変数
 //////////////////////////////////////////////////////////////////////////////////////////
 #define button_block(%1="") %tbtn1 %i0 button %1,*%p:%tbtn2 goto *%i %i0:%tbtn1 *%o
 #define b_break             %tbtn2 goto *%p
 #define b_end               %tbtn2 *%o:stop:*%o
 //	button_block "1〜10カウント"
 //		mes "" + a
 //		if a = 10	:b_break
 //		a ++
 //	b_end
 	randomize
 	pic_flag=0
 
 
 gosub *def_selected_PC_status
 
 goto *@f
 *back_pic_draw
 	return
 *wnd_reset
 	objsize 160,35
 	color 0,128,0
 	color 200,0,25
 	boxf 0,0,1000,700
 	color 255,255,255
 	return
 
 *def_selected_PC_status
 	
 	sdim player_class,100,10
 	sdim player_class_str,100,10
 	
 #enum en_player_class_null=0
 #enum en_player_class_A
 #enum en_player_class_B
 #enum en_player_class_C
 #enum en_player_class_D
 #enum en_player_class_E
 #enum en_player_class_this=8
 	
 player_class.en_player_class_A="爪マスター"
 player_class.en_player_class_B="剣マスター"
 player_class.en_player_class_C="槍マスター"
 player_class.en_player_class_D="弓マスター"
 player_class.en_player_class_E="斧マスター"
 
 player_class_str.en_player_class_null="en_player_class_null"
 player_class_str.en_player_class_A="en_player_class_A"
 player_class_str.en_player_class_B="en_player_class_B"
 player_class_str.en_player_class_C="en_player_class_C"
 player_class_str.en_player_class_D="en_player_class_D"
 player_class_str.en_player_class_E="en_player_class_E"
 player_class_str.en_player_class_this="en_player_class_this"
 
 player_class.en_player_class_this=player_class.en_player_class_A
 	dim player_dat,50
 	sdim player_dat_str,100,50
 
 //	score=10
 //	player_this_class=1
 //	player_this_class_name=player_class_A
 //	player_this_LV=0
 //	player_this_exp=0
 //	player_this_next_exp=0
 
 #enum en_player_null=10
 #enum en_player_score
 #enum en_player_this_class
 #enum en_player_this_LV
 #enum en_player_this_exp
 #enum en_player_this_next_exp
 
 player_dat.en_player_score=10
 player_dat.en_player_this_class=1
 player_dat.en_player_this_LV=1
 player_dat.en_player_this_exp=0
 player_dat.en_player_this_next_exp=0
 
 player_dat_str.en_player_null="en_player_null"
 player_dat_str.en_player_score="en_player_score"
 player_dat_str.en_player_this_class="en_player_this_class"
 player_dat_str.en_player_this_LV="en_player_this_LV"
 player_dat_str.en_player_this_exp="en_player_this_exp"
 player_dat_str.en_player_this_next_exp="en_player_this_next_exp"
 #enum en_player_LV_null=20
 #enum en_player_LV_A
 #enum en_player_LV_B
 #enum en_player_LV_C
 #enum en_player_LV_D
 #enum en_player_LV_E
 
 player_dat.en_player_LV_A=1
 player_dat.en_player_LV_B=1
 player_dat.en_player_LV_C=1
 player_dat.en_player_LV_D=1
 player_dat.en_player_LV_E=1
 
 player_dat_str.en_player_LV_null="en_player_LV_null"
 player_dat_str.en_player_LV_A="en_player_LV_A"
 player_dat_str.en_player_LV_B="en_player_LV_B"
 player_dat_str.en_player_LV_C="en_player_LV_C"
 player_dat_str.en_player_LV_D="en_player_LV_D"
 player_dat_str.en_player_LV_E="en_player_LV_E"
 
 #enum en_player_exp_null=30
 #enum en_player_exp_A
 #enum en_player_exp_B
 #enum en_player_exp_C
 #enum en_player_exp_D
 #enum en_player_exp_E
 
 player_dat.en_player_exp_A=0
 player_dat.en_player_exp_B=0
 player_dat.en_player_exp_C=0
 player_dat.en_player_exp_D=0
 player_dat.en_player_exp_E=0
 
 player_dat_str.en_player_exp_null="en_player_exp_null"
 player_dat_str.en_player_exp_A="en_player_exp_A"
 player_dat_str.en_player_exp_B="en_player_exp_B"
 player_dat_str.en_player_exp_C="en_player_exp_C"
 player_dat_str.en_player_exp_D="en_player_exp_D"
 player_dat_str.en_player_exp_E="en_player_exp_E"
 
 #enum en_player_next_exp_null=40
 #enum en_player_next_exp_A
 #enum en_player_next_exp_B
 #enum en_player_next_exp_C
 #enum en_player_next_exp_D
 #enum en_player_next_exp_E
 
 player_dat.en_player_next_exp_A=0
 player_dat.en_player_next_exp_B=0
 player_dat.en_player_next_exp_C=0
 player_dat.en_player_next_exp_D=0
 player_dat.en_player_next_exp_E=0
 
 player_dat_str.en_player_next_exp_null="en_player_next_exp_null"
 player_dat_str.en_player_next_exp_A="en_player_next_exp_A"
 player_dat_str.en_player_next_exp_B="en_player_next_exp_B"
 player_dat_str.en_player_next_exp_C="en_player_next_exp_C"
 player_dat_str.en_player_next_exp_D="en_player_next_exp_D"
 player_dat_str.en_player_next_exp_E="en_player_next_exp_E"
 
 repeat 50
 	logmes ""+cnt+" "+player_dat_str.cnt
 loop
 #define sta_ar_var_MAX 1050
 #define ar_first_index 8
 	dim player_some_next_exp,sta_ar_var_MAX
 	gosub *calc_sub
 	return
 
 #defcfunc ID_from_str str p_str,local loc_str
 	loc_str=p_str
 	repeat 10
 		if loc_str==player_class_str.cnt:return cnt
 	loop
 	repeat 50
 		if loc_str==player_dat_str.cnt:return cnt
 	loop
 	return -1
 #deffunc ID_setter str p1_str,str p2_str,local loc_p1,local loc_p2,local loc_int1,local loc_int2
 	loc_p1=p1_str:loc_p2=p2_str
 	loc_int1=ID_from_str(loc_p1)
 	loc_int2=ID_from_str(loc_p2)
 	if loc_int1 < 10:player_class.loc_int1=player_class.loc_int2
 	if loc_int1 >= 10:player_dat.loc_int1=player_dat.loc_int2
 	logmes "setter "+loc_p1+" ("+loc_int1+") < "+loc_p2+" ("+loc_int2+")"
 	return
 	
 *calc_sub; array p_ar
 ;	dim player_some_next_exp,sta_ar_var_MAX
 	i=1
 	player_some_next_exp.0=i
 	repeat sta_ar_var_MAX
 		i+=cnt
 		player_some_next_exp(cnt+1)=i
 	loop
 	return
 *exp_up1
 	player_dat.en_player_this_exp++
 	return	
 *@
 //stop
 goto *HOME
 *pre_HOME
 	clrobj 0
 *HOME	
 	;MB_clear
 	gosub *wnd_reset
 	pos 200,20
 	mes "HOME:何をしますか?\n"
 	mes ""+player_class.en_player_class_this //+" score "+player_dat.en_player_score
 	gosub *show_player_status
 //	mes "LV"+player_dat.en_player_this_LV+" exp "+player_dat.en_player_this_exp+" next "+player_dat.en_player_this_next_exp
 	pos 0,0
 ;	objsize 290,25
 	button "Training",*l_training
 	button "Class change",*l_class_change
 	button "Status",*l_status
 	button "vsave",*l_vsave
 	button "vload",*l_vload
 ;	MB_draw
 	stop
 *l_vsave
 	vsave "save.dat"
 	stop
 *l_vload
 	vload "save.dat"
 	goto *pre_HOME
 *l_training
 	gosub *exp_up1
 	player_dat.en_player_score+=10
 	goto *pre_HOME
 *l_class_change
 	clrobj 0
 	gosub *wnd_reset
 	pos 200,20
 	mes "どのclassにclass changeしますか?"
 	pos 0,0
 	button "爪マスター",*l_sel_tsume
 	button "剣マスター",*l_sel_kenn
 	button "槍マスター",*l_sel_yari
 	button "弓マスター",*l_sel_yumi
 	button "斧マスター",*l_sel_ono
 	button "BACK",*pre_HOME
 	stop
 #deffunc dat_taihi
 	switch player_dat.en_player_this_class
 	case 1:
 		ID_setter "en_player_LV_A","en_player_this_LV"
 		ID_setter "en_player_exp_A","en_player_this_exp"
 		ID_setter "en_player_next_exp_A","en_player_this_next_exp"
 		swbreak
 	case 2:
 		ID_setter "en_player_LV_B","en_player_this_LV"
 		ID_setter "en_player_exp_B","en_player_this_exp"
 		ID_setter "en_player_next_exp_B","en_player_this_next_exp"
 		swbreak
 	case 3:
 		ID_setter "en_player_LV_C","en_player_this_LV"
 		ID_setter "en_player_exp_C","en_player_this_exp"
 		ID_setter "en_player_next_exp_C","en_player_this_next_exp"
 		swbreak
 	case 4:
 		ID_setter "en_player_LV_D","en_player_this_LV"
 		ID_setter "en_player_exp_D","en_player_this_exp"
 		ID_setter "en_player_next_exp_D","en_player_this_next_exp"
 		swbreak
 	case 5:
 		ID_setter "en_player_LV_E","en_player_this_LV"
 		ID_setter "en_player_exp_E","en_player_this_exp"
 		ID_setter "en_player_next_exp_E","en_player_this_next_exp"
 		swbreak
 	swend
 	return
 *l_sel_tsume
 	dat_taihi
 	player_class.en_player_class_this=player_class.en_player_class_A
 	player_dat.en_player_this_class=1
 	ID_setter "en_player_this_LV","en_player_LV_A"
 	ID_setter "en_player_this_exp","en_player_exp_A"
 	ID_setter "en_player_this_next_exp","en_player_next_exp_A"
 	goto *l_sel_CC
 *l_sel_kenn
 	dat_taihi
 	player_class.en_player_class_this=player_class.en_player_class_B
 	player_dat.en_player_this_class=2
 	ID_setter "en_player_this_LV","en_player_LV_B"
 	ID_setter "en_player_this_exp","en_player_exp_B"
 	ID_setter "en_player_this_next_exp","en_player_next_exp_B"
 	goto *l_sel_CC
 *l_sel_yari
 	dat_taihi
 	player_class.en_player_class_this=player_class.en_player_class_C
 	player_dat.en_player_this_class=3
 	ID_setter "en_player_this_LV","en_player_LV_C"
 	ID_setter "en_player_this_exp","en_player_exp_C"
 	ID_setter "en_player_this_next_exp","en_player_next_exp_C"
 	goto *l_sel_CC
 *l_sel_yumi
 	dat_taihi
 	player_class.en_player_class_this=player_class.en_player_class_D
 	player_dat.en_player_this_class=4
 	ID_setter "en_player_this_LV","en_player_LV_D"
 	ID_setter "en_player_this_exp","en_player_exp_D"
 	ID_setter "en_player_this_next_exp","en_player_next_exp_D"
 	goto *l_sel_CC
 *l_sel_ono
 	dat_taihi
 	player_class.en_player_class_this=player_class.en_player_class_E
 	player_dat.en_player_this_class=5
 	ID_setter "en_player_this_LV","en_player_LV_E"
 	ID_setter "en_player_this_exp","en_player_exp_E"
 	ID_setter "en_player_this_next_exp","en_player_next_exp_E"
 	goto *l_sel_CC
 *l_sel_CC
 	clrobj 0
 	gosub *wnd_reset
 	pos 200,20
 	mes ""+player_class.en_player_class_this+" に class change しました"
 	logmes ""+player_dat.en_player_this_class
 	pos 0,0
 	button "NEXT",*pre_HOME
 	stop
 *l_status
 	clrobj 0
 	gosub *wnd_reset
 	pos 200,20
 	gosub *show_player_kuwasii_status
 	pos 0,0
 	button "NEXT",*pre_HOME
 	stop
 *show_player_status
 	tmp_player_LV=player_dat.en_player_this_LV
 	gosub *get_p_next_exp
 	mes "score "+player_dat.en_player_score
 	mes "LV "+player_dat.en_player_this_LV+" exp "+player_dat.en_player_this_exp + " next "+ player_dat.en_player_this_next_exp
 	if tmp_player_LV!=player_dat.en_player_this_LV:mes "LVUP!"
 	return
 *show_player_kuwasii_status
 	dat_taihi
 	mes "score "+player_dat.en_player_score
 	mes "爪 LV "+player_dat.en_player_LV_A+" exp "+player_dat.en_player_exp_A + " next "+ player_dat.en_player_next_exp_A
 	mes "剣 LV "+player_dat.en_player_LV_B+" exp "+player_dat.en_player_exp_B + " next "+ player_dat.en_player_next_exp_B
 	mes "槍 LV "+player_dat.en_player_LV_C+" exp "+player_dat.en_player_exp_C + " next "+ player_dat.en_player_next_exp_C
 	mes "弓 LV "+player_dat.en_player_LV_D+" exp "+player_dat.en_player_exp_D + " next "+ player_dat.en_player_next_exp_D
 	mes "斧 LV "+player_dat.en_player_LV_E+" exp "+player_dat.en_player_exp_E + " next "+ player_dat.en_player_next_exp_E
 	return
 *get_p_next_exp
 	repeat sta_ar_var_MAX
 		if player_dat.en_player_this_exp>=player_some_next_exp.cnt:player_dat.en_player_this_LV=cnt+1
 	loop
 	player_dat.en_player_this_next_exp=player_some_next_exp(player_dat.en_player_this_LV)
 	if player_dat.en_player_this_LV==1:player_dat.en_player_this_next_exp=1
 	return