検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
NO_603 をテンプレートにして作成
メニュー
簡易掲示板
LINK集
y.tackの公式BBSブックマーク
practice room
?
最新の20件
2022-10-09
多角形の内外判定
2021-05-19
RecentDeleted
2018-08-01
FrontPage
文字列型変数管理サブルーチン
GAME作成システム
2018-07-31
double型変数管理サブルーチン
int型変数管理サブルーチン
2018-07-21
GUIとメイン分割処理。たたき台2
2018-07-11
memo
NO_579_sample
GUIとメイン分割処理。たたき台
2018-06-28
NO_714
NO_712
NO_706
NO_705
NO_704
NO_703
NO_702
2018-06-23
Shift_JIS
モートン番号テーブル化 / 八分木
total
0
today
0
yesterday
0
now
1
Menu
Total:0/Today:0
開始行:
[[簡単言語]]
**NO_603 [#b6955c97]
マクロ使って文短縮〜♪
#module mod_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったよ...
#modinit str p_name,int p_ID,int p_l_value
i_name=p_name
i_ID=p_ID
i_l_value=p_l_value
return
;getter
#modcfunc local get_i_name
return i_name
#modcfunc local get_i_ID
return i_ID
#modcfunc local get_i_l_value
return i_l_value
#modfunc local set_i_l_value var _p4set_value
i_l_value = _p4set_value
return
#modfunc local dump
mes "dump_A"+i_l_value
mes "dump_B"+i_ID
return
#global
#module label_manage
#deffunc local set_ID_sw_zero
; global fv_ID
fv_ID=0
return
#deffunc local x_label_search_init str _p_name,int _p_ID...
loc_r=label_search_from_ID_non_error_mes(_p_ID)
if loc_r==-1{
newmod o_label,mod_label,_p_name,_p_ID,_p_l_value
fv_ID++
return
}
dialog "your ID already rgst:"+_p_ID,1
return
#defcfunc local label_search_from_ID_non_error_mes int _...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_label(o_label.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
return -1
#defcfunc local label_search_from_ID int _3p_ID,local lo...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_label(o_label.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
dialog "don't find from labelID"+_3p_ID,1
return -1
#defcfunc local is_hit_after_label_search str _4p_name,i...
if _4p_i==-1:return -1
rr_name=get_i_name@mod_label(o_label._4p_i)
if rr_name==_4p_name:return 1
dialog "don't hit from labelID"+_4p_i,1
; dialog ""+rr_name,1
return -1
#defcfunc local pre_get_x_label_value str __p_name,int _...
r_name=get_i_name@mod_label(o_label.__p_ID)
if r_name!=__p_name:return -1
return get_i_l_value@mod_label(o_label.__p_ID)
#defcfunc local get_x_label_value str __p_name,int _p3b_...
loc_sch=label_search_from_ID@label_manage(_p3b_ID)
loc_hit=is_hit_after_label_search@label_manage(__p_name...
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_label_value@label_manage(__p_name,lo...
}
}
return -1
#deffunc local pre_set_x_label_value str __p_name,int __...
r_name=get_i_name@mod_label(o_label.__p_ID)
logmes ""+__p4set
logmes ""+r_name
if r_name!=__p_name:return -1
set_i_l_value@mod_label o_label.__p_ID,__p4set
return
#deffunc local set_x_label_value str _p3c_name,int _p3c_...
loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
loc_hit_b=is_hit_after_label_search@label_manage(_p3c_n...
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_label_value@label_manage _p3c_name,loc_sch_...
}
}
return -1
#deffunc local dump
dump@mod_label o_label.0
dump@mod_label o_label.1
return
#global
#module mod_variable v_i_name,v_i_ID,v_i_v_value
#modinit str p_name,int p_ID,int p_v_value
v_i_name=p_name
v_i_ID=p_ID
v_i_v_value=p_v_value
return
#modcfunc local get_i_name
return v_i_name
#modcfunc local get_i_ID
return v_i_ID
#modcfunc local get_i_v_value
return v_i_v_value
#modfunc local set_i_v_value var _p4set_value
v_i_v_value = _p4set_value
return
#modfunc local dump
mes "dump_A"+v_i_v_value
mes "dump_B"+v_i_ID
return
#global
#module variable_manage
#deffunc local set_ID_sw_zero
fv_ID=0
return
#deffunc local x_var_search_init str _p_name,int _p_ID,i...
loc_r=var_search_from_ID_non_error_mes(_p_ID)
if loc_r==-1{
newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value
fv_ID++
return
}
dialog "your ID already rgst:"+_p_ID,1
return
#deffunc local x_var_init str _p_name,int _p_ID,int _p_v...
newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value
; mes get_i_ID@mod_variable(o_var.fv_ID)
fv_ID++
return
#defcfunc local var_search_from_ID_non_error_mes int _3p...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_variable(o_var.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
return -1
#defcfunc local var_search_from_ID int _3p_ID,local loc_...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_variable(o_var.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
dialog "don't find from varID"+_3p_ID,1
return -1
#defcfunc local is_hit_after_var_search str _4p_name,int...
if _4p_i==-1:return -1
rr_name=get_i_name@mod_variable(o_var._4p_i)
if rr_name==_4p_name:return 1
dialog "don't hit from varID"+_4p_i,1
; dialog ""+rr_name,1
return -1
#deffunc local set_x_var_value str _p3c_name,int _p3c_ID...
loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_...
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_var_value@variable_manage _p3c_name,loc_sch...
}
}
return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p...
r_name=get_i_name@mod_variable(o_var.__p_ID)
if r_name!=__p_name:return -1
return get_i_v_value@mod_variable(o_var.__p_ID)
#deffunc local pre_set_x_var_value str __p_name,int __p_...
r_name=get_i_name@mod_variable(o_var.__p_ID)
logmes ""+__p4set
logmes ""+r_name
if r_name!=__p_name:return -1
set_i_v_value@mod_variable o_var.__p_ID,__p4set
return
#defcfunc local get_x_var_value str __p_name,int _p3b_ID...
loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
loc_hit=is_hit_after_var_search@variable_manage(__p_nam...
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_var_value@variable_manage(__p_name,l...
}
}
return -1
#deffunc local dump
dump@mod_variable o_var.0
dump@mod_variable o_var.1
return
#global
dim pc_stack,500
n_pc_stack=0
hoge_pc=1
dim num_stack,500
repeat length(num_stack)
num_stack.cnt=-1
loop
// line search のみ有効
flag_on_do=0
flag_on_line_search=1
flag_on_label_search=0
#define ctype l_avoid(%1) goto *l_a_%1
#define ctype catch_l_avoid(%1)*l_a_%1
#define ctype l_def(%1)*l_def_%1
#define ctype l_def_go(%1) *l_def_%1
#define switch_set_B my_pc_B
#define eq_B(%1) case %1:my_pc_B++:
#define eq_B_one(%1,%2) case %1:my_pc_B++:%2:goto *sw_be...
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:%2:goto *sw_begin:case %1+1:my_pc_B++:...
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:%2:goto *sw_begin:case %1+1:my_pc_B++:...
case %1+2:my_pc_B++:%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *...
;goto *l_def_A
;goto l_def(A)
;l_def(E):
;*l_def_B
;x_label_init@mod_label 1,"a",1 ;0
;x_label_init@mod_label 0,"aa1",11 ;1
;x_label_init@mod_label 0,"ab1",13 ;2
;x_label_init@mod_label 0,"ax1a",15 ;3
dim one_code,256
x=0
f_stop=0
// ボタンによって選択される選択肢のID
selected_btnext="a"
#enum nop=0
#enum en_get_my_label
#enum en_button_A
#enum en_button_B
#enum en_cls0
#enum en_objsize
#enum en_pos
#enum en_mes
#enum en_stop
#enum en_goto
#enum en_calc
my_pc=1
my_pc_B=1
flag_on_l_search=1
goto *@f
*search_l_end
flag_on_l_search=0
goto *sw_begin
*@
flag_on_line_search=1
if 0{
*count_b
flag_on_line_search=0
flag_on_label_search=1
flag_on_do=0
label_pc=1
}
if 0{
*count_c
flag_on_line_search=0
flag_on_label_search=0
flag_on_do=1
cmd_pc=1
}
*sw_begin
await 1
; logmes "BEGIN"
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
pc_stack.hoge_pc=my_line:hoge_pc++
}
return
*sbr_lab_search
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:goto *sw_begin }// label
}
}
return
*sbr_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
if cmd_pc==num_stack.my_line{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:goto *sw_begin
}
}
return
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return
*sbr_end
// case 1:
// def label
my_line=int(__LINE__)
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{ logmes "途中A"
switch my_pc_B
eq_B_three 1,cp1="a",cp2=1,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
eq_B 5:logmes "途中B":my_pc_B=1:label_pc++:goto *sw...
swend
}
}
; gosub *flag_clear
// case 2:
// cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
logmes "途中inE2"
if my_pc_B==1:cr_com=en_cls0:cmd_fin
}
}
// case 3:
// objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=120,cp2=24
eq_B 3:cr_com=en_objsize:cmd_fin
swend
}
}
// case 4:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
logmes "inE4"
switch my_pc_B
eq_B_two 1,cp1="aa1",cp2=11
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// button
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
logmes "inE5"
switch my_pc_B
eq_B 4:cp1="X足す1":goto *sw_begin
eq_B 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
// case 5:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="ab1",cp2=12
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// button
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 4:cp1="X引く1":goto *sw_begin
eq_B 5:bt_pc_2=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_B:cmd_fin
swend
}
}
// case 6:
// pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=150,cp2=0
eq_B 3:cr_com=en_pos:cmd_fin
swend
}
}
// case 7:
// mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 1:cp1="ボタンを押してください":goto *sw_begin
eq_B 2:cr_com=en_mes:cmd_fin
swend
}
}
// case 8:
// stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==1:cr_com=en_stop:cmd_fin
}
}
// case 9:"aa1"
// def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 1,cp1="aa1",cp2=11,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
swend
}
if label_pc==num_stack.my_line{
;x_var_search_init@variable_manage "x",1,2
switch my_pc_B
eq_B_three 5,cp1="x",cp2=10,cp3=0
eq_B 8:x_var_search_init@variable_manage cp1,cp2,cp3...
swend
}
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 9,cp1="y",cp2=20,cp3=0
eq_B 12:x_var_search_init@variable_manage cp1,cp2,cp3
my_pc_B=1:label_pc++:goto *sw_begin
swend
}
}
// case 10:
// calc
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="x",cp2=10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B_two 4,cp1="y",cp2=20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)...
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
}
// 演算
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 7:reg3=reg1+1:goto *sw_begin
eq_B 8:reg2+=2:goto *sw_begin
eq_B 9:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
}
// 代入
if flag_on_do==1{
; set_x_var_value@variable_manage "x",1,v1
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 10,cp1="x",cp2=10,cp3=reg3
eq_B 13:set_x_var_value@variable_manage cp1,cp2,cp3:...
swend
switch my_pc_B
eq_B_three 14,cp1="y",cp2=20,cp3=reg2
eq_B 17:set_x_var_value@variable_manage cp1,cp2,cp3:
logmes "通過check B":cmd_fin
swend
}
}
// case 11:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="ax1a",cp2=21
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// goto
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==4:logmes ""+my_label:cp1=my_label:cr_com=...
}
}
// case 12:"ab1"
// def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 1,cp1="ab1",cp2=12,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
eq_B 5:my_pc_B=1:label_pc++:goto *sw_begin
swend
}
}
// case 13:
// calc
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="x",cp2=10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B_two 4,cp1="y",cp2=20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)...
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
}
// 演算
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 7:reg3=reg1-1:goto *sw_begin
eq_B 8:reg2-=2:goto *sw_begin
eq_B 9:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
}
// 代入
if flag_on_do==1{
; set_x_var_value@variable_manage "x",1,v1
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 10,cp1="x",cp2=10,cp3=reg3
eq_B 13:set_x_var_value@variable_manage cp1,cp2,cp3:...
swend
switch my_pc_B
eq_B_three 14,cp1="y",cp2=20,cp3=reg2
eq_B 17:set_x_var_value@variable_manage cp1,cp2,cp3:
logmes "通過check B"
my_pc_B=1:cmd_pc++:goto *sw_begin
swend
}
}
// case 14
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="ax1a",cp2=21
eq_B 3:cr_com=en_get_my_label:cmd_fin
swend
}
}
// goto
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==4:logmes ""+my_label:cp1=my_label:cr_com=...
}
}
// case 15:"ax1a"
// def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 1,cp1="ax1a",cp2=21,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
eq_B 5:my_pc_B=1:label_pc++:goto *sw_begin
swend
}
}
// case 16
// cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==1:cr_com=en_cls0:cmd_fin
}
}
// case 17
// objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=120,cp2=24
eq_B 3:cr_com=en_objsize:cmd_fin
swend
}
}
// case 18
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="a",cp2=1
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// button
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 4:cp1="NEXT":goto *sw_begin
eq_B 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
// case 19
// pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=150,cp2=0
eq_B 3:cr_com=en_pos:cmd_fin
swend
}
}
// case 20
// mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="x",cp2=10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B_two 4,cp1="y",cp2=20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
}
// case 21
// stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==1:cr_com=en_stop:cmd_fin
}
}
//if flag_on_label_search==1:mes 6:goto *_2do
// pc_stack dump
if flag_on_line_search==1{
mes "dump"
repeat 30
logmes ""+cnt+" "+pc_stack.cnt
loop
repeat 30
if pc_stack.cnt!=0{
num_stack(pc_stack.cnt)=cnt
}
loop
repeat 500
logmes ""+cnt+":"+num_stack.cnt
loop
}
;mes 6
; goto *sw_begin
;}
if flag_on_line_search==1{
; logmes "B"
goto *count_b
}
if flag_on_label_search==1{
goto *count_c
}
mes "stop"
stop
*com_sw
switch cr_com
case en_get_my_label: my_label=get_x_label_value@label_m...
case en_button_A: button cp1,*bt_hoge_1:swbreak
case en_button_B: button cp1,*bt_hoge_2:swbreak
case en_cls0: cls 0:swbreak
case en_objsize:objsize cp1,cp2:swbreak
case en_pos: pos cp1,cp2:swbreak
case en_mes: mes ""+cp1:swbreak
case en_stop: f_stop=1:swbreak
case en_calc: goto *sw_begin
case en_goto: cmd_pc=cp1:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*get_my_label
my_label=get_x_label_l_value@mod_label(cp1,cp2)
; my_label=get_x_label_l_value@mod_label("a",0)
goto *sw_begin
*bt_hoge_1
; mes my_pc
; mes bt_pc_1
cmd_pc=bt_pc_1
goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2
goto *sw_begin
*sw_end
stop
終了行:
[[簡単言語]]
**NO_603 [#b6955c97]
マクロ使って文短縮〜♪
#module mod_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったよ...
#modinit str p_name,int p_ID,int p_l_value
i_name=p_name
i_ID=p_ID
i_l_value=p_l_value
return
;getter
#modcfunc local get_i_name
return i_name
#modcfunc local get_i_ID
return i_ID
#modcfunc local get_i_l_value
return i_l_value
#modfunc local set_i_l_value var _p4set_value
i_l_value = _p4set_value
return
#modfunc local dump
mes "dump_A"+i_l_value
mes "dump_B"+i_ID
return
#global
#module label_manage
#deffunc local set_ID_sw_zero
; global fv_ID
fv_ID=0
return
#deffunc local x_label_search_init str _p_name,int _p_ID...
loc_r=label_search_from_ID_non_error_mes(_p_ID)
if loc_r==-1{
newmod o_label,mod_label,_p_name,_p_ID,_p_l_value
fv_ID++
return
}
dialog "your ID already rgst:"+_p_ID,1
return
#defcfunc local label_search_from_ID_non_error_mes int _...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_label(o_label.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
return -1
#defcfunc local label_search_from_ID int _3p_ID,local lo...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_label(o_label.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
dialog "don't find from labelID"+_3p_ID,1
return -1
#defcfunc local is_hit_after_label_search str _4p_name,i...
if _4p_i==-1:return -1
rr_name=get_i_name@mod_label(o_label._4p_i)
if rr_name==_4p_name:return 1
dialog "don't hit from labelID"+_4p_i,1
; dialog ""+rr_name,1
return -1
#defcfunc local pre_get_x_label_value str __p_name,int _...
r_name=get_i_name@mod_label(o_label.__p_ID)
if r_name!=__p_name:return -1
return get_i_l_value@mod_label(o_label.__p_ID)
#defcfunc local get_x_label_value str __p_name,int _p3b_...
loc_sch=label_search_from_ID@label_manage(_p3b_ID)
loc_hit=is_hit_after_label_search@label_manage(__p_name...
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_label_value@label_manage(__p_name,lo...
}
}
return -1
#deffunc local pre_set_x_label_value str __p_name,int __...
r_name=get_i_name@mod_label(o_label.__p_ID)
logmes ""+__p4set
logmes ""+r_name
if r_name!=__p_name:return -1
set_i_l_value@mod_label o_label.__p_ID,__p4set
return
#deffunc local set_x_label_value str _p3c_name,int _p3c_...
loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
loc_hit_b=is_hit_after_label_search@label_manage(_p3c_n...
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_label_value@label_manage _p3c_name,loc_sch_...
}
}
return -1
#deffunc local dump
dump@mod_label o_label.0
dump@mod_label o_label.1
return
#global
#module mod_variable v_i_name,v_i_ID,v_i_v_value
#modinit str p_name,int p_ID,int p_v_value
v_i_name=p_name
v_i_ID=p_ID
v_i_v_value=p_v_value
return
#modcfunc local get_i_name
return v_i_name
#modcfunc local get_i_ID
return v_i_ID
#modcfunc local get_i_v_value
return v_i_v_value
#modfunc local set_i_v_value var _p4set_value
v_i_v_value = _p4set_value
return
#modfunc local dump
mes "dump_A"+v_i_v_value
mes "dump_B"+v_i_ID
return
#global
#module variable_manage
#deffunc local set_ID_sw_zero
fv_ID=0
return
#deffunc local x_var_search_init str _p_name,int _p_ID,i...
loc_r=var_search_from_ID_non_error_mes(_p_ID)
if loc_r==-1{
newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value
fv_ID++
return
}
dialog "your ID already rgst:"+_p_ID,1
return
#deffunc local x_var_init str _p_name,int _p_ID,int _p_v...
newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value
; mes get_i_ID@mod_variable(o_var.fv_ID)
fv_ID++
return
#defcfunc local var_search_from_ID_non_error_mes int _3p...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_variable(o_var.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
return -1
#defcfunc local var_search_from_ID int _3p_ID,local loc_...
for loc_i,0,fv_ID,1
loc_get_index=get_i_ID@mod_variable(o_var.loc_i)
; mes "ID"+get_i_ID@mod_variable(o_var.loc_i)
if loc_get_index==_3p_ID:return loc_i
next
dialog "don't find from varID"+_3p_ID,1
return -1
#defcfunc local is_hit_after_var_search str _4p_name,int...
if _4p_i==-1:return -1
rr_name=get_i_name@mod_variable(o_var._4p_i)
if rr_name==_4p_name:return 1
dialog "don't hit from varID"+_4p_i,1
; dialog ""+rr_name,1
return -1
#deffunc local set_x_var_value str _p3c_name,int _p3c_ID...
loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_...
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_var_value@variable_manage _p3c_name,loc_sch...
}
}
return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p...
r_name=get_i_name@mod_variable(o_var.__p_ID)
if r_name!=__p_name:return -1
return get_i_v_value@mod_variable(o_var.__p_ID)
#deffunc local pre_set_x_var_value str __p_name,int __p_...
r_name=get_i_name@mod_variable(o_var.__p_ID)
logmes ""+__p4set
logmes ""+r_name
if r_name!=__p_name:return -1
set_i_v_value@mod_variable o_var.__p_ID,__p4set
return
#defcfunc local get_x_var_value str __p_name,int _p3b_ID...
loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
loc_hit=is_hit_after_var_search@variable_manage(__p_nam...
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_var_value@variable_manage(__p_name,l...
}
}
return -1
#deffunc local dump
dump@mod_variable o_var.0
dump@mod_variable o_var.1
return
#global
dim pc_stack,500
n_pc_stack=0
hoge_pc=1
dim num_stack,500
repeat length(num_stack)
num_stack.cnt=-1
loop
// line search のみ有効
flag_on_do=0
flag_on_line_search=1
flag_on_label_search=0
#define ctype l_avoid(%1) goto *l_a_%1
#define ctype catch_l_avoid(%1)*l_a_%1
#define ctype l_def(%1)*l_def_%1
#define ctype l_def_go(%1) *l_def_%1
#define switch_set_B my_pc_B
#define eq_B(%1) case %1:my_pc_B++:
#define eq_B_one(%1,%2) case %1:my_pc_B++:%2:goto *sw_be...
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:%2:goto *sw_begin:case %1+1:my_pc_B++:...
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:%2:goto *sw_begin:case %1+1:my_pc_B++:...
case %1+2:my_pc_B++:%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *...
;goto *l_def_A
;goto l_def(A)
;l_def(E):
;*l_def_B
;x_label_init@mod_label 1,"a",1 ;0
;x_label_init@mod_label 0,"aa1",11 ;1
;x_label_init@mod_label 0,"ab1",13 ;2
;x_label_init@mod_label 0,"ax1a",15 ;3
dim one_code,256
x=0
f_stop=0
// ボタンによって選択される選択肢のID
selected_btnext="a"
#enum nop=0
#enum en_get_my_label
#enum en_button_A
#enum en_button_B
#enum en_cls0
#enum en_objsize
#enum en_pos
#enum en_mes
#enum en_stop
#enum en_goto
#enum en_calc
my_pc=1
my_pc_B=1
flag_on_l_search=1
goto *@f
*search_l_end
flag_on_l_search=0
goto *sw_begin
*@
flag_on_line_search=1
if 0{
*count_b
flag_on_line_search=0
flag_on_label_search=1
flag_on_do=0
label_pc=1
}
if 0{
*count_c
flag_on_line_search=0
flag_on_label_search=0
flag_on_do=1
cmd_pc=1
}
*sw_begin
await 1
; logmes "BEGIN"
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
pc_stack.hoge_pc=my_line:hoge_pc++
}
return
*sbr_lab_search
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:goto *sw_begin }// label
}
}
return
*sbr_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
if cmd_pc==num_stack.my_line{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:goto *sw_begin
}
}
return
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return
*sbr_end
// case 1:
// def label
my_line=int(__LINE__)
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{ logmes "途中A"
switch my_pc_B
eq_B_three 1,cp1="a",cp2=1,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
eq_B 5:logmes "途中B":my_pc_B=1:label_pc++:goto *sw...
swend
}
}
; gosub *flag_clear
// case 2:
// cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
logmes "途中inE2"
if my_pc_B==1:cr_com=en_cls0:cmd_fin
}
}
// case 3:
// objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=120,cp2=24
eq_B 3:cr_com=en_objsize:cmd_fin
swend
}
}
// case 4:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
logmes "inE4"
switch my_pc_B
eq_B_two 1,cp1="aa1",cp2=11
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// button
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
logmes "inE5"
switch my_pc_B
eq_B 4:cp1="X足す1":goto *sw_begin
eq_B 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
// case 5:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="ab1",cp2=12
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// button
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 4:cp1="X引く1":goto *sw_begin
eq_B 5:bt_pc_2=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_B:cmd_fin
swend
}
}
// case 6:
// pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=150,cp2=0
eq_B 3:cr_com=en_pos:cmd_fin
swend
}
}
// case 7:
// mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 1:cp1="ボタンを押してください":goto *sw_begin
eq_B 2:cr_com=en_mes:cmd_fin
swend
}
}
// case 8:
// stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==1:cr_com=en_stop:cmd_fin
}
}
// case 9:"aa1"
// def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 1,cp1="aa1",cp2=11,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
swend
}
if label_pc==num_stack.my_line{
;x_var_search_init@variable_manage "x",1,2
switch my_pc_B
eq_B_three 5,cp1="x",cp2=10,cp3=0
eq_B 8:x_var_search_init@variable_manage cp1,cp2,cp3...
swend
}
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 9,cp1="y",cp2=20,cp3=0
eq_B 12:x_var_search_init@variable_manage cp1,cp2,cp3
my_pc_B=1:label_pc++:goto *sw_begin
swend
}
}
// case 10:
// calc
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="x",cp2=10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B_two 4,cp1="y",cp2=20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)...
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
}
// 演算
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 7:reg3=reg1+1:goto *sw_begin
eq_B 8:reg2+=2:goto *sw_begin
eq_B 9:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
}
// 代入
if flag_on_do==1{
; set_x_var_value@variable_manage "x",1,v1
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 10,cp1="x",cp2=10,cp3=reg3
eq_B 13:set_x_var_value@variable_manage cp1,cp2,cp3:...
swend
switch my_pc_B
eq_B_three 14,cp1="y",cp2=20,cp3=reg2
eq_B 17:set_x_var_value@variable_manage cp1,cp2,cp3:
logmes "通過check B":cmd_fin
swend
}
}
// case 11:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="ax1a",cp2=21
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// goto
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==4:logmes ""+my_label:cp1=my_label:cr_com=...
}
}
// case 12:"ab1"
// def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 1,cp1="ab1",cp2=12,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
eq_B 5:my_pc_B=1:label_pc++:goto *sw_begin
swend
}
}
// case 13:
// calc
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="x",cp2=10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B_two 4,cp1="y",cp2=20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)...
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
}
// 演算
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 7:reg3=reg1-1:goto *sw_begin
eq_B 8:reg2-=2:goto *sw_begin
eq_B 9:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
}
// 代入
if flag_on_do==1{
; set_x_var_value@variable_manage "x",1,v1
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 10,cp1="x",cp2=10,cp3=reg3
eq_B 13:set_x_var_value@variable_manage cp1,cp2,cp3:...
swend
switch my_pc_B
eq_B_three 14,cp1="y",cp2=20,cp3=reg2
eq_B 17:set_x_var_value@variable_manage cp1,cp2,cp3:
logmes "通過check B"
my_pc_B=1:cmd_pc++:goto *sw_begin
swend
}
}
// case 14
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="ax1a",cp2=21
eq_B 3:cr_com=en_get_my_label:cmd_fin
swend
}
}
// goto
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==4:logmes ""+my_label:cp1=my_label:cr_com=...
}
}
// case 15:"ax1a"
// def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_do
if flag_on_label_search==1{
if label_pc==num_stack.my_line{
switch my_pc_B
eq_B_three 1,cp1="ax1a",cp2=21,cp3=label_pc
eq_B 4:x_label_search_init@label_manage cp1,cp2,cp3:...
eq_B 5:my_pc_B=1:label_pc++:goto *sw_begin
swend
}
}
// case 16
// cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==1:cr_com=en_cls0:cmd_fin
}
}
// case 17
// objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=120,cp2=24
eq_B 3:cr_com=en_objsize:cmd_fin
swend
}
}
// case 18
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
// read label
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="a",cp2=1
eq_B 3:cr_com=en_get_my_label:
goto *com_sw: goto *sw_begin
swend
}
}
// button
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B 4:cp1="NEXT":goto *sw_begin
eq_B 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
// case 19
// pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1=150,cp2=0
eq_B 3:cr_com=en_pos:cmd_fin
swend
}
}
// case 20
// mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
switch my_pc_B
eq_B_two 1,cp1="x",cp2=10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B_two 4,cp1="y",cp2=20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)...
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
}
// case 21
// stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_lab_search
if flag_on_do==1{
if cmd_pc==num_stack.my_line{
if my_pc_B==1:cr_com=en_stop:cmd_fin
}
}
//if flag_on_label_search==1:mes 6:goto *_2do
// pc_stack dump
if flag_on_line_search==1{
mes "dump"
repeat 30
logmes ""+cnt+" "+pc_stack.cnt
loop
repeat 30
if pc_stack.cnt!=0{
num_stack(pc_stack.cnt)=cnt
}
loop
repeat 500
logmes ""+cnt+":"+num_stack.cnt
loop
}
;mes 6
; goto *sw_begin
;}
if flag_on_line_search==1{
; logmes "B"
goto *count_b
}
if flag_on_label_search==1{
goto *count_c
}
mes "stop"
stop
*com_sw
switch cr_com
case en_get_my_label: my_label=get_x_label_value@label_m...
case en_button_A: button cp1,*bt_hoge_1:swbreak
case en_button_B: button cp1,*bt_hoge_2:swbreak
case en_cls0: cls 0:swbreak
case en_objsize:objsize cp1,cp2:swbreak
case en_pos: pos cp1,cp2:swbreak
case en_mes: mes ""+cp1:swbreak
case en_stop: f_stop=1:swbreak
case en_calc: goto *sw_begin
case en_goto: cmd_pc=cp1:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*get_my_label
my_label=get_x_label_l_value@mod_label(cp1,cp2)
; my_label=get_x_label_l_value@mod_label("a",0)
goto *sw_begin
*bt_hoge_1
; mes my_pc
; mes bt_pc_1
cmd_pc=bt_pc_1
goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2
goto *sw_begin
*sw_end
stop
ページ名: