08670
電霊 BBS

このBBSは 電子の言霊 に関する 意見、質問、感想、ソフトの不具合報告
などを書き込む場所です。なんでも思った事を書き込んで行ってください。雑談なんかも歓迎です!

投稿の際 ふさわしいトピックが無い場合は
新規投稿から書き込みをしてください。新しくトピックが作られます。

自分も相手も嫌な気持ちにならないよう心がけましょう。



No.190 BBS設定変更履歴 Date: 2010/03/28(日) 03:39
Name :tyty  n77FM8/c.M  HOME MAIL [このトピックに書き込む]
 
BBSの設定変更内容を記載するスレッドです
何か変更がある度追記して行きます。
 

このBBSの制限(レンタル元サイトからの抜き出し)
投稿ファイルサイズ :1MB ※1記事当たり
記事保存件数 :5,000件 ※親記事・子記事を合わせた数
1トピック当たり返信数 :100件
ファイル保存件数 :2,000件 ※ファイル保存件数を超えた場合は、
古い記事のファイルから削除されていきます
最大本文文字数 :全角50,000文字

No.716 RE:BBS設定変更履歴 Date: 2018/05/08(火) 20:32
Name :tyty  ilaTHlqVlk  HOME
BBSの色見を微妙に変更。
僅かに青を強めに。

No.710 RE:BBS設定変更履歴 Date: 2017/01/07(土) 02:35
Name :tyty  nJ2XUER0vw  HOME MAIL
BBSの以下の内容を変更しました。

・pre タグ内で @ を使うとメールアドレスにリンクが張られる

pre タグ内に HSP のスクリプトを記載する際に、
モジュール空間を表す @(アットマーク)が現れると、
その文字列がメールアドレスと認識されリンクが張られていましたが、
リンクされると文字色が変わり視認性が悪くなるので、
Javascript で簡易的に対策してみました。

機能するのは PC 閲覧時で、
Javascript が ON の場合だけですが。

もう少し発展させたら HSP のコードハイライトも出来るかも?

No.474 pre タグ時の改行付加への対策 Date: 2015/03/17(火) 09:17
Name :tyty  nJ2XUER0vw  HOME MAIL
・pre タグ内で改行が1つ増えてしまう事象を対策

この掲示板では文章の改行位置に自動的に br タグが付加されるみたいで、pre タグ内でもその例外に漏れず、プレーンテキストとしての改行の他に br としての改行も足されるため、改行がダブってしまう問題がありました。

今までは見た目の上だけはスタイルシートでバランスを取っていたため問題ないように見せていたけど、実は pre タグ内に書かれたスクリプトをコピーした時は全ての行に1つ余分に改行が入ってしまってました。

それをコピーする度に毎回取り除くのも大変なので何とかならないかと思っていたんだけれども、別件で調べ物をしてた時見つけたやり方をそのまま適用すれば解決するんじゃ?と思いつきで試してみたら、いとも簡単に出来てしまいました!これで余分な改行からおさらばです!


具体的にやったことはスタイルシートで pre 内の br 要素に対し display で none を指定し非表示にしているだけですが、検索して、初めて br に対してスタイルを指定するアイディアを見た時は目からうろこ状態でしたね。

No.460 RE:BBS設定変更履歴 Date: 2015/01/17(土) 21:19
Name :tyty  nJ2XUER0vw  HOME MAIL
ソースが少し見づらかったので、
pre 使用時の見た目を少し変更しました。

・フォントを等幅にした(むしろなぜ今までしてなかった…)
・行間を少し広げた
・文字間を少し狭めた。

2015/01/18 追記:
全角と半角が混ざっている時に等幅にならなかったのを修正。
どうやらスタイルに letter-spacing を使ってたのが問題だった見たい。
半角2文字で全角1文字分だけど、文字間スペースの数は半角2文字で2つに、全角1文字で1つになるから、その差の1つずつズレて来るのかも。

No.419 RE:BBS設定変更履歴 Date: 2014/12/03(水) 20:19
Name :tyty  nJ2XUER0vw  HOME MAIL
掲示板の表示に関する設定を変更。

・カウンタ表示を画像にする設定に変更
・ツリーの表示の見た目を変更
・次へリンクの表示のしかたを変更
・スレッド表記の箇所をトピックと表示する用に変更
・返信リンクの文言変更
・トピック表示時のテーブルヘッダの表示名変更
・小記事のタイトル部分の表示ズレ修正
・トピック表示のテーブル内の見た目


2015/02/02追記:
URLに自動的にリンクを張る数を
99個までに変更してたのを記載し忘れ。

No.353 RE:BBS設定変更履歴 Date: 2011/11/18(金) 22:48
Name :tyty  nJ2XUER0vw  HOME MAIL
BBSのタイトル画像をまた微妙に変更。
少し斜を付けて奥行き感を演出(^^)

記事の下の方にある
「前のページを戻る」、「掲示板TOPヘ」ボタンのサイズが小さくて
文字が見切れていたのでボタンの横幅を少し大きめにCSSを設定。

No.298 RE:BBS設定変更履歴 Date: 2011/04/30(土) 01:57
Name :tyty  nJ2XUER0vw  HOME MAIL
久しぶりに掲示板のスタイルシート設定を変えてみました。
といって3箇所だけですけど。

・記事の背景色を変更
  字が少し読みにくいと思ったので背景色を少し暗くして、
  文字とのコントラストを微妙に上げてみた。

・記事の文字色を変更
  下地とのコントラストが高すぎても目が痛いので、
  背景色変更に合わせ文字色も微妙に調整。

・記事の文字サイズを変更
  字が読みにくいかなと思ったので、
  文字サイズを少し大きくしてみた。

以上変更点でした。

No.274 RE:BBS設定変更履歴 Date: 2011/02/14(月) 19:49
Name :tyty  nJ2XUER0vw  HOME MAIL
> あと「この記事を引用する」も機能してないご様子。
> 一難去ってまた一難。

いつの間にか引用できるようになってました。
それとも勘違いだったのかしら?。

本文の文字制限がいつの間にか
全角50000文字まで投稿可能になっているようです。
そんなに文字打てないよね。。。

No.213 RE:BBS設定変更履歴 Date: 2010/05/12(水) 19:00
Name :tyty  n77FM8/c.M  HOME MAIL
> でも返信時は全部表示するんですねw
> 全部見たい時はちょい返信ボタン押す仕様ですか?

これはBBS自体の仕様なので変えれませんでした。
というか設定項目自体なかった。
あと「この記事を引用する」も機能してないご様子。
一難去ってまた一難。

No.209 RE:BBS設定変更履歴 Date: 2010/04/24(土) 17:55
Name :y.tack  7SM67tY6bA  HOME
最近、GAMEはホンマにブラウザ三国志のみのy.tackです
煙草3本くらい吸わないとゲーム機の電源入れる気おきないんです

>> こんばんわ。いれたてのコーヒーをこぼして
>> 火傷したy.tackです
>大丈夫でしたか?流水で冷やすと良いらしいですよ?
>私はいつも水で淹れてるので(インスタントコーヒー)
>やけどの心配はナッシングです(^^)
>でもこないだマウスにマミーをこぼして以来マウスがペタペタです。。。
よくわかんないですけど
濡らした軍手はいてました
手の皮もむけました
ちょっと跡残るか残らないかの境目ですw
いやマジあつかったです

>> > 1トピック内の最大表示記事数を4までに設定
>> この設定ありがたいですね
>自分でもやっと来たーって感じでしたね。
でも返信時は全部表示するんですねw
全部見たい時はちょい返信ボタン押す仕様ですか?

No.203 RE:BBS設定変更履歴 Date: 2010/04/12(月) 21:43
Name :tyty  n77FM8/c.M  HOME MAIL
今晩は。

> こんばんわ。いれたてのコーヒーをこぼして
> 火傷したy.tackです

大丈夫でしたか?流水で冷やすと良いらしいですよ?
私はいつも水で淹れてるので(インスタントコーヒー)
やけどの心配はナッシングです(^^)
でもこないだマウスにマミーをこぼして以来マウスがペタペタです。。。

> 個人的にはカウンタの上にあったシンボルが移動したのが嬉しいです

これは、
何故かアクセス解析を2つ入れてあるんですが(笑)
その2つのバナーの出る位置を入れ替えました。
多分その影響だと思います。

> > 1トピック内の最大表示記事数を4までに設定
> この設定ありがたいですね

自分でもやっと来たーって感じでしたね。

> 10とかじゃなくて4なのもミソですな

5か6でも良かったんですけど、察しの通り少なめにしてみてます。
今後の状況によって増えるかもしれませんが暫くこれで様子見です。

No.195 RE:BBS設定変更履歴 Date: 2010/04/03(土) 18:34
Name :y.tack  7SM67tY6bA  HOME
こんばんわ。いれたてのコーヒーをこぼして
火傷したy.tackです

設定変えたんですね
個人的にはカウンタの上にあったシンボルが移動したのが嬉しいです
キリバンだと嫌なので割とカウンタ見てるんです
なのにカウンタの上にシンボルがあるというw

>トピック内1ページ表示記事数
> 1トピック内の最大表示記事数を4までに設定
この設定ありがたいですね
これでもう返信が多くなってきたのでカキコミ新規作成
とか気にしないでよくなりましたね
でも全部表示されるのは
たまに全部読みたくなって
そういう作用もありました
10とかじゃなくて4なのもミソですな
(ミソ。ミソ。ミソ。)
お互いレスが長いの現象ですねw

No.191 RE:電霊BBSの設定変更のお知らせ Date: 2010/03/28(日) 04:02
Name :tyty  n77FM8/c.M  HOME MAIL
レンタル元のBBSプログラム更新により、
色々と機能が拡張されてたので、その分の設定を変更しました。

投稿の際の文字制限の緩和。
 題名=50文字まで(全角で)
 本文=10000文字まで(全角で)
 名前=20文字まで(全角で)

本文リンクの数
 最大リンク済みURL=10個まで
 (本当は99個まで行けるみたいだけど流石に多いので取り敢えず10に設定)

返信フォームの移動
 返信時の書き込み欄を最上部に移動

1ページ表示記事数
 表示トピックを1ページに付き8つまでに設定(これは前から出来た)

トピック内1ページ表示記事数
 1トピック内の最大表示記事数を4までに設定

トピック表示時最終投稿者名の表示(PC版)
 新しく投稿した場合のみ有効の様子。

No.620 必殺!チラウラスレver0.4 Date: 2016/01/19(火) 21:27
Name :Y_repeat  7SM67tY6bA  HOME [このトピックに書き込む]
y.tackがチラウラとして
どうでもいいことを(本人にとっては大事)
延々と垂れ流すスレです
現在は簡易プログラム言語作成と簡易エディタ作成がテーマです

TrackBackスレ ver 0.1
http://dentama.1616bbs.com/bbs/dentama_topic_pr_148.html

必殺!チラウラスレver0.2
http://dentama.1616bbs.com/bbs/dentama_topic_pr_406.html


必殺!チラウラスレver0.3
http://dentama.1616bbs.com/bbs/dentama_topic_pr_502.html

新年を迎えたこともあってスレを立てました
前のスレは81レスあったみたいですが
81は良い数字っぽくて
いいかんじですw

No.715 RE:必殺!チラウラスレver0.4 Date: 2017/05/10(水) 00:17
Name :Y_repeat  Rv3tJps6PA  HOME
pythonは人工知能機能強くて活用してみたいんですよねー
cで書いたらpythonから扱えないかな?w
pythonもtcl/tk機能強いからねー

No.714 RE:必殺!チラウラスレver0.4 Date: 2017/05/10(水) 00:09
Name :Y_repeat  Rv3tJps6PA  HOME
基本Cでやる方向ですw
tcl/tkと相性いいのでw

コマンド列挙だけ移植してみましたw

void init_command_const(void){
const short int const_nop = 0;
const short int const_get_my_label = 1;
const short int const_get_from_var = 2;
const short int const_set_to_var = 3;
const short int const_button_A = 4;
const short int const_button_B = 5;
const short int const_cls0 = 6;
const short int const_objsize = 7;
const short int const_pos = 8;
const short int const_mes = 9;
const short int const_stop = 10;
const short int const_goto = 11;
const short int const_jz = 12;
const short int const_jnz = 13;
const short int const_calc = 14;
const short int const_do_calc = 15;

const short int const_add = 101;
const short int const_sub = 102;
const short int const_mul = 103;
const short int const_div = 104;
const short int const_mod = 105;
const short int const_eqadd = 106;
const short int const_eqsub = 107;
const short int const_eqmul = 108;
const short int const_eqdiv = 109;
const short int const_eqmod = 110;

const short int const_bool = 111;
const short int const_and = 112;
const short int const_or = 113;
const short int const_xor = 114;
const short int const_eq = 115;
const short int const_small= 116;
const short int const_big = 117;
const short int const_not = 118;
const short int const_smaller = 119;
const short int const_bigger = 120;
const short int const_eqnot = 121;
const short int const_L_shift = 122;
const short int const_R_shift = 123;
return;
}
#include
int main(void){
init_command_const();
printf("Hello world!");
return 0;
}


No.713 RE:必殺!チラウラスレver0.4 Date: 2017/05/08(月) 00:11
Name :Y_repeat  Rv3tJps6PA  HOME
こんばんわ こっちではお久しぶりw

自作簡単言語の作成が停滞している原因がわかりました

中間言語とかいいつつ 構文木形式にした方がいいのではないのか?みたいなw

中間言語の中に if文とか入ってるので 構文木形式の方が良さそう

とはいえ 構文木を視野に入れると 本格的に HSPは向いてないかな。と

プログラム言語は何を視野に入れようか思案中でございます

CかC++かpythonがとりあえずの候補w

No.712 RE:必殺!チラウラスレver0.4 Date: 2017/01/23(月) 05:04
Name :Y_repeat  Rv3tJps6PA  HOME
久しぶりに更新しました
中規模的に方針変えたんですけど
サンプルAAだけ大体動きます

ただ、ラベル変数が機能してないっすw
デバッグも大変そうだー

No.706 RE:必殺!チラウラスレver0.4 Date: 2017/01/03(火) 00:51
Name :Y_repeat  Rv3tJps6PA  HOME
tytyさん。皆さん。あけましておめでとうございます
自分も年が明けて 視界が開けたかんじがします

という訳で本年 一つめの投稿
自分のソースコードを書写してたら書きたくなってきて書いたんですよね

FILE_IF_04.hspのみ更新w

;#include "no_6x_subr_var_label_manage.hsp"
#module mod_label4koubunn i_is_live,i_name,i_ID,i_l_value,i_is_label,i_label
;i_is_live 作ってあるか使う可能性があるならさっさと作ってこれだけでもいれておけw
;i_nameラベル変数の名前
;i_IDラベル変数のID
;i_l_valueラベル変数の値、コマンド番号を格納する(だったようなw)
;i_is_label ラベルを入れてあるか使う可能性があるならさっさと作っていれておけw
;i_label ラベルの値
#modinit
i_is_live=-1
i_is_label=-1
return
#modfunc local init str p_name,int p_ID,int p_l_value
i_is_live=1
i_name=p_name
i_ID=p_ID
i_l_value=p_l_value
return
#modfunc local init_label var p_label
i_is_label=1
i_label=p_label
return
;getter
#modcfunc local get_i_is_live
return i_is_live
#modcfunc local get_i_is_label
return i_is_label
#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 get_i_label var _p_rvar
_p_rvar=i_label
return
#modfunc local set_i_l_value var _p4set_value
i_l_value = _p4set_value
return
#modfunc local dump
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
return
#global

#define mo_IF sys_is_obj_IF, sys_obj_IF
#define mo_then sys_is_obj_then, sys_obj_then
#define mo_else sys_is_obj_else, sys_obj_else
#define mo_IF_end sys_is_obj_IF_end, sys_obj_IF_end
// ↓モジュール配列として使う予定
#define mo_elsif sys_is_obj_elsif,sys_obj_elsif

#module module_IF obj_IF_NO,obj_IF_name,sys_is_obj_IF, sys_obj_IF
#modinit int _p_no,str _p_name
obj_IF_NO=_p_no
obj_IF_name=_p_name
sys_is_obj_IF = -1
sys_is_obj_block = -1
sys_is_obj_then = -1
sys_is_obj_else = -1
sys_is_obj_elsif.0 = -1
sys_is_obj_IF_end = -1
return
// IF 記述
#modfunc local make_obj_IF
newmod sys_obj_IF,mod_label4koubunn;,obj_IF_NO,obj_IF_name
is_many_obj_IF = 1
return
#modfunc local set_sys_obj_IF int p_lab_lin
init@mod_label4koubunn sys_obj_IF,"name_sys_obj_if",obj_IF_NO,p_lab_line
return
#global

#module module_then obj_then_NO,obj_then_name,sys_is_obj_then, sys_obj_then
#modinit int _p_no,str _p_name
obj_then_NO=_p_no
obj_then_name=_p_name
sys_is_obj_then = -1
return
// then 記述
#modfunc local make_obj_then
newmod sys_obj_then,mod_label4koubunn;,obj_IF_NO,obj_IF_name
is_many_obj_IF = 1
return
#modfunc local set_sys_obj_then int p_lab_lin
init@mod_label4koubunn sys_obj_then,"name_sys_obj_rhen",obj_IF_NO,p_lab_line
return
#global

#module module_else obj_else_NO,obj_else_name,sys_is_obj_else, sys_obj_else
#modinit int _p_no,str _p_name
obj_else_NO=_p_no
obj_else_name=_p_name
sys_is_obj_else = -1
return
// else 記述
#modfunc local make_obj_else
newmod sys_obj_else,mod_label4koubunn;,obj_IF_NO,obj_IF_name
is_many_obj_else = 1
return
#modfunc local set_sys_obj_else int p_lab_lin
init@mod_label4koubunn sys_obj_else,"name_sys_obj_else",obj_IF_NO,p_lab_line
return
#global

#module module_elsif obj_elsif_NO,obj_elsif_name,sys_is_obj_elsif, sys_obj_elsif
#modinit int _p_no,str _p_name
obj_elsif_NO=_p_no
obj_elsif_name=_p_name
sys_is_obj_elsif = -1
return
// elsif 記述
#modfunc local make_obj_elsif
newmod sys_obj_elsif,mod_label4koubunn;,obj_IF_NO,obj_IF_name
is_many_obj_elsif = 1
return
#modfunc local set_sys_obj_elsif int p_lab_lin
init@mod_label4koubunn sys_obj_elsif,"name_sys_obj_elsif",obj_IF_NO,p_lab_line
return
#global

#module module_IF_end obj_IF_end_NO,obj_IF_end_name,sys_is_obj_IF_end, sys_obj_IF_end
#modinit int _p_no,str _p_name
obj_IF_end_NO=_p_no
obj_IF_end_name=_p_name
sys_is_obj_IF_end = -1
return
// IF_end 記述
#modfunc local make_obj_IF_end
newmod sys_obj_IF_end,mod_label4koubunn;,obj_IF_NO,obj_IF_name
is_many_obj_IF_end = 1
return
#modfunc local set_sys_obj_IF_end int p_lab_lin
init@mod_label4koubunn sys_obj_IF_end,"name_sys_obj_IF_end",obj_IF_NO,p_lab_line
return
#global


// IF 記述
newmod first_if,module_IF,1,"obj_1st_if"
make_obj_IF@module_IF first_if
tmp_lab_line=10
set_sys_obj_IF@module_IF first_if,tmp_lab_line

// then 記述
newmod first_then,module_then,1,"obj_1st_then"
make_obj_then@module_then first_then
tmp_lab_line=20
set_sys_obj_then@module_then first_then,tmp_lab_line

// else 記述
newmod first_else,module_else,1,"obj_1st_else"
make_obj_else@module_else first_else
tmp_lab_line=30
set_sys_obj_else@module_else first_else,tmp_lab_line

// elsif_01 記述
newmod first_elsif,module_elsif,1,"obj_1st_elsif_01"
make_obj_elsif@module_elsif first_elsif.0
tmp_lab_line=40
set_sys_obj_elsif@module_elsif first_elsif.0,tmp_lab_line

// elsif_02 記述
newmod first_elsif,module_elsif,1,"obj_1st_elsif_02"
make_obj_elsif@module_elsif first_elsif.1
tmp_lab_line=50
set_sys_obj_elsif@module_elsif first_elsif.1,tmp_lab_line

// elsif_03 記述
newmod first_elsif,module_elsif,1,"obj_1st_elsif_03"
make_obj_elsif@module_elsif first_elsif.2
tmp_lab_line=60
set_sys_obj_elsif@module_elsif first_elsif.2,tmp_lab_line

// IF_end 記述
newmod first_IF_end,module_IF_end,1,"obj_1st_IF_end"
make_obj_IF_end@module_IF_end first_IF_end
tmp_lab_line=30
set_sys_obj_IF_end@module_IF_end first_IF_end,tmp_lab_line
// IF end 記述
;make_obj_IF_end first_if_end
;set_sys_obj_IF_end@module_IF first_if_end,tmp_lab_line
/*
#modfunc local init str p_name,int p_ID,int p_l_value
i_is_live=1
i_name=p_name
i_ID=p_ID
i_l_value=p_l_value
return
/*
#define o_IF is_obj_if, obj_if
#define o_IF_end is_obj_if_end, obj_if_end
#module module_obj_IF sub_obj_IF_NO,sub_obj_IF_name, o_if,o_if_end
*sys_tmp_label
#modinit int _p_no,str _p_name
sub_obj_IF_NO=_p_no
sub_obj_IF_name=_p_name
is_obj_if=-1
is_obj_if_end=-1
return
#modfunc local make_obj_if int _p_lab_line
tmp_label_var=*sys_tmp_label
// newmod obj_if,mod_label,sub_obj_IF_name,sub_obj_IF_NO,_p_lab_line,tmp_label_var
is_many_obj_IF = 1
return
#global
#modfunc local make_obj_if int _p_lab_line
newmod obj_if,mod_label,sub_obj_IF_name,sub_obj_IF_NO,_p_lab_line,*sys_tmp_label
is_many_obj_IF = 1
return
if block then
とか書きたい
elsifは急いで実装しなくてもいい気がw
制御構文はモジュール変数にしようw

if block hoge block_end then
if goto *block

if_block〜if_block_end
goto *then
then:goto *els

then_end goto *if_end
else

end_else goto *if_end
if_end
順に実行してthenの部分で条件分岐


No.705 RE:必殺!チラウラスレver0.4 Date: 2016/10/09(日) 20:20
Name :Y_repeat  7SM67tY6bA  HOME
IF文の実装にはいりますよー(とうとうw)
とりあえずモジュール変数列挙しただけw


#include "no_6x_subr_var_label_manage.hsp"
#define o_IF is_obj_if, obj_if
#define o_IF_end is_obj_if_end, obj_if_end
#module module_obj_IF sub_obj_IF_NO,sub_obj_IF_name, o_if,o_if_end
#global

#define o_if_block is_obj_if_block, obj_if_block
#define o_if_block_end is_obj_if_block_end, obj_if_block_end
#module module_obj_block sub_obj_block_NO,sub_obj_block_name, o_if_block,o_if_block_end
#global

#define o_then is_obj_then, obj_then
#define o_then_end is_obj_then_end, obj_then_end
#module module_obj_then sub_obj_then_NO,sub_obj_then_name, o_then,o_then_end
#global

#define o_else is_obj_else, obj_else
#define o_else_end is_obj_else_end, obj_else_end
#module module_obj_else sub_obj_else_NO,sub_obj_else_name, o_else,o_else_end
#global

#define o_elsif is_obj_elsif, obj_elsif
#define o_elsif_end is_obj_elsif_end, obj_elsif_end
#define o_other_elsif is_other_elsif, other_elsif_body
#module module_obj_elsif sub_obj_elsif_NO,sub_obj_elsif_name, o_elsif,o_elsif_end,o_other_elsif
#global

#define mo_IF is_many_obj_IF, many_obj_IF
#define mo_block is_many_obj_block,many_obj_block
#define mo_then is_many_obj_then, many_obj_then
#define mo_else is_many_obj_else, many_obj_else
#define mo_elsif is_many_obj_elsif,many_obj_elsif
#module module_IF obj_IF_NO,obj_IF_name,mo_IF,mo_bleck,mo_then,mo_else,mo_elsif

#global


ifndefつけないとw

;#include "init.hsp"
#ifndef ifdef_varlab_man
#define ifdef_varlab_man 1

#module mod_label i_name,i_ID,i_l_value,i_label
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,int p_l_value,var p_label
; sdim i_name,500
; sdim i_ID,500
; sdim i_l_value,500
i_name=p_name
i_ID=p_ID
i_l_value=p_l_value
i_label=p_label
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 get_i_label var _p_rvar
_p_rvar=i_label
return
#modfunc local set_i_l_value var _p4set_value
i_l_value = _p4set_value
return
#modfunc local dump
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
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,int _p_l_value,var _p_label,local loc_r
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,_p_label
fv_ID++
return
}
dialog "your ID already rgst:"+_p_ID,1
return
#defcfunc local label_search_from_ID_non_error_mes int _3p_ID,local loc_i,local loc_get_index
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 loc_i,local loc_get_index
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,int _4p_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
#deffunc local pre_get_x_label_value str __p_name,int __p_ID,var __p_r1,var __p_r2,local r_name
r_name=get_i_name@mod_label(o_label.__p_ID)
if r_name!=__p_name:return -1
__p_r1=get_i_l_value@mod_label(o_label.__p_ID)
get_i_label@mod_label o_label.__p_ID,__p_r2
return 1
#deffunc local get_x_label_value str __p_name,int _p3b_ID,var _p3_r1,var _p3_r2,local loc_sch,local loc_hit
loc_sch=label_search_from_ID@label_manage(_p3b_ID)
loc_hit=is_hit_after_label_search@label_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
pre_get_x_label_value@label_manage __p_name,loc_sch,_p3_r1,_p3_r2
return
}
}
return -1
#deffunc local pre_set_x_label_value str __p_name,int __p_ID,var __p4set,local r_name
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_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
loc_hit_b=is_hit_after_label_search@label_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_label_value@label_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#deffunc local dump
logmes "log"
repeat fv_ID
dump@mod_label o_label.cnt
loop
logmes ""+fv_ID
logmes ""+label_pc@
return
#deffunc local output
sdim _4note_l_op,64000
_4note_l_op=""
_4op=""
notesel _4note_l_op
repeat fv_ID
get4op@mod_label o_label.cnt,_4op
_4note_l_op+=""+_4op+"\n"
loop
notesave output_label_FILE_NAME
noteunsel
sdim _4note_l_op,1
return

;#modfunc local dump
;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 get_v4op var p_r
p_r=""+v_i_ID+":"+v_i_name+":"+v_i_v_value
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,int _p_v_value,local loc_r
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_value
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_ID,local loc_i,local loc_get_index
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_i,local loc_get_index
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 _4p_i
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,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_var_value@variable_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p_ID,local r_name
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_ID,var __p4set,local r_name
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,local loc_sch,local loc_hit
loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
loc_hit=is_hit_after_var_search@variable_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_var_value@variable_manage(__p_name,loc_sch)
}
}
return -1
#deffunc local dump
; dump@mod_variable o_var.0
; dump@mod_variable o_var.1
return
#deffunc local output
sdim _4note_v_op,64000
_4note_v_op=""
_4op=""
notesel _4note_v_op
repeat fv_ID
get_v4op@mod_variable o_var.cnt,_4op
_4note_v_op+=""+_4op+"\n"
loop
notesave output_variable_FILE_NAME
noteunsel
return
#global
#endif


No.704 RE:必殺!チラウラスレver0.4 Date: 2016/10/09(日) 18:19
Name :Y_repeat  7SM67tY6bA  HOME
マクロを使って上手いこと変数に代入しつつ引数として渡せましたw
reg_sys_p1 reg_sys_p2はsystemとして中身変わるかもしれないレジスタもどきってことでw
reg_xxxはレジスタもどきにする予定w

main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// line search のみ有効
flag_on_do=0
flag_on_line_search=1
flag_on_label_search=0

// blockの先頭に飛びたい時このflagをon(よそのblockの中身を実行しなくなる)
flag_at_search_block_begin=0
// blockの終わりに飛びたい時このflagをon(よそのblockの中身を実行しなくなる)
flag_at_search_block_end=0

goto *@f
#defcfunc block_enable
if flag_at_search_block_begin==0&&flag_at_search_block_end==0:return 1
return 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_ldef_four_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4}:\
if my_pc_B==(%1+5){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
;#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
;#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))

#define set_my_line my_line=int(__LINE__)
#define goto_global_lp if is_jump_p==1:is_jump_p=0:goto global_label

goto *subr_avoid
#deffunc deff_set_my_line int p_line
my_line=p_line
return
#deffunc any_moto int _p_line
deff_set_my_line _p_line
do_line_search
do_on_l_search
if flag_at_search_block_begin==1&&(bl_r(label_pc==search_rgst_num(my_line))){
flag_at_search_block_begin=0
}
return
#define global any any_moto int(__LINE__):goto_global_lp
#deffunc any_l_moto int _p_line
deff_set_my_line _p_line
do_line_search
do_flag_on_do
if flag_at_search_block_begin==1&&(bl_r(label_pc==search_rgst_num(my_line))){
flag_at_search_block_begin=0
}
return
#deffunc any_end
if flag_at_search_block_end==1&&(bl_r(label_pc==search_rgst_num(my_line))){
flag_at_search_block_end=0
}
return
#define global any_l any_l_moto int(__LINE__):goto_global_lp
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_3_moto int p1,int p2,
is_jump_p=0:
if my_pc_B==p1{my_pc_B++:cr_com=p2}
if my_pc_B==(p1+1){ my_pc_B++:cp1=reg_sys_p1}
if my_pc_B==(p1+2){ my_pc_B++:cp2=reg_sys_p2:my_pc_B=1:cmd_pc++
is_jump_p=1:global_label= *com_sw:return}
is_jump_p=0:return
#define global subr_do_eq_3(%1,%2,%3,%4):\
reg_sys_p1=%3:reg_sys_p2=%4:subr_do_eq_3_moto %1,%2
#deffunc subr_do_eq_2_moto int p1,int p2
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=reg_sys_p1
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#define global subr_do_eq_2(%1,%2,%3):\
reg_sys_p1=%3:subr_do_eq_2_moto %1,%2
;#deffunc subr_do_eq_3_p3int_p4int int p1,int p2,int p3,int p4
; is_jump_p=0:
; if my_pc_B==p1{my_pc_B++:cr_com=p2}
; if my_pc_B==(p1+1){ my_pc_B++:cp1=p3}
; if my_pc_B==(p1+2){ my_pc_B++:cp2=p4:my_pc_B=1:cmd_pc++
; is_jump_p=1:global_label= *com_sw:return}
; is_jump_p=0:return
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
;#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
; if my_pc_B==p1{
; my_pc_B++:cr_com=p2:}
; if my_pc_B==p1+1{
; my_pc_B=1:cp1=p3_s
; cmd_pc++:
; global_label=*com_sw: is_jump_p=1:return }
; is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef5 int p1,str p2_s,int p3,int p4,var p5
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++:cp4=p5
}
if my_pc_B==p1+4{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4
}
if my_pc_B==p1+5{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc subr_do_eqcalc_r int p,int p_expr,str p_name,int p_id
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:cr_com=en_do_calc;:mes ""+reg1+":"+reg2
eq_B p+5:cr_calc=p_expr
eq_B p+6:gosub *com_subr
swend
// 代入
get_r_four p+7,p_name,p_id,reg1
return
#deffunc subr_do_eqcalc_r_p int p,int p_expr,str p_name,int p_id,int p5
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:reg2=p5
eq_B p+5:cr_com=en_do_calc
eq_B p+6:cr_calc=p_expr;:mes "1:"+reg1+" 2:"+reg2
eq_B p+7:gosub *com_subr
swend
// 代入
get_r_four p+8,p_name,p_id,reg1
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr;:mes "reg1:"+reg1
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
#deffunc get_var_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"

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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
if subr_do_label(ret_label)==1:goto ret_label
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0

// subr_do_labelの一部
#deffunc do_on_l_search
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
global_label=*sw_begin
is_jump_p=1
return
}// label
}
}
global_label=*sw_begin
is_jump_p=0
return

// subr_do_baz/subr_do_labelの一部
#deffunc do_line_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
return
// subr_do_bazの一部
#deffunc do_flag_on_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
global_label=*sw_begin
; is_jump_p=0
is_jump_p=1
return
}
}
global_label=*sw_begin
is_jump_p=0
return
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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
cmd_pc=bt_pc_1_A
goto bt_pc_1_B
;*bt_hoge_1
; cmd_pc=bt_pc_1
; goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2_A
goto bt_pc_2_B
*sw_end


sample AA

*sw_begin
await 1

*l_case_1
any_l
if block_enable()&&(bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
tmp_l=*l_case_1
subr_do_eq_ldef5 1,"a",1,label_pc,tmp_l
goto_global_lp
}
any_end
any // case 2: cls 0
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
; do_eq_one(1,en_cls0)
}
any_end
any // case 3: objsize
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3 1,en_objsize,120,24
goto_global_lp
}
any_end

any // case 4
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH A"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end

any // case 5
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"ab1",22)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH B"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_2_A=my_label
bt_pc_2_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_B
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end
any // case 6: pos
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3 1,en_pos,150,0
goto_global_lp
}
any_end
any // case 7: mes
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_2 1,en_mes,"ボタンを押してください"
goto_global_lp
}
any_end
any // case 8: stop
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop
goto_global_lp
}
any_end
////////////////////////////////////////////////////////////
*l_case_b
any_l
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_b
subr_do_eq_ldef5 1,"aa1",11,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
any_end
any // case 10: cls 0
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
any_end
any // case 11: objsize
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3 1,en_objsize,120,24
goto_global_lp
}
any_end
any // case 12
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end
any // case 13: pos
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3 1,en_pos,150,0
goto_global_lp
}
any_end
any // case 14: mes
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_2 1,en_mes,"Aを押しましたね"
goto_global_lp
}
any_end
any // case 15: stop
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}
any_end

////////////////////////////////////////////////////////////
*l_case_c
any_l // case 16: def
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_c
subr_do_eq_ldef5 1,"ab1",22,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
any_end
any // case 17: cls 0
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
any_end
any // case 18: objsize
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3 1,en_objsize,120,24
goto_global_lp
}
any_end
any // case 19
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end
any // case 20: pos
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3 1,en_pos,150,0
goto_global_lp
}
any_end
any // case 21: mes
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_2 1,en_mes,"Bを押しましたね"
goto_global_lp
}
any_end
any // case 22: stop
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}
any_end
any // case 23
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"a",1)
}

// goto
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
dialog "goto",1
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==5{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==6{
my_pc_B=1
// cmd_pc=my_label
await 1
goto *com_sw:
}
}
any_end


No.703 RE:必殺!チラウラスレver0.4 Date: 2016/10/09(日) 01:02
Name :Y_repeat  7SM67tY6bA  HOME
ブロックの前と後にスペースを設けましたw
ジャンプしてこれる場所ですw
これでgosubが実装出来そうw
前はいらないかもですが 後をつけたならあってもいいかもとw

main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// line search のみ有効
flag_on_do=0
flag_on_line_search=1
flag_on_label_search=0

// blockの先頭に飛びたい時このflagをon(よそのblockの中身を実行しなくなる)
flag_at_search_block_begin=0
// blockの終わりに飛びたい時このflagをon(よそのblockの中身を実行しなくなる)
flag_at_search_block_end=0

goto *@f
#defcfunc block_enable
if flag_at_search_block_begin==0&&flag_at_search_block_end==0:return 1
return 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_ldef_four_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4}:\
if my_pc_B==(%1+5){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
;#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
;#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))

#define set_my_line my_line=int(__LINE__)
#define goto_global_lp if is_jump_p==1:is_jump_p=0:goto global_label

goto *subr_avoid
#deffunc deff_set_my_line int p_line
my_line=p_line
return
#deffunc any_moto int _p_line
deff_set_my_line _p_line
do_line_search
do_on_l_search
if flag_at_search_block_begin==1&&(bl_r(label_pc==search_rgst_num(my_line))){
flag_at_search_block_begin=0
}
return
#define global any any_moto int(__LINE__):goto_global_lp
#deffunc any_l_moto int _p_line
deff_set_my_line _p_line
do_line_search
do_flag_on_do
if flag_at_search_block_begin==1&&(bl_r(label_pc==search_rgst_num(my_line))){
flag_at_search_block_begin=0
}
return
#deffunc any_end
if flag_at_search_block_end==1&&(bl_r(label_pc==search_rgst_num(my_line))){
flag_at_search_block_end=0
}
return
#define global any_l any_l_moto int(__LINE__):goto_global_lp
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_3 int p1,int p2,
is_jump_p=0:
if my_pc_B==p1{my_pc_B++:cr_com=p2}
if my_pc_B==(p1+1){ my_pc_B++:cp1=reg_p1}
if my_pc_B==(p1+2){ my_pc_B++:cp2=reg_p2:my_pc_B=1:cmd_pc++
is_jump_p=1:global_label= *com_sw:return}
is_jump_p=0:return
#deffunc subr_do_eq_2 int p1,int p2
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=reg_p1
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
;#deffunc subr_do_eq_3_p3int_p4int int p1,int p2,int p3,int p4
; is_jump_p=0:
; if my_pc_B==p1{my_pc_B++:cr_com=p2}
; if my_pc_B==(p1+1){ my_pc_B++:cp1=p3}
; if my_pc_B==(p1+2){ my_pc_B++:cp2=p4:my_pc_B=1:cmd_pc++
; is_jump_p=1:global_label= *com_sw:return}
; is_jump_p=0:return
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
;#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
; if my_pc_B==p1{
; my_pc_B++:cr_com=p2:}
; if my_pc_B==p1+1{
; my_pc_B=1:cp1=p3_s
; cmd_pc++:
; global_label=*com_sw: is_jump_p=1:return }
; is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef5 int p1,str p2_s,int p3,int p4,var p5
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++:cp4=p5
}
if my_pc_B==p1+4{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4
}
if my_pc_B==p1+5{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc subr_do_eqcalc_r int p,int p_expr,str p_name,int p_id
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:cr_com=en_do_calc;:mes ""+reg1+":"+reg2
eq_B p+5:cr_calc=p_expr
eq_B p+6:gosub *com_subr
swend
// 代入
get_r_four p+7,p_name,p_id,reg1
return
#deffunc subr_do_eqcalc_r_p int p,int p_expr,str p_name,int p_id,int p5
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:reg2=p5
eq_B p+5:cr_com=en_do_calc
eq_B p+6:cr_calc=p_expr;:mes "1:"+reg1+" 2:"+reg2
eq_B p+7:gosub *com_subr
swend
// 代入
get_r_four p+8,p_name,p_id,reg1
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr;:mes "reg1:"+reg1
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
#deffunc get_var_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"

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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
if subr_do_label(ret_label)==1:goto ret_label
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0

// subr_do_labelの一部
#deffunc do_on_l_search
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
global_label=*sw_begin
is_jump_p=1
return
}// label
}
}
global_label=*sw_begin
is_jump_p=0
return

// subr_do_baz/subr_do_labelの一部
#deffunc do_line_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
return
// subr_do_bazの一部
#deffunc do_flag_on_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
global_label=*sw_begin
; is_jump_p=0
is_jump_p=1
return
}
}
global_label=*sw_begin
is_jump_p=0
return
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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
cmd_pc=bt_pc_1_A
goto bt_pc_1_B
;*bt_hoge_1
; cmd_pc=bt_pc_1
; goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2_A
goto bt_pc_2_B
*sw_end


sample AA

*sw_begin
await 1

*l_case_1
any_l
if block_enable()&&(bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
tmp_l=*l_case_1
subr_do_eq_ldef5 1,"a",1,label_pc,tmp_l
goto_global_lp
}
any_end
any // case 2: cls 0
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
; do_eq_one(1,en_cls0)
}
any_end
any // case 3: objsize
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=120:reg_p2=24:subr_do_eq_3 1,en_objsize
goto_global_lp
}
any_end

any // case 4
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH A"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end

any // case 5
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"ab1",22)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH B"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_2_A=my_label
bt_pc_2_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_B
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end
any // case 6: pos
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=150:reg_p2=0:subr_do_eq_3 1,en_pos
goto_global_lp
}
any_end
any // case 7: mes
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1="ボタンを押してください":subr_do_eq_2 1,en_mes
goto_global_lp
}
any_end
any // case 8: stop
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop
goto_global_lp
}
any_end
////////////////////////////////////////////////////////////
*l_case_b
any_l
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_b
subr_do_eq_ldef5 1,"aa1",11,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
any_end
any // case 10: cls 0
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
any_end
any // case 11: objsize
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=120:reg_p2=24:subr_do_eq_3 1,en_objsize
goto_global_lp
}
any_end
any // case 12
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end
any // case 13: pos
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=150:reg_p2=0:subr_do_eq_3 1,en_pos
goto_global_lp
}
any_end
any // case 14: mes
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1="Aを押しましたね":subr_do_eq_2 1,en_mes
goto_global_lp
}
any_end
any // case 15: stop
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}
any_end

////////////////////////////////////////////////////////////
*l_case_c
any_l // case 16: def
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_c
subr_do_eq_ldef5 1,"ab1",22,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
any_end
any // case 17: cls 0
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
any_end
any // case 18: objsize
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=120:reg_p2=24:subr_do_eq_3 1,en_objsize
goto_global_lp
}
any_end
any // case 19
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any_end
any // case 20: pos
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=150:reg_p2=0:subr_do_eq_3 1,en_pos
goto_global_lp
}
any_end
any // case 21: mes
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1="Bを押しましたね":subr_do_eq_2 1,en_mes
goto_global_lp
}
any_end
any // case 22: stop
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}
any_end
any // case 23
// read label
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"a",1)
}

// goto
if block_enable()&&(bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
dialog "goto",1
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==5{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==6{
my_pc_B=1
// cmd_pc=my_label
await 1
goto *com_sw:
}
}
any_end


No.702 RE:必殺!チラウラスレver0.4 Date: 2016/10/08(土) 23:56
Name :Y_repeat  7SM67tY6bA  HOME
複数のトークンをまとめるのやめましたといいつつ
少々まとめましたw
トークン一つが一つのメソッドという 構文解析の簡単なののルールがあって
それなら #deffunc一つをトークンと呼んでよく
複数のトークンを一つのトークンにまとめても いいのかな?w

命令呼び出しの引数を全部変数にする予定です(型指定しなくていいのでw)
グローバル変数に代入して#deffuncの中で参照したら
あんまりめんどくさくなさそうw
#忘れたら大変そうな仕様でw

main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_ldef_four_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4}:\
if my_pc_B==(%1+5){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
;#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
;#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))

#define set_my_line my_line=int(__LINE__)
#define goto_global_lp if is_jump_p==1:is_jump_p=0:goto global_label

goto *subr_avoid
#deffunc deff_set_my_line int p_line
my_line=p_line
return
#deffunc any_moto int _p_line
deff_set_my_line _p_line
do_line_search
do_on_l_search
return
#define global any any_moto int(__LINE__):goto_global_lp
#deffunc any_l_moto int _p_line
deff_set_my_line _p_line
do_line_search
do_flag_on_do
return
#define global any_l any_l_moto int(__LINE__):goto_global_lp
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_3 int p1,int p2,
is_jump_p=0:
if my_pc_B==p1{my_pc_B++:cr_com=p2}
if my_pc_B==(p1+1){ my_pc_B++:cp1=reg_p1}
if my_pc_B==(p1+2){ my_pc_B++:cp2=reg_p2:my_pc_B=1:cmd_pc++
is_jump_p=1:global_label= *com_sw:return}
is_jump_p=0:return
#deffunc subr_do_eq_2 int p1,int p2
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=reg_p1
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
;#deffunc subr_do_eq_3_p3int_p4int int p1,int p2,int p3,int p4
; is_jump_p=0:
; if my_pc_B==p1{my_pc_B++:cr_com=p2}
; if my_pc_B==(p1+1){ my_pc_B++:cp1=p3}
; if my_pc_B==(p1+2){ my_pc_B++:cp2=p4:my_pc_B=1:cmd_pc++
; is_jump_p=1:global_label= *com_sw:return}
; is_jump_p=0:return
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
;#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
; if my_pc_B==p1{
; my_pc_B++:cr_com=p2:}
; if my_pc_B==p1+1{
; my_pc_B=1:cp1=p3_s
; cmd_pc++:
; global_label=*com_sw: is_jump_p=1:return }
; is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef5 int p1,str p2_s,int p3,int p4,var p5
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++:cp4=p5
}
if my_pc_B==p1+4{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4
}
if my_pc_B==p1+5{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc subr_do_eqcalc_r int p,int p_expr,str p_name,int p_id
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:cr_com=en_do_calc;:mes ""+reg1+":"+reg2
eq_B p+5:cr_calc=p_expr
eq_B p+6:gosub *com_subr
swend
// 代入
get_r_four p+7,p_name,p_id,reg1
return
#deffunc subr_do_eqcalc_r_p int p,int p_expr,str p_name,int p_id,int p5
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:reg2=p5
eq_B p+5:cr_com=en_do_calc
eq_B p+6:cr_calc=p_expr;:mes "1:"+reg1+" 2:"+reg2
eq_B p+7:gosub *com_subr
swend
// 代入
get_r_four p+8,p_name,p_id,reg1
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr;:mes "reg1:"+reg1
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
#deffunc get_var_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
if subr_do_label(ret_label)==1:goto ret_label
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0

// subr_do_labelの一部
#deffunc do_on_l_search
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
global_label=*sw_begin
is_jump_p=1
return
}// label
}
}
global_label=*sw_begin
is_jump_p=0
return

// subr_do_baz/subr_do_labelの一部
#deffunc do_line_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
return
// subr_do_bazの一部
#deffunc do_flag_on_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
global_label=*sw_begin
; is_jump_p=0
is_jump_p=1
return
}
}
global_label=*sw_begin
is_jump_p=0
return
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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
cmd_pc=bt_pc_1_A
goto bt_pc_1_B
;*bt_hoge_1
; cmd_pc=bt_pc_1
; goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2_A
goto bt_pc_2_B
*sw_end


sample AA

*sw_begin
await 1

*l_case_1
any_l
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
tmp_l=*l_case_1
subr_do_eq_ldef5 1,"a",1,label_pc,tmp_l
goto_global_lp
}
any // case 2: cls 0
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
; do_eq_one(1,en_cls0)
}
any // case 3: objsize
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=120:reg_p2=24:subr_do_eq_3 1,en_objsize
goto_global_lp
}

any // case 4
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH A"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}

any // case 5
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"ab1",22)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH B"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_2_A=my_label
bt_pc_2_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_B
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any // case 6: pos
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=150:reg_p2=0:subr_do_eq_3 1,en_pos
goto_global_lp
}
any // case 7: mes
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1="ボタンを押してください":subr_do_eq_2 1,en_mes
goto_global_lp
}
any // case 8: stop
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop
goto_global_lp
}
////////////////////////////////////////////////////////////
*l_case_b
any_l
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_b
subr_do_eq_ldef5 1,"aa1",11,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
any // case 10: cls 0
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
any // case 11: objsize
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=120:reg_p2=24:subr_do_eq_3 1,en_objsize
goto_global_lp
}
any // case 12
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any // case 13: pos
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=150:reg_p2=0:subr_do_eq_3 1,en_pos
goto_global_lp
}
any // case 14: mes
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1="Aを押しましたね":subr_do_eq_2 1,en_mes
goto_global_lp
}
any // case 15: stop
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}

////////////////////////////////////////////////////////////
*l_case_c
any_l // case 16: def
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_c
subr_do_eq_ldef5 1,"ab1",22,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
any // case 17: cls 0
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
any // case 18: objsize
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=120:reg_p2=24:subr_do_eq_3 1,en_objsize
goto_global_lp
}
any // case 19
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any // case 20: pos
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1=150:reg_p2=0:subr_do_eq_3 1,en_pos
goto_global_lp
}
any // case 21: mes
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
reg_p1="Bを押しましたね":subr_do_eq_2 1,en_mes
goto_global_lp
}
any // case 22: stop
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}
any // case 23
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"a",1)
}

// goto
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
dialog "goto",1
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==5{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==6{
my_pc_B=1
// cmd_pc=my_label
await 1
goto *com_sw:
}
}


No.700 RE:必殺!チラウラスレver0.4 Date: 2016/10/08(土) 07:31
Name :Y_repeat  7SM67tY6bA  HOME
トークンを記述する中間言語というコンセプトでやったんですけど
トークンじゃなくマクロとdeffuncになってますw
複数の意味合いのトークンもどきをまとめるのはやめましたw

サンプルはAAのみ更新w

no_6xxAQ2.hsp

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_ldef_four_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4}:\
if my_pc_B==(%1+5){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))

#define set_my_line my_line=int(__LINE__)
#define goto_global_lp if is_jump_p==1:is_jump_p=0:goto global_label

goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")

#deffunc subr_do_eq_3_p3int_p4int int p1,int p2,int p3,int p4
is_jump_p=0:
if my_pc_B==p1{my_pc_B++:cr_com=p2}
if my_pc_B==(p1+1){ my_pc_B++:cp1=p3}
if my_pc_B==(p1+2){ my_pc_B++:cp2=p4:my_pc_B=1:cmd_pc++
is_jump_p=1:global_label= *com_sw:return}
is_jump_p=0:return
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef5 int p1,str p2_s,int p3,int p4,var p5
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++:cp4=p5
}
if my_pc_B==p1+4{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4
}
if my_pc_B==p1+5{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc subr_do_eqcalc_r int p,int p_expr,str p_name,int p_id
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:cr_com=en_do_calc;:mes ""+reg1+":"+reg2
eq_B p+5:cr_calc=p_expr
eq_B p+6:gosub *com_subr
swend
// 代入
get_r_four p+7,p_name,p_id,reg1
return
#deffunc subr_do_eqcalc_r_p int p,int p_expr,str p_name,int p_id,int p5
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:reg2=p5
eq_B p+5:cr_com=en_do_calc
eq_B p+6:cr_calc=p_expr;:mes "1:"+reg1+" 2:"+reg2
eq_B p+7:gosub *com_subr
swend
// 代入
get_r_four p+8,p_name,p_id,reg1
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr;:mes "reg1:"+reg1
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
#deffunc get_var_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
if subr_do_label(ret_label)==1:goto ret_label
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0

// subr_do_labelの一部
#deffunc do_on_l_search
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
global_label=*sw_begin
is_jump_p=1
return
}// label
}
}
global_label=*sw_begin
is_jump_p=0
return

// subr_do_baz/subr_do_labelの一部
#deffunc do_line_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
return
// subr_do_bazの一部
#deffunc do_flag_on_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
global_label=*sw_begin
; is_jump_p=0
is_jump_p=1
return
}
}
global_label=*sw_begin
is_jump_p=0
return
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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
cmd_pc=bt_pc_1_A
goto bt_pc_1_B
;*bt_hoge_1
; cmd_pc=bt_pc_1
; goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2_A
goto bt_pc_2_B
*sw_end


no_6xxAQ2_script_AA.hsp

*sw_begin
await 1

*l_case_1
set_my_line
do_line_search
do_flag_on_do:goto_global_lp
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
tmp_l=*l_case_1
subr_do_eq_ldef5 1,"a",1,label_pc,tmp_l
goto_global_lp
}
set_my_line // case 2: cls 0
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
; do_eq_one(1,en_cls0)
}
set_my_line // case 3: objsize
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_3_p3int_p4int 1,en_objsize,120,24
goto_global_lp
}

set_my_line // case 4
do_line_search
do_on_l_search
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH A"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
set_my_line // case 5
do_line_search
do_on_l_search
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"ab1",22)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH B"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_2_A=my_label
bt_pc_2_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_B
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
/////////////////////////////////////////////////////////////////
// ここまで 2016/10/08A2
set_my_line // case 6: pos
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
do_eq_three(1,en_pos,150,0)
}
set_my_line // case 7: mes
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
set_my_line // case 8: stop
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop
goto_global_lp
}
////////////////////////////////////////////////////////////
*l_case_b
set_my_line
do_line_search
do_flag_on_do:goto_global_lp
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_b
subr_do_eq_ldef5 1,"aa1",11,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
set_my_line // case 10: cls 0
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
set_my_line // case 11: objsize
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
do_eq_three(1,en_objsize,120,24)
}
set_my_line // case 12
do_line_search
do_on_l_search
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
set_my_line // case 13: pos
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
do_eq_three(1,en_pos,150,0)
}
set_my_line // case 14: mes
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_2_p3s 1,en_mes,"Aを押しましたね"
goto_global_lp
}
set_my_line // case 15: stop
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}

////////////////////////////////////////////////////////////
*l_case_c
set_my_line // case 16: def
do_line_search
do_flag_on_do:goto_global_lp
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line))){
tmp_l=*l_case_c
subr_do_eq_ldef5 1,"ab1",22,label_pc,tmp_l
goto_global_lp
; do_eq_ldef_four(1,"a",1,label_pc)
}
set_my_line // case 17: cls 0
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_cls0
goto_global_lp
}
set_my_line // case 18: objsize
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
do_eq_three(1,en_objsize,120,24)
}
set_my_line // case 19
do_line_search
do_on_l_search
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
;logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
set_my_line // case 20: pos
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
do_eq_three(1,en_pos,150,0)
}
set_my_line // case 21: mes
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_2_p3s 1,en_mes,"Bを押しましたね"
goto_global_lp
}
set_my_line // case 22: stop
do_line_search
do_on_l_search
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
subr_do_eq_1 1,en_stop:cmd_pc=1
goto_global_lp
}
set_my_line // case 23
do_line_search
do_on_l_search
// read label
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"a",1)
}

// goto
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line))) {
if my_pc_B==4{
dialog "goto",1
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==5{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==6{
my_pc_B=1
// cmd_pc=my_label
await 1
goto *com_sw:
}
}


No.699 RE:必殺!チラウラスレver0.4 Date: 2016/09/08(木) 04:48
Name :Y_repeat  7SM67tY6bA  HOME
書いて気が済んじゃうかもしれないんでアレなんですがw

アレです。この中間言語路線変更します

直接記述はトークンを記述します
直接書いてマクロで消したりすると
何が書いてあるのか作者でもよくわからなくなってたりw

直接トークンを書いて HSPスクリプトに翻訳して
それから実行。と
トークンの集まりじゃないと
構文どーすんだ。みたいとこがあるのでw
#ifとか繰り返しとか。です。jumpは構文いらないんですがw

まあ しばらくは書写頑張って プログラム言語作成のお勉強です
コンテストもありますし

#たぶん出品予定w

No.695 RE:必殺!チラウラスレver0.4 Date: 2016/07/15(金) 16:37
Name :Y_repeat  7SM67tY6bA  HOME
何日か前にDLしたプログラムの書写をしていた時に
中間言語をbytecode配列に送信しまくっているくだりがあって
ソースコードを解析しながら送信するんじゃなくて
直接、中間言語を送信してみようかな。と思い
試しにやってみてます
志は道半ばです


#include "subr_bool.hsp"

goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var

#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_jz
#enum en_jnz
#enum en_calc
#enum en_do_calc



#enum en_add
#enum en_sub
#enum en_mul
#enum en_div
#enum en_mod
#enum en_eqadd
#enum en_eqsub
#enum en_eqmul
#enum en_eqdiv
#enum en_eqmod

#enum en_bool
#enum en_and
#enum en_or
#enum en_xor
#enum en_eq
#enum en_small
#enum en_big
#enum en_not
#enum en_smaller
#enum en_bigger
#enum en_eqnot
#enum en_L_shift
#enum en_R_shift

#enum en_OP_push_int = 1
#enum en_OP_push_str
#enum en_OP_push_var
#enum en_OP_set_to_var
#enum en_OP_add // +
#enum en_OP_sub // -
#enum en_OP_mul // *
#enum en_OP_div // /
#enum en_OP_mod // \
#enum en_OP_eq_add // +=
#enum en_OP_eq_sub // -=
#enum en_OP_eq_mul // *=
#enum en_OP_eq_div // /=
#enum en_OP_eq_mod // \=
#enum en_OP_eq // ==
#enum en_OP_not_eq // !=
#enum en_OP_big_eq // >=
#enum en_OP_small_eq // <=
#enum en_OP_big // >
#enum en_OP_small // <
#enum en_OP_band // &
#enum en_OP_bor // |
#enum en_OP_bxor // ^
#enum en_OP_and // &&
#enum en_OP_or // |
#enum en_OP_L_shift// <<
#enum en_OP_R_shift// >>
#enum en_OP_jump
#enum en_OP_jump_if_zero
#enum en_OP_jump_not_zero
#enum en_OP_gosub
#enum en_OP_return
#enum en_OP_mes
#enum en_OP_logmes
#enum en_OP_dump

#enum en_token_int_value = 1// 整数
#enum en_token_identifier// 識別子
#enum en_token_str_value // 文字列
#enum en_token_set // =
#enum en_token_add // +
#enum en_token_sub // -
#enum en_token_mul // *
#enum en_token_div // /
#enum en_token_mod // \
#enum en_token_eq_add // +=
#enum en_token_eq_sub // -=
#enum en_token_eq_mul // *=
#enum en_token_eq_div // /=
#enum en_token_eq_mod // \=
#enum en_token_eq // ==
#enum en_token_not_eq // !=
#enum en_token_big_eq // >=
#enum en_token_big // >
#enum en_token_small_eq // <=
#enum en_token_small // <
#enum en_token_L_paren // (
#enum en_token_R_paren // )
#enum en_token_L_brace // {
#enum en_token_R_brace // }
#enum en_token_comma // ,
#enum en_token_period // .
#enum en_token_semicolon// ;
#enum en_token_colon // :
#enum en_token_band // &
#enum en_token_bor // |
#enum en_token_bxor // ^
#enum en_token_and // &&
#enum en_token_or // ||
#enum en_token_L_shift // <<
#enum en_token_R_shift // >>
#enum en_token_if
#enum en_token_else
#enum en_token_elsif
#enum en_token_while
#enum en_token_wend
#enum en_token_for
#enum en_token_next
#enum en_token_goto
#enum en_token_jump
#enum en_token_jump_zero
#enum en_token_jump_not_zero
#enum en_token_gosub
#enum en_token_return
#enum en_token_mes
#enum en_token_logmes
#enum en_token_dump
#enum en_token_EOF
/*
*com_subr
switch cr_com
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):swbreak
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:swbreak
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_do_calc: gosub *com_calc: swbreak
case en_calc: swbreak
swend
return
*com_calc
switch cr_calc
case en_add: reg_r=reg1+reg2:swbreak
case en_sub: reg_r=reg1-reg2:swbreak
case en_mul: reg_r=reg1*reg2:swbreak
case en_div: reg_r=reg1/reg2:swbreak
case en_mod: reg_r=reg1\reg2:swbreak
case en_eqadd: reg1+=reg2:swbreak
case en_eqsub: reg1-=reg2:swbreak
case en_eqmul: reg1*=reg2:swbreak
case en_eqdiv: reg1/=reg2:swbreak
case en_eqmod: reg1\=reg2:swbreak

case en_bool: reg_r=calc_bool_moro(reg1):swbreak
case en_and: reg_r=(reg1®2):swbreak
case en_or: reg_r=(reg1|reg2):swbreak
case en_xor: reg_r=(reg1^reg2):swbreak
case en_eq: reg_r=(reg1==reg2):swbreak
case en_small:reg_r=(reg1 case en_big: reg_r=(reg1>reg2):swbreak
case en_not: reg_r=(reg1!reg2):swbreak
case en_smaller:reg_r=(reg1<=reg2):swbreak
case en_bigger: reg_r=(reg1>=reg2):swbreak
case en_eqnot: reg_r=(reg1!=reg2):swbreak
case en_L_shift:reg_r=(reg1< case en_R_shift:reg_r=(reg1>>reg2):swbreak
swend
return
*com_sw
switch cr_com
case en_get_my_label: get_x_label_value@label_manage cp1,cp2,my_label,my_label_b:goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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 cp2
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin*/
*jump4avoid_subr_com



#include "no_6xx_subr_command.hsp"

#enum en_cmd=1
#enum en_r
#enum en_cp1
#enum en_cp2
#enum en_cp3
#enum en_cp4
#enum en_cp5
#enum en_cp6
#enum en_cp7
#enum en_cp8
#enum en_dat
#enum en_var_A
#enum en_var_B
#enum en_label_A
#enum en_label_B

#module bytecode o_value,o_type
#modinit
o_value=-1
o_type=-1
return
#modfunc local set_value int p
o_value=p
return
#modfunc local set_type int p
o_type=p
return
#modfunc local get_value var p_v
p_v=o_value
return
#modfunc local get_type var p_v
p_v=o_type
return
#global

#module manage_BC
BC_index=0
#defcfunc local new_one_BC
pre_BC_index=BC_index
BC_index++
newmod many_BC,bytecode
return pre_BC_index
#deffunc local set_value_and_type int p_index,int p_type,int p_value
set_type@bytecode many_BC.p_index,p_type
set_value@bytecode many_BC.p_index,p_value
return
#deffunc local get_value_and_type int p_index,var pv_type,var pv_value
get_type@bytecode many_BC.p_index,pv_type
get_value@bytecode many_BC.p_index,pv_value
return
#global

tmp=new_one_BC@manage_BC()
set_value_and_type@manage_BC tmp,en_cp1,5
tmp=new_one_BC@manage_BC()
set_value_and_type@manage_BC tmp,en_cp2,10
tmp=new_one_BC@manage_BC()
set_value_and_type@manage_BC tmp,en_cmd,en_OP_add


No.687 RE:必殺!チラウラスレver0.4 Date: 2016/06/26(日) 03:38
Name :Y_repeat  7SM67tY6bA  HOME
sampleBB更新しました。次へ進めそうw

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
*l_case_1
any_l { // case 1: def label
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
tmp_l=*l_case_1
subr_do_eq_ldef5 1,"begin",2,label_pc,tmp_l
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 2 mes
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="tmpの値は"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 3 jnz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_2nd",20)
}
sta_c {
switch my_pc_B
eq_B_two 4,"tmp",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jnz
sta_c {
if my_pc_B==8{
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==9{
my_pc_B++
cr_com=en_goto
}
; dialog "OK4A"+my_pc_B
; if my_pc_B==8{
; dialog "OK4"
; my_pc_B++:cp1=my_label }
; if my_pc_B==9{
; my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
await 1
goto *com_sw:
}
}
}
any { // case 4 mes
subr_do_eq_2_p3s 1,en_mes,"tmpの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
*l_2nd
any_l { // case 5 def label
tmp_l=*l_2nd
subr_do_eq_ldef5 1,"_2nd",20,label_pc,tmp_l
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_var // case 6 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"tmp",10,0)
eq_B 5:my_pc_B=1:label_pc++
}
}
begin_do // case 7: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:reg1+=1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"tmp",10,reg1:cmd_fin
}
begin_var // case 8 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"flag",12,0)
eq_B 5:my_pc_B=1:label_pc++
}
}
begin_do // case 9: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:reg_r=reg1!=4
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"flag",12,reg_r:cmd_fin
}
begin_do // case 10: calc
sta_c {
_2bool_subr "flag",12
cmd_fin
}
begin_do // case 11 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_3rd",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"flag",12
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==9{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==10{
; dialog "reg1"+reg1,1
my_pc_B=1: cmd_pc++:
if reg1==0{
; dialog "OK3":
await 1
goto *com_sw:
}
}
}
begin_do // case 23:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"begin",2)
}

// goto
sta_c {
if my_pc_B==4{
; dialog "goto",1
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==5{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==6{
my_pc_B=1
// cmd_pc=my_label
await 1
goto *com_sw:
}
}
*l_3rd
any_l { // case 13 def label
tmp_l=*l_3rd
subr_do_eq_ldef5 1,"_3rd",30,label_pc,tmp_l
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 14 EOF
// EOF


No.684 RE:必殺!チラウラスレver0.4 Date: 2016/06/08(水) 02:22
Name :Y_repeat  7SM67tY6bA  HOME
演算子の実装大体終わりました 気合だーw

#include "subr_bool.hsp"

goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var
#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_jz
#enum en_jnz
#enum en_calc
#enum en_do_calc

#enum en_add
#enum en_sub
#enum en_mul
#enum en_div
#enum en_mod
#enum en_eqadd
#enum en_eqsub
#enum en_eqmul
#enum en_eqdiv
#enum en_eqmod

#enum en_bool
#enum en_and
#enum en_or
#enum en_xor
#enum en_eq
#enum en_small
#enum en_big
#enum en_not
#enum en_smaller
#enum en_bigger
#enum en_eqnot
#enum en_L_shift
#enum en_R_shift

*com_subr
switch cr_com
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):swbreak
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:swbreak
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_do_calc: gosub *com_calc: swbreak
case en_calc: swbreak
swend
return
*com_calc
switch cr_calc
case en_add: reg_r=reg1+reg2:swbreak
case en_sub: reg_r=reg1-reg2:swbreak
case en_mul: reg_r=reg1*reg2:swbreak
case en_div: reg_r=reg1/reg2:swbreak
case en_mod: reg_r=reg1\reg2:swbreak
case en_eqadd: reg1+=reg2:swbreak
case en_eqsub: reg1-=reg2:swbreak
case en_eqmul: reg1*=reg2:swbreak
case en_eqdiv: reg1/=reg2:swbreak
case en_eqmod: reg1\=reg2:swbreak

case en_bool: reg_r=calc_bool_moro(reg1):swbreak
case en_and: reg_r=(reg1®2):swbreak
case en_or: reg_r=(reg1|reg2):swbreak
case en_xor: reg_r=(reg1^reg2):swbreak
case en_eq: reg_r=(reg1==reg2):swbreak
case en_small:reg_r=(reg1 case en_big: reg_r=(reg1>reg2):swbreak
case en_not: reg_r=(reg1!reg2):swbreak
case en_smaller:reg_r=(reg1<=reg2):swbreak
case en_bigger: reg_r=(reg1>=reg2):swbreak
case en_eqnot: reg_r=(reg1!=reg2):swbreak
case en_L_shift:reg_r=(reg1< case en_R_shift:reg_r=(reg1>>reg2):swbreak
swend
return
*com_sw
switch cr_com
case en_get_my_label: get_x_label_value@label_manage cp1,cp2,my_label,my_label_b:goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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 cp2
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*jump4avoid_subr_com



*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

begin_var // case 1 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p1",10,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 2 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p2",20,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 3 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"r",30,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_do // case 4: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=100
eq_B 2:reg2=20
swend
// subr_do_calc_r 長さ4命令 int p,int p_expr,str p_name(変数の名前),int p_id(変数のID)
subr_do_calc_r 3,en_add,"r",30
cmd_fin
}
any { // case 5 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="100 + 20 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 6: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=30
eq_B 2:reg2=200
swend
subr_do_calc_r 3,en_sub,"r",30
cmd_fin
}
any { // case 7 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="30 - 200 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 8: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=11
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_mul,"r",30
cmd_fin
}
any { // case 9 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="11 * 5 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 10: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=21
eq_B 2:reg2=4
swend
subr_do_calc_r 3,en_div,"r",30
cmd_fin
}
any { // case 11 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="21 / 4 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 12: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=33
eq_B 2:reg2=10
swend
subr_do_calc_r 3,en_mod,"r",30
cmd_fin
}
any { // case 13 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="33 \\ 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}

begin_do // case 14: calc
sta_c {
// subr_do_calc_r_pp 長さ6命令 int p,int p_expr,str p_name(変数の名前),int p_id(変数のID),int p5,int p6
subr_do_calc_r_pp 1,en_add,"r",30,50,400
cmd_fin
}
any { // case 15 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="50 + 400 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 16: calc
sta_c {
subr_do_calc_r_pp 1,en_sub,"r",30,70,550
cmd_fin
}
any { // case 17 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="70 - 550 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 18: set
sta_c {
get_var_four 1,"p1",10,10
cmd_fin
}
any { // case 19 dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 20: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg2=20
; mes ""+reg1+" "+reg2
swend
subr_do_eqcalc_r 2,en_eqadd,"p1",10
cmd_fin
}
any { // case 21 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="10 += 20 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 20: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg2=50
; mes ""+reg1+" "+reg2
swend
subr_do_eqcalc_r 2,en_eqsub,"p1",10
cmd_fin
}
any { // case 21 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="30 -= 50 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
any { // case 22 dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 23: calc
sta_c {
// 変数値取得
subr_do_eqcalc_r_p 1,en_eqmul,"p1",10,2
cmd_fin
}
any { // case 24 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="-20 *= 2 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 25: calc
sta_c {
subr_do_eqcalc_r_p 1,en_eqdiv,"p1",10,3
cmd_fin
}
any { // case 26 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="-40 /= 3 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 27: calc
sta_c {
subr_do_eqcalc_r_p 1,en_eqmod,"p1",10,10
cmd_fin
}
any { // case 28 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="-13 \\= 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
any { // case 29 dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 31: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=10
swend
subr_do_calc_r 2,en_bool,"p1",10
cmd_fin
}
any { // case 32 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="\nbool 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 33: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=0
swend
subr_do_calc_r 2,en_bool,"p1",10
cmd_fin
}
any { // case 34 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="bool 0 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 35: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=3
eq_B 2:reg2=1
swend
subr_do_calc_r 3,en_and,"r",30
cmd_fin
}
any { // case 36 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="3 & 1 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 37: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=2
eq_B 2:reg2=1
swend
subr_do_calc_r 3,en_and,"r",30
cmd_fin
}
any { // case 38 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="2 & 1 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=0
eq_B 2:reg2=1
swend
subr_do_calc_r 3,en_or,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="0 | 1 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=0
eq_B 2:reg2=0
swend
subr_do_calc_r 3,en_or,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="0 | 0 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=1
eq_B 2:reg2=0
swend
subr_do_calc_r 3,en_xor,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="1 ^ 0 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=1
eq_B 2:reg2=1
swend
subr_do_calc_r 3,en_xor,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="1 ^ 1 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
any { // case dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
any { // case : pos
do_eq_three(1,en_pos,230,0)
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=0
eq_B 2:reg2=0
swend
subr_do_calc_r 3,en_eq,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="0 == 0 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=2
eq_B 2:reg2=0
swend
subr_do_calc_r 3,en_eq,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="2 == 0 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=0
eq_B 2:reg2=10
swend
subr_do_calc_r 3,en_small,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="0 < 10 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=5
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_small,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="5 < 5 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
} begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=10
eq_B 2:reg2=0
swend
subr_do_calc_r 3,en_big,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="10 > 0 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=5
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_big,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="5 > 5 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=1
eq_B 2:reg2=1
swend
subr_do_calc_r 3,en_not,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="1 ! 1 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=1
eq_B 2:reg2=2
swend
subr_do_calc_r 3,en_not,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="1 ! 2 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=5
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_smaller,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="5 <= 5 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=5
eq_B 2:reg2=4
swend
subr_do_calc_r 3,en_smaller,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="5 <= 4 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=5
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_bigger,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="5 >= 5 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=5
eq_B 2:reg2=6
swend
subr_do_calc_r 3,en_bigger,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="5 >= 6 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=1
eq_B 2:reg2=1
swend
subr_do_calc_r 3,en_eqnot,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="1 != 1 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=1
eq_B 2:reg2=2
swend
subr_do_calc_r 3,en_eqnot,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="1 != 2 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=12
eq_B 2:reg2=2
swend
subr_do_calc_r 3,en_L_shift,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="12 << 2 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case : calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=12
eq_B 2:reg2=2
swend
subr_do_calc_r 3,en_R_shift,"r",30
cmd_fin
}
any { // case mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg_r=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="12 >> 2 の値は r:"+reg_r+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 30 EOF
// EOF


No.683 RE:必殺!チラウラスレver0.4 Date: 2016/06/06(月) 02:24
Name :Y_repeat  7SM67tY6bA  HOME
ラベル管理モジュール変数に、もろのラベルを格納したくて 結構な範囲で修正しましたw
sampleはA AA B Cとあるのですが まだAAしか動かないですw
追記:Cも無修正(w)で動きました。ラベル使ってないのでw

goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var
#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_jz
#enum en_jnz
#enum en_calc
#enum en_do_calc

#enum en_add
#enum en_sub
#enum en_mul
#enum en_div
#enum en_mod
#enum en_eqadd
#enum en_eqsub
#enum en_eqmul
#enum en_eqdiv
#enum en_eqmod

*com_subr
switch cr_com
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):swbreak
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:swbreak
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_do_calc: gosub *com_calc: swbreak
case en_calc: swbreak
swend
return
*com_calc
switch cr_calc
case en_add: reg_r=reg1+reg2:swbreak
case en_sub: reg_r=reg1-reg2:swbreak
case en_mul: reg_r=reg1*reg2:swbreak
case en_div: reg_r=reg1/reg2:swbreak
case en_mod: reg_r=reg1\reg2:swbreak
case en_eqadd: reg1+=reg2:swbreak
case en_eqsub: reg1-=reg2:swbreak
case en_eqmul: reg1*=reg2:swbreak
case en_eqdiv: reg1/=reg2:swbreak
case en_eqmod: reg1\=reg2:swbreak
swend
return
*com_sw
switch cr_com
case en_get_my_label: get_x_label_value@label_manage cp1,cp2,my_label,my_label_b:goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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 cp2
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*jump4avoid_subr_com



*sw_begin
await 1
*l_case_1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
tmp_l=*l_case_1
subr_do_eq_ldef5 1,"a",1,label_pc,tmp_l
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 2: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
any { // case 3: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 4:
// read label
sta_c {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH A"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
begin_do // case 5:
// read label
sta_c {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"ab1",22)
}
// button
sta_c {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="PUSH B"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_2_A=my_label
bt_pc_2_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_B
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any { // case 6: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 8: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
////////////////////////////////////////////////////////////
*l_case_b
any_l { // case 9: def
tmp_l=*l_case_b
subr_do_eq_ldef5 1,"aa1",11,label_pc,tmp_l
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 10: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 11: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 12:
// read label
sta_c {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any { // case 13: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 14: mes
subr_do_eq_2_p3s 1,en_mes,"Aを押しましたね"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 15: stop
subr_do_eq_1 1,en_stop:cmd_pc=1
if is_jump_p==1:is_jump_p=0:goto global_label
}

////////////////////////////////////////////////////////////
*l_case_c
any_l { // case 16: def
tmp_l=*l_case_c
subr_do_eq_ldef5 1,"ab1",22,label_pc,tmp_l
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 17: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 18: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 19:
// read label
sta_c {
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
if my_pc_B==4{
my_pc_B++:
subr_label=my_label
cp1="NEXT"
}
if my_pc_B==5{
my_pc_B++:
bt_pc_1_A=my_label
bt_pc_1_B=my_label_b
}
if my_pc_B==6{
cr_com=en_button_A
gosub *com_subr
// button "PUSH",*bt_hoge_1
my_pc_B=1:cmd_pc++:
}
}
any { // case 20: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 21: mes
subr_do_eq_2_p3s 1,en_mes,"Bを押しましたね"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 22: stop
subr_do_eq_1 1,en_stop:cmd_pc=1
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 23:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"a",1)
}

// goto
sta_c {
if my_pc_B==4{
dialog "goto",1
my_pc_B++:
subr_label=my_label
cp1=my_label
cp2=my_label_b

}
if my_pc_B==5{
my_pc_B++
cr_com=en_goto
}
if my_pc_B==6{
my_pc_B=1
// cmd_pc=my_label
await 1
goto *com_sw:
}
}



#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_ldef_four_plus1(%1,%2,%3,%4,%5):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++:cp4=%5}:\
if my_pc_B==(%1+4){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4}:\
if my_pc_B==(%1+5){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef5 int p1,str p2_s,int p3,int p4,var p5
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++:cp4=p5
}
if my_pc_B==p1+4{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3,cp4
}
if my_pc_B==p1+5{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc subr_do_eqcalc_r int p,int p_expr,str p_name,int p_id
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:cr_com=en_do_calc;:mes ""+reg1+":"+reg2
eq_B p+5:cr_calc=p_expr
eq_B p+6:gosub *com_subr
swend
// 代入
get_r_four p+7,p_name,p_id,reg1
return
#deffunc subr_do_eqcalc_r_p int p,int p_expr,str p_name,int p_id,int p5
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:reg2=p5
eq_B p+5:cr_com=en_do_calc
eq_B p+6:cr_calc=p_expr;:mes "1:"+reg1+" 2:"+reg2
eq_B p+7:gosub *com_subr
swend
// 代入
get_r_four p+8,p_name,p_id,reg1
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr;:mes "reg1:"+reg1
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
#deffunc get_var_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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
cmd_pc=bt_pc_1_A
goto bt_pc_1_B
;*bt_hoge_1
; cmd_pc=bt_pc_1
; goto *sw_begin
*bt_hoge_2
cmd_pc=bt_pc_2_A
goto bt_pc_2_B
*sw_end



#include "init.hsp"
#module mod_label i_name,i_ID,i_l_value,i_label
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,int p_l_value,var p_label
; sdim i_name,500
; sdim i_ID,500
; sdim i_l_value,500
i_name=p_name
i_ID=p_ID
i_l_value=p_l_value
i_label=p_label
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 get_i_label var _p_rvar
_p_rvar=i_label
return
#modfunc local set_i_l_value var _p4set_value
i_l_value = _p4set_value
return
#modfunc local dump
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
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,int _p_l_value,var _p_label,local loc_r
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,_p_label
fv_ID++
return
}
dialog "your ID already rgst:"+_p_ID,1
return
#defcfunc local label_search_from_ID_non_error_mes int _3p_ID,local loc_i,local loc_get_index
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 loc_i,local loc_get_index
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,int _4p_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
#deffunc local pre_get_x_label_value str __p_name,int __p_ID,var __p_r1,var __p_r2,local r_name
r_name=get_i_name@mod_label(o_label.__p_ID)
if r_name!=__p_name:return -1
__p_r1=get_i_l_value@mod_label(o_label.__p_ID)
get_i_label@mod_label o_label.__p_ID,__p_r2
return 1
#deffunc local get_x_label_value str __p_name,int _p3b_ID,var _p3_r1,var _p3_r2,local loc_sch,local loc_hit
loc_sch=label_search_from_ID@label_manage(_p3b_ID)
loc_hit=is_hit_after_label_search@label_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
pre_get_x_label_value@label_manage __p_name,loc_sch,_p3_r1,_p3_r2
return
}
}
return -1
#deffunc local pre_set_x_label_value str __p_name,int __p_ID,var __p4set,local r_name
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_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
loc_hit_b=is_hit_after_label_search@label_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_label_value@label_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#deffunc local dump
logmes "log"
repeat fv_ID
dump@mod_label o_label.cnt
loop
logmes ""+fv_ID
logmes ""+label_pc@
return
#deffunc local output
sdim _4note_l_op,64000
_4note_l_op=""
_4op=""
notesel _4note_l_op
repeat fv_ID
get4op@mod_label o_label.cnt,_4op
_4note_l_op+=""+_4op+"\n"
loop
notesave output_label_FILE_NAME
noteunsel
sdim _4note_l_op,1
return

;#modfunc local dump
;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 get_v4op var p_r
p_r=""+v_i_ID+":"+v_i_name+":"+v_i_v_value
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,int _p_v_value,local loc_r
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_value
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_ID,local loc_i,local loc_get_index
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_i,local loc_get_index
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 _4p_i
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,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_var_value@variable_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p_ID,local r_name
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_ID,var __p4set,local r_name
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,local loc_sch,local loc_hit
loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
loc_hit=is_hit_after_var_search@variable_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_var_value@variable_manage(__p_name,loc_sch)
}
}
return -1
#deffunc local dump
; dump@mod_variable o_var.0
; dump@mod_variable o_var.1
return
#deffunc local output
sdim _4note_v_op,64000
_4note_v_op=""
_4op=""
notesel _4note_v_op
repeat fv_ID
get_v4op@mod_variable o_var.cnt,_4op
_4note_v_op+=""+_4op+"\n"
loop
notesave output_variable_FILE_NAME
noteunsel
return
#global


No.682 RE:必殺!チラウラスレver0.4 Date: 2016/06/05(日) 19:01
Name :Y_repeat  7SM67tY6bA  HOME
indexを途中からにしても結局上から辿るかw

No.681 RE:必殺!チラウラスレver0.4 Date: 2016/06/05(日) 18:59
Name :Y_repeat  7SM67tY6bA  HOME
indexを辿りたい場所からにすればいいのかw
indexとpcの管理は似てる変数だからややこしくありますがw

pc=1
index=1
if pc==index{
mes "A"
pc++
}
index++
if pc==index{
mes "B"
pc++
}
index++
if pc==index{
goto *cont
}
index++
if pc==index{
mes C
}
*cont
index=2
pc=3
if pc==index{
mes "A"
pc++
}
index++
if pc==index{
mes "B"
pc++
}
index++
if pc==index{
mes "C"
pc++
}
index++
if pc==index{
stop
}
index++
if pc==index{
mes C
}


No.680 RE:必殺!チラウラスレver0.4 Date: 2016/06/05(日) 18:55
Name :Y_repeat  7SM67tY6bA  HOME
sampleです
上からしか辿れないですけどw
毎回、辿ってやれ!みたいな勢いでw

pc=1
index=1
if pc==index{
mes "A"
pc++
}
index++
if pc==index{
mes "B"
pc++
}
index++
if pc==index{
goto *cont
}
index++
if pc==index{
mes C
}
*cont
index=1
pc=2
if pc==index{
mes "A"
pc++
}
index++
if pc==index{
mes "B"
pc++
}
index++
if pc==index{
stop
}
index++
if pc==index{
mes C
}


No.679 RE:必殺!チラウラスレver0.4 Date: 2016/06/05(日) 03:12
Name :Y_repeat  7SM67tY6bA  HOME
+=とか/=とか実装


goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var
#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_jz
#enum en_jnz
#enum en_calc
#enum en_do_calc

#enum en_add
#enum en_sub
#enum en_mul
#enum en_div
#enum en_mod
#enum en_eqadd
#enum en_eqsub
#enum en_eqmul
#enum en_eqdiv
#enum en_eqmod

*com_subr
switch cr_com
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):swbreak
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:swbreak
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_do_calc: gosub *com_calc: swbreak
case en_calc: swbreak
swend
return
*com_calc
switch cr_calc
case en_add: reg_r=reg1+reg2:swbreak
case en_sub: reg_r=reg1-reg2:swbreak
case en_mul: reg_r=reg1*reg2:swbreak
case en_div: reg_r=reg1/reg2:swbreak
case en_mod: reg_r=reg1\reg2:swbreak
case en_eqadd: reg1+=reg2:swbreak
case en_eqsub: reg1-=reg2:swbreak
case en_eqmul: reg1*=reg2:swbreak
case en_eqdiv: reg1/=reg2:swbreak
case en_eqmod: reg1\=reg2:swbreak
swend
return
*com_sw
switch cr_com
case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*jump4avoid_subr_com



#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
}
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc subr_do_eqcalc_r int p,int p_expr,str p_name,int p_id
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:cr_com=en_do_calc;:mes ""+reg1+":"+reg2
eq_B p+5:cr_calc=p_expr
eq_B p+6:gosub *com_subr
swend
// 代入
get_r_four p+7,p_name,p_id,reg1
return
#deffunc subr_do_eqcalc_r_p int p,int p_expr,str p_name,int p_id,int p5
// 変数値取得
set_p1_four p,p_name,p_id
switch my_pc_B
eq_B p+4:reg2=p5
eq_B p+5:cr_com=en_do_calc
eq_B p+6:cr_calc=p_expr;:mes "1:"+reg1+" 2:"+reg2
eq_B p+7:gosub *com_subr
swend
// 代入
get_r_four p+8,p_name,p_id,reg1
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr;:mes "reg1:"+reg1
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
#deffunc get_var_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn;:mes "rn:"+p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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



*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

begin_var // case 1 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p1",10,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 2 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p2",20,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 3 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"r",30,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_do // case 4: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=100
eq_B 2:reg2=20
swend
// subr_do_calc_r 長さ4命令 int p,int p_expr,str p_name(変数の名前),int p_id(変数のID)
subr_do_calc_r 3,en_add,"r",30
cmd_fin
}
any { // case 5 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="100 + 20 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 6: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=30
eq_B 2:reg2=200
swend
subr_do_calc_r 3,en_sub,"r",30
cmd_fin
}
any { // case 7 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="30 - 200 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 8: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=11
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_mul,"r",30
cmd_fin
}
any { // case 9 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="11 * 5 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 10: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=21
eq_B 2:reg2=4
swend
subr_do_calc_r 3,en_div,"r",30
cmd_fin
}
any { // case 11 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="21 / 4 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 12: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=33
eq_B 2:reg2=10
swend
subr_do_calc_r 3,en_mod,"r",30
cmd_fin
}
any { // case 13 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="33 \\ 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}

begin_do // case 14: calc
sta_c {
// subr_do_calc_r_pp 長さ6命令 int p,int p_expr,str p_name(変数の名前),int p_id(変数のID),int p5,int p6
subr_do_calc_r_pp 1,en_add,"r",30,50,400
cmd_fin
}
any { // case 15 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="50 + 400 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 16: calc
sta_c {
subr_do_calc_r_pp 1,en_sub,"r",30,70,550
cmd_fin
}
any { // case 17 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="70 - 550 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 18: set
sta_c {
get_var_four 1,"p1",10,10
cmd_fin
}
any { // case 19 dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 20: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg2=20
; mes ""+reg1+" "+reg2
swend
subr_do_eqcalc_r 2,en_eqadd,"p1",10
cmd_fin
}
any { // case 21 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="10 += 20 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 20: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg2=50
; mes ""+reg1+" "+reg2
swend
subr_do_eqcalc_r 2,en_eqsub,"p1",10
cmd_fin
}
any { // case 21 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="30 -= 50 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
any { // case 22 dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 23: calc
sta_c {
// 変数値取得
subr_do_eqcalc_r_p 1,en_eqmul,"p1",10,2
cmd_fin
}
any { // case 24 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="-20 *= 2 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 25: calc
sta_c {
subr_do_eqcalc_r_p 1,en_eqdiv,"p1",10,3
cmd_fin
}
any { // case 26 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="-40 /= 3 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 27: calc
sta_c {
subr_do_eqcalc_r_p 1,en_eqmod,"p1",10,10
cmd_fin
}
any { // case 28 mes
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="-13 \\= 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
any { // case 29 dump
switch my_pc_B
eq_B_two 1,"p1",10
eq_B 3:reg_show1=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 4,"p2",20
eq_B 6:reg_show2=get_x_var_value@variable_manage(cp1,cp2)
eq_B_two 7,"r",30
eq_B 9:reg_show3=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 10:cp1="v1:"+reg_show1+" v2:"+reg_show2+" v3:"+reg_show3
eq_B 11:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 30 EOF
// EOF


No.678 RE:必殺!チラウラスレver0.4 Date: 2016/06/05(日) 01:40
Name :Y_repeat  7SM67tY6bA  HOME
数値計算処理記述中

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "subr_bool.hsp"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
}
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
//長さ6命令
#deffunc subr_do_calc_r_pp int p,int p_expr,str p_name,int p_id,int p5,int p6
switch my_pc_B
eq_B p :reg1=p5
eq_B p+1:reg2=p6
eq_B p+2:cr_com=en_do_calc
eq_B p+3:cr_calc=p_expr
eq_B p+4:gosub *com_subr
swend
// 代入
get_r_four p+5,p_name,p_id,reg_r
return
#deffunc subr_do_calc_r int p,int p_expr,str p_name,int p_id
switch my_pc_B
eq_B p:cr_com=en_do_calc
eq_B p+1:cr_calc=p_expr
eq_B p+2:gosub *com_subr
swend
// 代入
get_r_four p+3,p_name,p_id,reg_r
return
#deffunc _2bool_subr str p_name,int p_id
// 変数値取得
set_p1_four 1,p_name,p_id
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:gosub *com_subr
swend
// 代入
get_r_four 6,p_name,p_id,reg_r
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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



*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

begin_var // case 1 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p1",10,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 2 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p2",20,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 3 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"r",30,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_do // case 4: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=100
eq_B 2:reg2=20
swend
// subr_do_calc_r 長さ4命令 int p,int p_expr,str p_name(変数の名前),int p_id(変数のID)
subr_do_calc_r 3,en_add,"r",30
cmd_fin
}
any { // case 5 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="100 + 20 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 6: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=30
eq_B 2:reg2=200
swend
subr_do_calc_r 3,en_sub,"r",30
cmd_fin
}
any { // case 7 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="30 - 200 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 8: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=11
eq_B 2:reg2=5
swend
subr_do_calc_r 3,en_mul,"r",30
cmd_fin
}
any { // case 9 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="11 * 5 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 10: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=21
eq_B 2:reg2=4
swend
subr_do_calc_r 3,en_div,"r",30
cmd_fin
}
any { // case 11 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="21 / 4 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 12: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=33
eq_B 2:reg2=10
swend
subr_do_calc_r 3,en_mod,"r",30
cmd_fin
}
any { // case 13 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="33 \\ 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}

begin_do // case 14: calc
sta_c {
// subr_do_calc_r_pp 長さ6命令 int p,int p_expr,str p_name(変数の名前),int p_id(変数のID),int p5,int p6
subr_do_calc_r_pp 1,en_add,"r",30,50,400
cmd_fin
}
any { // case 15 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="50 + 400 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 16: calc
sta_c {
subr_do_calc_r_pp 1,en_sub,"r",30,70,550
cmd_fin
}
any { // case 17 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="70 - 550 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 18 EOF
// EOF


No.677 RE:必殺!チラウラスレver0.4 Date: 2016/06/05(日) 00:30
Name :Y_repeat  7SM67tY6bA  HOME
とうとう数値計算にはいってきたかんじですw


goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var
#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_jz
#enum en_jnz
#enum en_calc
#enum en_do_calc

#enum en_add
#enum en_sub
#enum en_mul
#enum en_div
#enum en_mod

*com_subr
switch cr_com
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):swbreak
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:swbreak
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_do_calc: gosub *com_calc: swbreak
case en_calc: swbreak
swend
return
*com_calc
switch cr_calc
case en_add: reg_r=reg1+reg2:swbreak
case en_sub: reg_r=reg1-reg2:swbreak
case en_mul: reg_r=reg1*reg2:swbreak
case en_div: reg_r=reg1/reg2:swbreak
case en_mod: reg_r=reg1\reg2:swbreak
swend
return
*com_sw
switch cr_com
case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*jump4avoid_subr_com



*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

begin_var // case 1 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p1",10,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 2 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"p2",20,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_var // case 3 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"r",30,0)
eq_B 5:my_pc_B=1:label_pc++
}
}

begin_do // case 4: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=100
eq_B 2:reg2=20
swend
// 演算
switch my_pc_B
eq_B 3:cr_com=en_do_calc:cr_calc=en_add:gosub *com_subr
swend
// 代入
get_r_four 4,"r",30,reg_r:cmd_fin
}
any { // case 5 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="100 + 20 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 6: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=30
eq_B 2:reg2=200
swend
// 演算
switch my_pc_B
eq_B 3:cr_com=en_do_calc:cr_calc=en_sub:gosub *com_subr
swend
// 代入
get_r_four 4,"r",30,reg_r:cmd_fin
}
any { // case 7 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="30 - 200 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 8: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=11
eq_B 2:reg2=5
swend
// 演算
switch my_pc_B
eq_B 3:cr_com=en_do_calc:cr_calc=en_mul:gosub *com_subr
swend
// 代入
get_r_four 4,"r",30,reg_r:cmd_fin
}
any { // case 9 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="11 * 5 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 10: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=21
eq_B 2:reg2=4
swend
// 演算
switch my_pc_B
eq_B 3:cr_com=en_do_calc:cr_calc=en_div:gosub *com_subr
swend
// 代入
get_r_four 4,"r",30,reg_r:cmd_fin
}
any { // case 11 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="21 / 4 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 12: calc
sta_c {
// 変数値取得
switch my_pc_B
eq_B 1:reg1=33
eq_B 2:reg2=10
swend
// 演算
switch my_pc_B
eq_B 3:cr_com=en_do_calc:cr_calc=en_mod:gosub *com_subr
swend
// 代入
get_r_four 4,"r",30,reg_r:cmd_fin
}
any { // case 13 mes
switch my_pc_B
eq_B_two 1,"r",30
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="33 \\ 10 の値は r:"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 14 EOF
// EOF


No.676 RE:必殺!チラウラスレver0.4 Date: 2016/06/04(土) 23:52
Name :Y_repeat  7SM67tY6bA  HOME
抽象化からは後退しましたがバグ一個潰れましたw

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

any_l { // case 1: def label
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"begin",2,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 2 mes
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="tmpの値は"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 3 jnz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_2nd",20)
}
sta_c {
switch my_pc_B
eq_B_two 4,"tmp",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}
}
}
any { // case 4 mes
subr_do_eq_2_p3s 1,en_mes,"tmpの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 5 def label
subr_do_eq_ldef4 1,"_2nd",20,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_var // case 6 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"tmp",10,0)
eq_B 5:my_pc_B=1:label_pc++
}
}
begin_do // case 7: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:reg1+=1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"tmp",10,reg1:cmd_fin
}
begin_var // case 8 def var
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(1,"flag",12,0)
eq_B 5:my_pc_B=1:label_pc++
}
}
begin_do // case 9: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:reg_r=reg1!=4
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"flag",12,reg_r:cmd_fin
}
begin_do // case 10: calc
sta_c {
_2bool_subr "flag",12
cmd_fin
}
begin_do // case 11 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_3rd",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"flag",12
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}
}
}
begin_do // case 12 goto
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"begin",2)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 13 def label
subr_do_eq_ldef4 1,"_3rd",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 14 EOF
// EOF


No.675 RE:必殺!チラウラスレver0.4 Date: 2016/06/04(土) 23:14
Name :Y_repeat  7SM67tY6bA  HOME
calcしてるblock分割とboolモジュール書きました

#define bool_true 1
#define bool_false 0
#module
#defcfunc calc_bool int p
if p==bool_false@:return bool_false@
return bool_true@
#global



begin_do // case 7: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:reg_r=reg1!=4
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"flag",12,reg_r:cmd_fin
}
begin_do // case 8: calc
sta_c {
// 変数値取得
set_p1_four 1,"flag",12
// 演算
switch my_pc_B
eq_B 5:reg_r=calc_bool(reg1)
; mes ""+reg_r
; eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"flag",12,reg_r:cmd_fin
}


No.674 RE:必殺!チラウラスレver0.4 Date: 2016/05/26(木) 19:12
Name :Y_repeat  7SM67tY6bA  HOME
こんなのをユニークラベルを使って抽象化出来ないか?とw

dim num,256
repeat 256
num=cnt
loop
ldim ar_lpc,15
ar_lpc.1=*lpc01
ar_lpc.2=*lpc02
ar_lpc.3=*lpc03
ar_lpc.4=*lpc04
index=1:pc=1
;index=2:pc=2
;index=1:pc=2
goto *hub
index=1
*lpc01
if pc==index{
pc++
mes "A"
}
index++
*lpc02
if pc==index{
pc++
mes "B"
}
index++
*lpc03
if pc==index{
pc++
stop
}
index++
*lpc04
if pc==index{
pc++
mes C
}

stop
*hub
goto ar_lpc.index


No.673 RE:必殺!チラウラスレver0.4 Date: 2016/05/26(木) 18:13
Name :Y_repeat  7SM67tY6bA  HOME
公式BBSの続きです
http://hsp.tv/play/pforum.php?mode=all&num=75559
どうせ誰も何も言ってくれないとか
やさぐれつつw

順に上から動かすならいいんですけど
途中にjumpしたい時も上からたどらねばいけませんなw

dim num,256
repeat 256
num=cnt
loop

index=1
if pc==num.index{
mes "A"
}
index++
if pc==num.index{
mes "B"
}
index++
if pc==num.index{
stop
}
index++
if pc==num.index{
mes C
}


No.672 RE:必殺!チラウラスレver0.4 Date: 2016/05/23(月) 07:02
Name :Y_repeat  7SM67tY6bA  HOME
Bも演算処理簡略化w


*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

any_l { // case 1: def label
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"begin",2,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 2 mes
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="tmpの値は"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 3 jnz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_2nd",20)
}
sta_c {
switch my_pc_B
eq_B_two 4,"tmp",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}
}
}
any { // case 4 mes
subr_do_eq_2_p3s 1,en_mes,"tmpの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 5 def label
subr_do_eq_ldef4 1,"_2nd",20,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 6: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:reg1+=1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"tmp",10,reg1:cmd_fin
}
begin_do // case 7: calc
sta_c {
// 変数値取得
set_p1_four 1,"tmp",10
// 演算
switch my_pc_B
eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"flag",12,reg2:cmd_fin
}
begin_do // case 8 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_3rd",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"flag",12
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}
}
}
begin_do // case 9 goto
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"begin",2)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 10 def label
subr_do_eq_ldef4 1,"_3rd",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_var // case 11 def var
sta_l {
do_eq_vardef_four(1,"tmp",10,0)
do_eq_vardef_four(5,"flag",12,0)
}
begin_do // case 38 EOF
// EOF


No.671 RE:必殺!チラウラスレver0.4 Date: 2016/05/23(月) 06:41
Name :Y_repeat  7SM67tY6bA  HOME
マイナーアップデートです
演算処理を簡略化

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

;begin_do
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
any { // case 2: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
any { // case 3: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 4:
// read label
sta_c {
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
switch my_pc_B
eq_B 4:cp1="X足す1"
eq_B 5:bt_pc_1=my_label
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
begin_do // case 5:

// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
// button
sta_c {
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
any { // case 6: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 8: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++
}
}
begin_do // case 10: calc x=x+1
sta_c {
// 変数値取得
set_p1_four 1,"x",10
// 演算
switch my_pc_B
eq_B 5:reg3=reg1+1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"x",10,reg3:cmd_fin
}
begin_do // case 11: calc y+=2
sta_c {
// 変数値取得
set_p2_four 1,"y",20
// 演算
switch my_pc_B
eq_B 5:reg2+=2
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"y",20,reg2:cmd_fin
}
begin_do // case 12:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
any_l { // case 13:"ab1" def label
do_eq_ldef_four(1,"ab1",12,label_pc)
}
begin_do // case 14: calc x=x-1
sta_c {
// 変数値取得
set_p1_four 1,"x",10
// 演算
switch my_pc_B
eq_B 5:reg3=reg1-1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"x",10,reg3:cmd_fin
}
begin_do // case 15: calc y-=2
sta_c {
// 変数値取得
set_p2_four 1,"y",20
// 演算
switch my_pc_B
; logmes "通過check C2"
eq_B 5:reg2-=2
eq_B 6:cr_com=en_calc:goto *com_sw
swend
// 代入
get_r_four 7,"y",20,reg2:cmd_fin
}
begin_do // case 16
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}

any_l { // case 17:"ax1a" def label
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
any { // case 18 cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 19 objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 20
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any { // case 21 pos
do_eq_three(1,en_pos,150,0)
}
any { // case 22 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
logmes ""+reg1
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です"
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
any { // case 23: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 24 EOF
// EOF


No.670 RE:必殺!チラウラスレver0.4 Date: 2016/05/23(月) 06:26
Name :Y_repeat  7SM67tY6bA  HOME
計算処理とか中間言語っぽくしよーかな。と
まだまだ そっちいけるw
なんか ちょいやってみようかとなって
少々反映出来たかんじw

読み込みsampleをAにしてね

#ifndef ifdefSW
#define ifdefSW 1
#define global script_FILE_NAME "no_6xxAP2_script_A.hsp"
#define global main_FILE_NAME "no_6xxAP.hsp"
#define global commnad_FILE_NAME "no_6x_subr_command.hsp"
#define global label_manage_FILE_NAME "no_6x_subr_var_label_manage.hsp"
//no_6x_subr_var_label_manage.hspで使ってる
#define global output_label_FILE_NAME "output_label.txt"
//no_6x_subr_var_label_manage.hspで使ってる
#define global output_variable_FILE_NAME "output_variable.txt"
// 1:script実行 0:script実行しないdumpとかはするw
FLAG_DO_SCRIPT=1
#define global analyze_01_FILE_NAME "line_analyze.hsp"
#define global analyze_02_FILE_NAME "line_analyze_add_script.hsp"

#define line_data_dump "line_dump.txt"
#define _1st_analyzed_data "1st_analyzed_line_dat.txt"
#define _2nd_analyzed_data "2nd_analyzed_dat.txt"
#endif



goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var
#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_jz
#enum en_jnz
#enum en_calc
*com_subr
switch cr_com
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):swbreak
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:swbreak
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_calc: swbreak
swend
return

*com_sw
switch cr_com
case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*jump4avoid_subr_com



#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
}
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
#deffunc set_p1_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc set_p2_four int n,str p_name,int p_id
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cr_com=en_get_from_var:gosub *com_subr
case n+3:my_pc_B++:reg2=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
return
#deffunc get_r_four int n,str p_name,int p_id,int p_rn
switch my_pc_B
case n: my_pc_B++:cp1=p_name
case n+1:my_pc_B++:cp2=p_id
case n+2:my_pc_B++:cp3=p_rn
case n+3:my_pc_B++:cr_com=en_set_to_var:gosub *com_subr
; case n+3:my_pc_B++:reg2=cpr
; eq_B_three 7,"x",10,reg3
; eq_B 10:cr_com=en_set_to_var:cmd_fin
swend
return
*subr_avoid
;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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



*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

;begin_do
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
any { // case 2: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
any { // case 3: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 4:
// read label
sta_c {
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
switch my_pc_B
eq_B 4:cp1="X足す1"
eq_B 5:bt_pc_1=my_label
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
begin_do // case 5:

// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
// button
sta_c {
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
any { // case 6: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 8: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++
}
}
begin_do // case 10: calc x=x+1
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
set_p1_four 1,"x",10
}
// 演算
sta_c {
switch my_pc_B
eq_B 5:reg3=reg1+1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
get_r_four 7,"x",10,reg3:cmd_fin
}
begin_do // case 11: calc y+=2
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
set_p2_four 1,"y",20
}
// 演算
sta_c {
switch my_pc_B
eq_B 5:reg2+=2
eq_B 6:cr_com=en_calc:goto *com_sw
swend
}
sta_c {
get_r_four 7,"y",20,reg2:cmd_fin
}
begin_do // case 12:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
any_l { // case 13:"ab1" def label
do_eq_ldef_four(1,"ab1",12,label_pc)
}
begin_do // case 14: calc x=x-1
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
set_p1_four 1,"x",10
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 5:reg3=reg1-1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
get_r_four 7,"x",10,reg3:cmd_fin
}
begin_do // case 15: calc y-=2
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
set_p2_four 1,"y",20
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 5:reg2-=2
eq_B 6:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
get_r_four 7,"y",20,reg2:cmd_fin
}
begin_do // case 16
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}

any_l { // case 17:"ax1a" def label
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
any { // case 18 cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 19 objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 20
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any { // case 21 pos
do_eq_three(1,en_pos,150,0)
}
any { // case 22 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
logmes ""+reg1
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です"
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
any { // case 23: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 24 EOF
// EOF


No.669 RE:必殺!チラウラスレver0.4 Date: 2016/05/11(水) 02:20
Name :Y_repeat  7SM67tY6bA  HOME
ちょいリファクタ。マイナーアップデートです

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
}
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
}
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
}
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
}
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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



*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

any_l { // case 1: def label
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"begin",2,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 2 mes
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 4:cp1="tmpの値は"+reg1+"です"
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 3 jnz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_2nd",20)
}
sta_c {
switch my_pc_B
eq_B_two 4,"tmp",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}
}
}
any { // case 4 mes
subr_do_eq_2_p3s 1,en_mes,"tmpの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 5 def label
subr_do_eq_ldef4 1,"_2nd",20,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}

begin_do // case 6: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 5:reg1+=1
eq_B 6:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 7,"tmp",10,reg1
eq_B 10:cr_com=en_set_to_var:goto *com_sw
swend
switch my_pc_B
eq_B 11
logmes "通過check B":cmd_fin
swend
}

begin_do // case 7: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 5:if reg1==4{reg2=0}else{reg2=1}
eq_B 6:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 7,"flag",12,reg2
eq_B 10:cr_com=en_set_to_var:goto *com_sw
swend
switch my_pc_B
eq_B 11
logmes "通過check B":cmd_fin
swend
}
begin_do // case 8 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_3rd",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"flag",12
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}
}
}
begin_do // case 9 goto
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"begin",2)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 10 def label
subr_do_eq_ldef4 1,"_3rd",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_var // case 11 def var
sta_l {
do_eq_vardef_four(1,"tmp",10,0)
do_eq_vardef_four(5,"flag",12,0)
}
begin_do // case 38 EOF
// EOF


No.668 RE:必殺!チラウラスレver0.4 Date: 2016/05/11(水) 02:02
Name :Y_repeat  7SM67tY6bA  HOME
サンプル構成してみました
やたらルール忘れてたりw
作者が書いているのにすらw 
大丈夫か?このシステム? みたいなw


*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

any_l { // case 1: def label
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"begin",2,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 2 mes
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B 4:cp1="tmpの値は"+reg1+"です":goto *sw_begin
eq_B 5:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 3 jnz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_2nd",20)
}
sta_c {
switch my_pc_B
eq_B_two 4,"tmp",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
any { // case 4 mes
subr_do_eq_2_p3s 1,en_mes,"tmpの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 5 def label
subr_do_eq_ldef4 1,"_2nd",20,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}

begin_do // case 6: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 5:reg1+=1:goto *sw_begin
eq_B 6:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 7,"tmp",10,reg1
eq_B 10:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B 11
logmes "通過check B":cmd_fin
swend
}

begin_do // case 7: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"tmp",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 5:if reg1==4{reg2=0}else{reg2=1}:goto *sw_begin
eq_B 6:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 7,"flag",12,reg2
eq_B 10:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B 11
logmes "通過check B":cmd_fin
swend
}
begin_do // case 8 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"_3rd",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"flag",12
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
begin_do // case 9 goto
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"begin",2)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 10 def label
subr_do_eq_ldef4 1,"_3rd",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_var // case 11 def var
sta_l {
do_eq_vardef_four(1,"tmp",10,0)
do_eq_vardef_four(5,"flag",12,0)
}
begin_do // case 38 EOF
// EOF


No.667 RE:必殺!チラウラスレver0.4 Date: 2016/05/09(月) 05:18
Name :Y_repeat  7SM67tY6bA  HOME
ちょい戻して goto文を減らそうかな。と 基本gotoで戻るんじゃなくて 下に進もうかな。と
sampleも長い気がするので分割しよう。と
制御構文のsampleを付け加えると長すぎになりそうなので

main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:}
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2: }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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


sample

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

;begin_do
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
any { // case 2: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
any { // case 3: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 4:
// read label
sta_c {
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
switch my_pc_B
eq_B 4:cp1="X足す1"
eq_B 5:bt_pc_1=my_label
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
begin_do // case 5:

// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
// button
sta_c {
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
any { // case 6: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 8: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++
}
}
begin_do // case 10: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 9:reg3=reg1+1
eq_B 10:reg2+=2
eq_B 11:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
begin_do // case 11:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
any_l { // case 12:"ab1" def label
do_eq_ldef_four(1,"ab1",12,label_pc)
}
begin_do // case 13: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1
eq_B 10:reg2-=2
eq_B 11:cr_com=en_calc:goto *com_sw
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
begin_do // case 14
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}

any_l { // case 15:"ax1a" def label
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
any { // case 16 cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 17 objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 18
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any { // case 19 pos
do_eq_three(1,en_pos,150,0)
}
any { // case 20 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2)
logmes ""+reg1
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2)
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です"
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
any { // case 21: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 22 EOF
// EOF


No.666 RE:必殺!チラウラスレver0.4 Date: 2016/05/09(月) 05:16
Name :Y_repeat  7SM67tY6bA  HOME
悪魔の数字レスw

No.665 RE:必殺!チラウラスレver0.4 Date: 2016/04/11(月) 19:50
Name :Y_repeat  7SM67tY6bA  HOME
sampleです
変数を使う前にレジスタもどきに代入してたんですが
getter的使用で使う時に値を返すのはどうなんだ?と

#module var_manage
#deffunc local init
dim stock_ar,260
return
#deffunc local set int p_id,int p
stock_ar.p_id=p
return
#defcfunc local get_var int p
return stock_ar.p
#global
init@var_manage
set@var_manage 'a',1
set@var_manage 'b',10
mes get_var@var_manage('a')+get_var@var_manage('b')


No.664 RE:必殺!チラウラスレver0.4 Date: 2016/04/11(月) 03:39
Name :Y_repeat  7SM67tY6bA  HOME
実装する気のない妄想w

文字列内じゃなく
スクリプト中全部"を\"等にするw
文字列への切り取りのみが"
逆もありやね

No.661 RE:必殺!チラウラスレver0.4 Date: 2016/03/29(火) 19:17
Name :Y_repeat  7SM67tY6bA  HOME
本日のチラウラーw

昨日、ヒカルの碁のDVD観るの再開しました
GAMECUBEのヒカルの碁のゲームをしたらぼろ負け
石9個取ってる間に地を固められ負けましたw
でも以前は石を取れなかったので
やんないうちに熟成された部分ありw

で、何が言いたいかというと
碁の棋譜を並べるように 写経していけたら。みたいなw
何個か写経中のあって
RubyHackinGuideも久しぶりに読んだら 内容が昔より易しい気がw
プログラム処理系を書いた経験あるならではの なるほどなるほど感でした

プログラム処理系作成は停滞してますが
とりあえず こんなかんじで インプットしています

No.657 RE:必殺!チラウラスレver0.4 Date: 2016/03/01(火) 05:33
Name :Y_repeat  7SM67tY6bA  HOME
更にsample20%減です
mainが増えてるともw

main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label}:\
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label}:\
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
#define global ctype any_l_eq_ldef_four(%1,%2,%3,%4) any_l { do_eq_ldef_four(%1,%2,%3,%4) }
#define global ctype any_subr_eq_ldef4(%1,%2,%3,%4) any_l { subr_do_eq_ldef4 %1,%2,%3,%4:if is_jump_p==1{ is_jump_p=0:goto global_label } }

;#define ctype global any_subr_eq_ldef4(%1,%2,%3,%4) any_l { subr_do_eq_ldef4 %1,%2,%3,%4:if is_jump_p==1{ is_jump_p=0:goto global_label } }
;any_l { // case 31: def label
; subr_do_eq_ldef4 1,"L4jnz",30,label_pc
; if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
; }
#define global ctype anysubr_do_eq_1(%1,%2) any { subr_do_eq_1 %1,%2:if is_jump_p==1{is_jump_p=0:goto global_label} }
;any { // case 37 stop
; subr_do_eq_1 1,en_stop
; if is_jump_p==1:is_jump_p=0:goto global_label
; }
#define global ctype any_do_eq_3(%1,%2,%3,%4) any { do_eq_three(%1,%2,%3,%4) }
;any { // case 35 pos
; do_eq_three(1,en_pos,150,0)
; }
#define global ctype some_eq_three_lread(%1,%2,%3,%4) sta_c { do_eq_three_lread(%1,%2,%3,%4) }
; sta_c {
; logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
; do_eq_three_lread(1,en_get_my_label,"aa1",11)
; }
#define global ctype some_eq_button_A(%1,%2,%3) sta_c { subr_label=%2 : do_eq_button_A_two_add1 %1,%3 }
; sta_c {
; subr_label=my_label
; do_eq_button_A_two_add1 4,"X足す1"
; }
#define global ctype some_eq_button_B(%1,%2,%3) sta_c { subr_label=%2 : do_eq_button_B_two_add1 %1,%3 }
; sta_c {
; subr_label=my_label
; do_eq_button_B_two_add1 4,"X引く1"
; 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
; }
#define global ctype some_eq_2_p3_goto(%1,%2,%3):\
sta_c { subr_do_eq_2_p3var %1,%2,%3 : if is_jump_p==1{ is_jump_p=0:goto global_label } }
// goto
; sta_c {
; subr_do_eq_2_p3var 4,en_goto,my_label
; if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
; }
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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


sample

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

;begin_do
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
anysubr_do_eq_1(1,en_cls0) // case 2: cls 0
any_do_eq_3(1,en_objsize,120,24) // case 3: objsize
begin_do // case 4:
// read label
some_eq_three_lread(1,en_get_my_label,"aa1",11)
// button
some_eq_button_A(4,my_label,"X足す1")
begin_do // case 5:
// read label
some_eq_three_lread(1,en_get_my_label,"ab1",12)
// button
some_eq_button_B(4,my_label,"X引く1")
any_do_eq_3(1,en_pos,150,0) // case 6: pos
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
anysubr_do_eq_1(1,en_stop) // case 8: stop
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
begin_do // case 10: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
begin_do // case 11:
// read label
some_eq_three_lread(1,en_get_my_label,"ax1a",21)
// goto
some_eq_2_p3_goto(4,en_goto,my_label)
any_l_eq_ldef_four(1,"ab1",12,label_pc) // case 12:"ab1" def label
begin_do // case 13: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
begin_do // case 14
// read label
some_eq_three_lread(1,en_get_my_label,"ax1a",21)
// goto
some_eq_2_p3_goto(4,en_goto,my_label)
any_l_eq_ldef_four(1,"ax1a",21,label_pc) // case 15:"ax1a" def label
anysubr_do_eq_1(1,en_cls0) // case 16 cls 0
any_do_eq_3(1,en_objsize,120,24) // case 17 objsize
begin_do // case 18
// read label
some_eq_three_lread(1,en_get_my_label,"a",1)
// button
some_eq_button_A(4,my_label,"NEXT")
any_do_eq_3(1,en_pos,150,0) // case 19 pos
any { // case 20 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 21 jz
// read label var
some_eq_three_lread(1,en_get_my_label,"L4jz",31)
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
begin_do // case 22tmp
// read label var
some_eq_three_lread(1,en_get_my_label,"L4jnz",30)
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
anysubr_do_eq_1(1,en_stop) // case 23 stop
any_l_eq_ldef_four(1,"L4jz",31,label_pc) // case 24: def label
anysubr_do_eq_1(1,en_cls0) // case 25 cls 0
any_do_eq_3(1,en_objsize,120,24) // case 26 objsize
begin_do // case 27
// read label
some_eq_three_lread(1,en_get_my_label,"a",1)
// button
some_eq_button_A(4,my_label,"NEXT")
any_do_eq_3(1,en_pos,150,0) // case 28 pos
any { // case 29 mes
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
anysubr_do_eq_1(1,en_stop) // case 30 stop
any_l_eq_ldef_four(1,"L4jnz",30,label_pc) // case 31: def label
anysubr_do_eq_1(1,en_cls0) // case 32 cls 0
any_do_eq_3(1,en_objsize,120,24) // case 33 objsize
begin_do // case 34
// read label
some_eq_three_lread(1,en_get_my_label,"a",1)
// button
some_eq_button_A(4,my_label,"NEXT")
any_do_eq_3(1,en_pos,150,0) // case 35 pos
any { // case 36 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
anysubr_do_eq_1(1,en_stop) // case 37 stop
begin_do // case 38 EOF
// EOF


No.656 RE:必殺!チラウラスレver0.4 Date: 2016/03/01(火) 04:54
Name :Y_repeat  7SM67tY6bA  HOME
先日、ぐぐってリアンティラVECTORで改めてDLしました
デフォエディタより使い込み易いのかなーとも思いましてw
りささんの意図とか 使用者さんの立ち位置とかも 含めて
こっちのスクリプトでも使ってみよかなーw

最初、リアンティラは上下分割だけだったんですけど
理由は画面が大きいからでしょうね
って今、思いましたw
自分はノート派なので画面ちっちゃいw

マクロ増やしました
それにともない サンプルの行数20%減w
main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label}:\
if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label}:\
if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
#define global ctype any_l_eq_ldef_four(%1,%2,%3,%4) any_l { do_eq_ldef_four(%1,%2,%3,%4) }
#define global ctype any_subr_eq_ldef4(%1,%2,%3,%4) any_l { subr_do_eq_ldef4 %1,%2,%3,%4:if is_jump_p==1{ is_jump_p=0:goto global_label } }

;#define ctype global any_subr_eq_ldef4(%1,%2,%3,%4) any_l { subr_do_eq_ldef4 %1,%2,%3,%4:if is_jump_p==1{ is_jump_p=0:goto global_label } }
;any_l { // case 31: def label
; subr_do_eq_ldef4 1,"L4jnz",30,label_pc
; if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
; }
#define global ctype anysubr_do_eq_1(%1,%2) any { subr_do_eq_1 %1,%2:if is_jump_p==1{is_jump_p=0:goto global_label} }
;any { // case 37 stop
; subr_do_eq_1 1,en_stop
; if is_jump_p==1:is_jump_p=0:goto global_label
; }
#define global ctype any_do_eq_3(%1,%2,%3,%4) any { do_eq_three(%1,%2,%3,%4) }
;any { // case 35 pos
; do_eq_three(1,en_pos,150,0)
; }
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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


script

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

;begin_do
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
anysubr_do_eq_1(1,en_cls0) // case 2: cls 0
any_do_eq_3(1,en_objsize,120,24) // case 3: objsize
begin_do // case 4:
// read label
sta_c {
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
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 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
begin_do // case 5:
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
// button
sta_c {
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
any_do_eq_3(1,en_pos,150,0) // case 6: pos
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
anysubr_do_eq_1(1,en_stop) // case 8: stop
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
begin_do // case 10: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
begin_do // case 11:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
any_l_eq_ldef_four(1,"ab1",12,label_pc) // case 12:"ab1" def label
begin_do // case 13: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
begin_do // case 14
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l_eq_ldef_four(1,"ax1a",21,label_pc) // case 15:"ax1a" def label
anysubr_do_eq_1(1,en_cls0) // case 16 cls 0
any_do_eq_3(1,en_objsize,120,24) // case 17 objsize
begin_do // case 18
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any_do_eq_3(1,en_pos,150,0) // case 19 pos
any { // case 20 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 21 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"L4jz",31)
}
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
begin_do // case 22tmp
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"L4jnz",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
anysubr_do_eq_1(1,en_stop) // case 23 stop
any_l_eq_ldef_four(1,"L4jz",31,label_pc) // case 24: def label
anysubr_do_eq_1(1,en_cls0) // case 25 cls 0
any_do_eq_3(1,en_objsize,120,24) // case 26 objsize
begin_do // case 27
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
; dialog "OKjzA"
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
any_do_eq_3(1,en_pos,150,0) // case 28 pos
any { // case 29 mes
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
anysubr_do_eq_1(1,en_stop) // case 30 stop
any_l_eq_ldef_four(1,"L4jnz",30,label_pc) // case 31: def label
anysubr_do_eq_1(1,en_cls0) // case 32 cls 0
any_do_eq_3(1,en_objsize,120,24) // case 33 objsize
begin_do // case 34
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any_do_eq_3(1,en_pos,150,0) // case 35 pos
any { // case 36 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
anysubr_do_eq_1(1,en_stop) // case 37 stop
begin_do // case 38 EOF
// EOF


No.655 RE:必殺!チラウラスレver0.4 Date: 2016/03/01(火) 03:57
Name :Y_repeat  7SM67tY6bA  HOME
前の書き込みから2週間くらい経過しまして
BBS書き込みとしては普通なんでしょうけど
プログラム作成のUPとしては遅いくらいかもw
色々あるとは思うんですけども

たぶん書いたでしょうけど
普通にプログラミング言語を作るのではなく
プログラムを書いたのを利用するという趣旨でやってます
そっちの方がプログラミング言語を1から作るより大分楽なはず
はずだったんですがw
先例を知らなくて 荒野を横に突っ切る感覚があります

プログラミング言語っぽいものを作る例として
全然、コーディング時間がかかってないっちゃあないんですがw

allright版プリントアウトして読もうかなと思ったんですが
はかどんないはかどんないw

ではマクロ増やしたUPっすw
マクロ減らす方向だったんですが
まだまだ増えそうな現状ですw

main

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
#define global any my_line=int(__LINE__):if subr_do_label(ret_label)==1{goto ret_label} if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)))
#define global any_l my_line=int(__LINE__):if subr_do_baz(ret_label)==1{goto ret_label} if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)))
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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


sample

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

;begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
any_l {
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

;begin_do
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
any { // case 2: cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
any { // case 3: objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 4:
// read label
sta_c {
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
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 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
begin_do // case 5:

// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
// button
sta_c {
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
any { // case 6: pos
do_eq_three(1,en_pos,150,0)
}
any { // case 7: mes
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 8: stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
begin_do // case 10: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
begin_do // case 11:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
any_l { // case 12:"ab1" def label
do_eq_ldef_four(1,"ab1",12,label_pc)
}
begin_do // case 13: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
begin_do // case 14
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}

any_l { // case 15:"ax1a" def label
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
any { // case 16 cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 17 objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 18
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any { // case 19 pos
do_eq_three(1,en_pos,150,0)
}
any { // case 20 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 21 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"L4jz",31)
}
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
begin_do // case 22tmp
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"L4jnz",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
any { // case 23 stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}

any_l { // case 24: def label
subr_do_eq_ldef4 1,"L4jz",31,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 25 cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 26 objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 27
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
; dialog "OKjzA"
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
any { // case 28 pos
; dialog "OKjzB"
do_eq_three(1,en_pos,150,0)
}
any { // case 29 mes
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 30 stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
any_l { // case 31: def label
subr_do_eq_ldef4 1,"L4jnz",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
any { // case 32 cls 0
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 33 objsize
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 34
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
any { // case 35 pos
do_eq_three(1,en_pos,150,0)
}
any { // case 36 mes
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
any { // case 37 stop
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 38 EOF
// EOF


No.654 RE:必殺!チラウラスレver0.4 Date: 2016/02/17(水) 02:14
Name :Y_repeat  7SM67tY6bA  HOME
やっと制御構文に入りますよーw
変数実装がこのBBS書きこみ制作の最初の頃だったかんじするんですがw
とりあえずサンプル書きました

コメントに関しては
全力でスクリプトを書いてるので そんな余裕なかったりw
いつもは余力を残して書いているので
コメントを書く部分が残っているかんじのような
いつもはコーディング70%コメント30%
今はコーディング100%とw

#module sub_sys_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,var p_l_value
; sdim i_name,500
; sdim i_ID,500
; sdim i_l_value,500
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
#modfunc local get_i_l_value var p_gil
p_gil = i_l_value
return
#modfunc local set_i_l_value var _p4set_value
i_l_value = _p4set_value
return
#modfunc local dump
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
return
#global
#module m_repeat_block rep_var,max_rep_var,num_l_repeat,l_repeat,num_l_loop,l_loop,num_fin_rep,fin_rep,num_ar_l_break,ar_l_break,num_ar_l_continue,ar_l_continue
#modinit
rep_var = 0
num_l_repeat = -1
num_l_loop = -1
num_fin_rep = -1
num_l_break = -1
num_l_continue = -1
return
#modfunc set_l_repeat str _p_name,int _p_ID,var _p_l_value
if num_l_repeat = -1{
newmod l_repeat,sub_sys_label,_p_name,_p_ID,_p_l_value
num_l_repeat = 1
return
}
dialog "you did reg label:A",2
return
#modfunc set_l_loop str _p_name,int _p_ID,var _p_l_value
if num_l_loop = -1{
newmod l_loop,sub_sys_label,_p_name,_p_ID,_p_l_value
num_l_loop = 1
return
}
dialog "you did reg label:B",2
return
#modfunc set_fin_rep str _p_name,int _p_ID,var _p_l_value
if num_fin_rep = -1{
newmod fin_rep,sub_sys_label,_p_name,_p_ID,_p_l_value
num_fin_rep = 1
return
}
dialog "you did reg label:C",2
return
#modfunc set_rep_var int p
max_rep_var = p
return
#modfunc get_rep_var var p_r
p_r = rep_var
return
#modfunc sys_repeat var p_label
; logmes "OK1"
; loc_index = p_r - 1
if rep_var >= max_rep_var{
logmes ""+rep_var
logmes ""+max_rep_var
f_jump@=1:p_label=*end_rep2@
return
}
rep_var++
f_jump@=0:return
#modfunc sys_loop var p_label
; logmes "OK2"
f_jump@=1:p_label=*begin_rep@
return
#global

f_def=1
f_do=0

;repeat 3
*tmp_rep
if f_def==1{
newmod obj_test_rep,m_repeat_block
tmp_l=*begin_rep
set_l_repeat obj_test_rep,"begin",1,tmp_l
set_rep_var obj_test_rep,3
}
if f_do==1{
*begin_rep:
tmp_ll=*tmp_rep
sys_repeat obj_test_rep,tmp_ll
if f_jump==1:f_jump=0:goto tmp_ll

print "HELLO"
await 1
}
;loop
if f_def==1{
tmp_l=*end_rep
set_l_loop obj_test_rep,"end",2,tmp_l
}
if f_do==1{
*end_rep:
tmp_ll=*tmp_rep
sys_loop obj_test_rep,tmp_ll
if f_jump==1:f_jump=0:goto *begin_rep
}
*end_rep2
if f_def==1{
tmp_l=*end_rep2
set_fin_rep obj_test_rep,"end_rep2",3,tmp_l
}

if f_def==1{
f_def=0:f_do=1:goto *tmp_rep
}
stop


No.653 RE:必殺!チラウラスレver0.4 Date: 2016/02/15(月) 00:25
Name :Y_repeat  7SM67tY6bA  HOME
あんまりTESTしてないですけど
ブロック 変数とラベル 実装っすw

色々考えたんですけど
データ型に配列を採用しました
データ1個なら1個分のメモリ
データ5個なら5個分のメモリ。と
細かくメモリ確保すると思ったからです
ただ、HSPの配列は大きく確保するっぽいので
モジュール変数を使用しました
一つ増やすのに一つ確保するかんじです
本当は構造体ならよりベターですねw

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "no_6x_subr_block_stock.hsp"
init@manage_block_var
make_block_var

dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
repeat num_block_obj@manage_block_var
logmes ""+cnt
dump@m_block_stock block_var@manage_block_var.cnt
loop

dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
make_block_var
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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.652 RE:必殺!チラウラスレver0.4 Date: 2016/02/15(月) 00:01
Name :Y_repeat  7SM67tY6bA  HOME
サンプル更新ですw こうして収拾がつかなくなっていくw

#module sub_m_label i_name,i_ID,i_l_value
#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
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
return
#global
//////////////////////////////////////////////////
#module sub_m_var 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 get_v4op var p_r
p_r=""+v_i_ID+":"+v_i_name+":"+v_i_v_value
return
#global
//////////////////////////////////////////////////
#module m_block_stock max_l_data,one_label_data,max_var_data,one_var_data
#modinit
newmod one_label_data,sub_m_label,"null",0,0
newmod one_var_data,sub_m_var,"null",0,0
max_l_data=-1
max_var_data=-1
return
#modfunc local add_label_data str _p_name,int _p_ID,int _p_l_value
newmod one_label_data,sub_m_label,_p_name,_p_ID,_p_l_value
max_l_data++:if max_l_data==0:max_l_data++
return
#modfunc local add_var_data str _p_name,int _p_ID,int _p_l_value
newmod one_var_data,sub_m_var,_p_name,_p_ID,_p_l_value
max_var_data++:if max_var_data==0:max_var_data++
return
#modfunc local dump
tmp=""
repeat max_l_data+1
get4op@sub_m_label one_label_data.cnt,tmp
logmes ""+tmp
loop
if max_l_data==-1:logmes "-1"
tmp=""
repeat max_var_data+1
get_v4op@sub_m_var one_var_data.cnt,tmp
logmes ""+tmp
loop
if max_var_data==-1:logmes "-1"
return
#global

#module manage_block_var
#deffunc local init
newmod block_var,m_block_stock
num_block_obj=1
return
#deffunc make_block_var
newmod block_var,m_block_stock
num_block_obj++
return
#defcfunc check_num int p
if p >= num_block_obj:return -1
return 1
#global

init@manage_block_var
make_block_var
if check_num(1)==1{
add_label_data@m_block_stock block_var@manage_block_var.1,"a",1,1
add_var_data@m_block_stock block_var@manage_block_var.1,"x",10,5
dump@m_block_stock block_var@manage_block_var.1
}
make_block_var
if check_num(2)==1{
add_var_data@m_block_stock block_var@manage_block_var.2,"y",20,5
dump@m_block_stock block_var@manage_block_var.2
}
stop


No.651 RE:必殺!チラウラスレver0.4 Date: 2016/02/14(日) 23:35
Name :Y_repeat  7SM67tY6bA  HOME
サンプルです
かたまりごとにラベルと変数を付属させようと思いまして
付属するのがポインタに出来ればそっちのがいいんですが^^;

#module sub_m_label i_name,i_ID,i_l_value
#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
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
return
#global
//////////////////////////////////////////////////
#module sub_m_var 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 get_v4op var p_r
p_r=""+v_i_ID+":"+v_i_name+":"+v_i_v_value
return
#global
//////////////////////////////////////////////////
#module m_block_stock max_l_data,l_data,max_var_data,var_data
#modinit
newmod one_label_dat,sub_m_label,"null",0,0
newmod one_var_dat,sub_m_var,"null",0,0
max_l_data=-1
max_var_data=-1
return
#modfunc local add_label_data str _p_name,int _p_ID,int _p_l_value
newmod one_label_dat,sub_m_label,_p_name,_p_ID,_p_l_value
max_l_data++:if max_l_data==0:max_l_data++
return
#modfunc local add_var_data str _p_name,int _p_ID,int _p_l_value
newmod one_var_dat,sub_m_var,_p_name,_p_ID,_p_l_value
max_var_data++:if max_var_data==0:max_var_data++
return
#modfunc local dump
tmp=""
repeat max_l_data+1
get4op@sub_m_label one_label_dat.cnt,tmp
logmes ""+tmp
loop
tmp=""
repeat max_var_data+1
get_v4op@sub_m_var one_var_dat.cnt,tmp
logmes ""+tmp
loop
return
#global
/*//
*m_block_dump
newmod block_var,m_block_stock
add_label_data@m_block_stock block_var.0,"a",1,1
add_var_data@m_block_stock block_var.0,"x",10,5
dump@m_block_stock block_var.0
stop
//*/


No.650 RE:必殺!チラウラスレver0.4 Date: 2016/02/12(金) 21:10
Name :Y_repeat  7SM67tY6bA  HOME
更新一週間ぶりっすね
遅いんだか早いんだかw マメにやってるつもりではありますが
で、前やってたスクリプトが見当たらないw
結局「no_」でウィンドウズ検索かけて更新日時でソートしたら
サブPCで検索してHITしましたw

マクロは色々統合してスクリプト3割減当社比みたいなw
no_6xxAP.hsp:マクロ追加
no_6xxAP_script.hsp:全体に渡るリファクタです

この投稿NO_650できりがいいですし
スクリプトもスッキリしたのでallright版として
メジャーアップデートとマイナーアップデートの中間とします

no_6xxAP.hsp

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)

#define global sta_l if (bl_r(flag_on_label_search==1))&&(bl_r(label_pc==search_rgst_num(my_line)));label_true_p
#define global sta_c if (bl_r(flag_on_do==1))&&(bl_r(cmd_pc==search_rgst_num(my_line)));cmd_true_p
#define global begin my_line=int(__LINE__)
#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
#defcfunc bl_r int p //returnがboolってことで
if p==0:return 0
return 1
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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_6xxAP_script.hsp

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

begin_var // case 1: def label
;#define global begin my_line=int(__LINE__)
;#define global begin_var begin:if subr_do_baz(ret_label)==1:goto ret_label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1
sta_l {
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}

begin_do // case 2: cls 0
;#define global begin my_line=int(__LINE__)
;#define global begin_do begin:if subr_do_label(ret_label)==1:goto ret_label
sta_c {
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
begin_do // case 3: objsize
sta_c {
do_eq_three(1,en_objsize,120,24)
}

begin_do // case 4:
// read label
sta_c {
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
// button
sta_c {
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
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 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
begin_do // case 5:

// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
// button
sta_c {
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
begin_do // case 6: pos
sta_c {
do_eq_three(1,en_pos,150,0)
}
begin_do // case 7: mes
sta_c {
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 8: stop
sta_c {
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label

}
////////////////////////////////////////////////////////////
// sta_lにしきれなかった
begin_var // case 9:"aa1" def label
sta_l {
do_eq_ldef_three(1,"aa1",11,label_pc)
}
sta_l {
do_eq_vardef_four(5,"x",10,0)
}
if flag_on_label_search==1{
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
begin_do // case 10: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
begin_do // case 11:
// read label
sta_c {
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}

// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
begin_var // case 12:"ab1" def label
sta_l {
do_eq_ldef_four(1,"ab1",12,label_pc)
}
begin_do // case 13: calc
// 変数値取得
; v1=get_x_var_value@variable_manage("x",1)
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
; switch my_pc_B
; eq_B 1:reg1=x:goto *sw_begin
; eq_B 2:reg2=y:goto *sw_begin
; swend
}
// 演算
sta_c {
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11:cr_com=en_calc:goto *com_sw: goto *sw_begin
swend
}
// 代入
; set_x_var_value@variable_manage "x",1,v1
sta_c {
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
begin_do // case 14
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
// goto
sta_c {
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}

begin_var // case 15:"ax1a" def label
sta_l {
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
begin_do // case 16 cls 0
sta_c {
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 17 objsize
sta_c {
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 18
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
begin_do // case 19 pos
sta_c {
do_eq_three(1,en_pos,150,0)
}
begin_do // case 20 mes
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
begin_do // case 21 jz
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"L4jz",31)
}
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jz
sta_c {
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
begin_do // case 22tmp
// read label var
sta_c {
do_eq_three_lread(1,en_get_my_label,"L4jnz",30)
}
sta_c {
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
// jnz
sta_c {
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
begin_do // case 23 stop
sta_c {
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}

begin_var // case 24: def label
sta_l {
subr_do_eq_ldef4 1,"L4jz",31,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
begin_do // case 25 cls 0
sta_c {
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 26 objsize
sta_c {
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 27
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
; dialog "OKjzA"
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
begin_do // case 28 pos
sta_c {
; dialog "OKjzB"
do_eq_three(1,en_pos,150,0)
}
begin_do // case 29 mes
sta_c {
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 30 stop
sta_c {
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}

begin_var // case 31: def label
sta_l {
subr_do_eq_ldef4 1,"L4jnz",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
begin_do // case 32 cls 0
sta_c {
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 33 objsize
sta_c {
do_eq_three(1,en_objsize,120,24)
}
begin_do // case 34
// read label
sta_c {
do_eq_three_lread(1,en_get_my_label,"a",1)
}
// button
sta_c {
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
begin_do // case 35 pos
sta_c {
do_eq_three(1,en_pos,150,0)
}
begin_do // case 36 mes
sta_c {
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 37 stop
sta_c {
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
begin_do // case 38 EOF
// EOF


No.649 RE:必殺!チラウラスレver0.4 Date: 2016/02/04(木) 18:48
Name :Y_repeat  7SM67tY6bA  HOME
リファクタ中でございます
no_6xxAP.hsp更新
*sbr_l_search と subr_label_searchを一緒にするw
*sbr_l_search と subr_doを一緒にするw
それにともないno_6xxAP_script更新
define_memo マクロを把握出来てないのでまとめてみたw

no_6xxAP.hsp

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
#defcfunc subr_do_label var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
}
// subr_label_search と同じ処理
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
p_label=*sw_begin
return 0
;*sbr_l_search
; if flag_on_line_search==1{
; dialog ""+hoge_pc
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
; return
;#defcfunc subr_label_search var p_label
; if flag_on_label_search==1{
; label_true_p{
; if my_pc_B==1{;logmes "途中C":
; my_pc_B=1:label_pc++:
; p_label=*sw_begin
; return 1
; }// label
; }
; }
; return 0
#defcfunc subr_do_baz var p_label
// *sbr_l_search と同じ処理
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
}
// subr_do と同じ処理
;#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
; is_jump_p=0
return 1
}
}
p_label=*sw_begin
return 0
;#defcfunc subr_do var p_label
; if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
; cmd_true_p{
; logmes "途中inE1"
; my_pc_B=1:cmd_pc++:
; p_label=*sw_begin
; is_jump_p=0
; return 1
; }
; }
; return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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_6xxAP_script.hsp

*sw_begin
await 1
; logmes "BEGIN"

//my_line=int(__LINE__) // case 0: def label

my_line=int(__LINE__) // case 1: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

if subr_do_baz(ret_label)==1:goto ret_label

; if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}

my_line=int(__LINE__) // case 2: cls 0
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
; dialog "this is 2"
logmes "途中inE2"
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
}

my_line=int(__LINE__) // case 3: objsize
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 4:
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
}
// button
if flag_on_do==1{
cmd_true_p{
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
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 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
my_line=int(__LINE__) // case 5:
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
}

my_line=int(__LINE__) // case 6: pos
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 7: mes
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 8: stop
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 9:"aa1" def label

if subr_do_baz(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_three(1,"aa1",11,label_pc)
}
label_true_p{
do_eq_vardef_four(5,"x",10,0)
}
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
my_line=int(__LINE__) // case 10: calc
if subr_do_label(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
}

my_line=int(__LINE__) // case 11:
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}

// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
}

my_line=int(__LINE__) // case 12:"ab1" def label
if subr_do_baz(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ab1",12,label_pc)
}
}

my_line=int(__LINE__) // case 13: calc
if subr_do_label(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
}

my_line=int(__LINE__) // case 14
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}
// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 15:"ax1a" def label
if subr_do_baz(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
}

my_line=int(__LINE__) // case 16 cls 0
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 17 objsize
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 18
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 19 pos
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 20 mes
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
}

my_line=int(__LINE__) // case 21 jz
if subr_do_label(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"L4jz",31)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jz
if flag_on_do==1{
cmd_true_p{
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
}


my_line=int(__LINE__) // case 22tmp
if subr_do_label(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"L4jnz",30)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jnz
if flag_on_do==1{
cmd_true_p{
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
}

my_line=int(__LINE__) // case 23 stop
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}


my_line=int(__LINE__) // case 24: def label
if subr_do_baz(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"L4jz",31,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}

my_line=int(__LINE__) // case 25 cls 0
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 26 objsize
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 27
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
; dialog "OKjzC"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
; dialog "OKjzA"
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 28 pos
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
; dialog "OKjzB"
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 29 mes
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 30 stop
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 31: def label
if subr_do_baz(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"L4jnz",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}

my_line=int(__LINE__) // case 32 cls 0
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 33 objsize
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 34
if subr_do_label(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 35 pos
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 36 mes
if subr_do_label(ret_label)==1:goto ret_label


if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 37 stop
if subr_do_label(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
my_line=int(__LINE__) // case 38 EOF
if subr_do_label(ret_label)==1:goto ret_label
// EOF


define_memo

// どんな名前のマクロがあるか把握できなくなってきたので
// 名前だけ列挙
#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)
#define eq_B_two(%1,%2,%3)
#define eq_B_three(%1,%2,%3,%4)
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4)
#define ctype do_eq_three_lread(%1,%2,%3,%4)
#define ctype do_eq_ldef_three(%1,%2,%3,%4)
#define ctype do_eq_ldef_four(%1,%2,%3,%4)
#define ctype do_eq_vardef_four(%1,%2,%3,%4)

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)


No.648 RE:必殺!チラウラスレver0.4 Date: 2016/02/04(木) 05:10
Name :Y_repeat  7SM67tY6bA  HOME
不安定なの直りました
ってか"l4jz"と"14jz"タイポしてただけかもw
編集でサブルーチン展開したりで汚くなったかもw
no_6xxAO_script.hsp:更新

*sw_begin
await 1
; logmes "BEGIN"

/*my_line=int(__LINE__) // case 0: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search
; gosub *sbr_do

; gosub *sbr_no_jump_lab_search
; if is_jump_p==1{
; is_jump_p=0:goto global_label
; }
; gosub *sbr_do
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"0",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"0",1,label_pc)
}
}*/
my_line=int(__LINE__) // case 1: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}
; gosub *flag_clear

my_line=int(__LINE__) // case 2: cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
; dialog "this is 2"
logmes "途中inE2"
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
}

my_line=int(__LINE__) // case 3: objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 4:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
}
// button
if flag_on_do==1{
cmd_true_p{
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
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 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
my_line=int(__LINE__) // case 5:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
}

my_line=int(__LINE__) // case 6: pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 7: mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 8: stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 9:"aa1" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_three(1,"aa1",11,label_pc)
}
label_true_p{
do_eq_vardef_four(5,"x",10,0)
}
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
my_line=int(__LINE__) // case 10: calc
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
}

my_line=int(__LINE__) // case 11:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}

// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
}

my_line=int(__LINE__) // case 12:"ab1" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ab1",12,label_pc)
}
}

my_line=int(__LINE__) // case 13: calc
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
}

my_line=int(__LINE__) // case 14
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}
// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 15:"ax1a" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label


if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
}

my_line=int(__LINE__) // case 16 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 17 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 18
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 19 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 20 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
}

my_line=int(__LINE__) // case 21 jz
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"L4jz",31)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jz
if flag_on_do==1{
cmd_true_p{
if my_pc_B==8{
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1==0{
goto *com_sw:
}else{ goto *sw_begin: }
}
}
}


my_line=int(__LINE__) // case 22tmp
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"L4jnz",30)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jnz
if flag_on_do==1{
cmd_true_p{
; dialog "OK4A"+my_pc_B
if my_pc_B==8{
; dialog "OK4"
my_pc_B++:cp1=my_label: goto *sw_begin: }
if my_pc_B==9{
my_pc_B++:cr_com=en_goto: goto *sw_begin: }
if my_pc_B==10{
my_pc_B=1: cmd_pc++:
if reg1!=0{
; dialog "OK3":
goto *com_sw:
}else{ goto *sw_begin: }
}
}
}

my_line=int(__LINE__) // case 23 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}


my_line=int(__LINE__) // case 24: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"L4jz",31,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}

my_line=int(__LINE__) // case 25 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 26 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 27
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
; dialog "OKjzC"
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
; dialog "OKjzA"
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 28 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
; dialog "OKjzB"
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 29 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 30 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 31: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"L4jnz",30,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}

my_line=int(__LINE__) // case 32 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 33 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 34
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 35 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 36 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label


if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 37 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
my_line=int(__LINE__) // case 38 EOF
gosub *sbr_l_search
// EOF


No.647 RE:必殺!チラウラスレver0.4 Date: 2016/02/03(水) 05:44
Name :Y_repeat  7SM67tY6bA  HOME
そろそろ 制御構文に入るかw
いやいや待て サンプル処理を増やす前に 変なとこ1から直すつもりで直せw
ハイ コマンド番号が0から始まるの直しました
コマンド番号0はコマンド番号無しと同じなのでややこしいのだ
それを回避するのに 先頭に無駄にコマンドを定義するのもなんか嫌w
という訳でコマンド番号が1から始まるようにしました
難航するかと思いきや
意外とスルスルいきました
ちゃんと動かないのは
JZ(ジャンプZERO)とJNZ(ジャンプNOTZERO)です
そういえば実装した時も不安定だったなあw
さてさて安定させるってどうやるんだ?w
no_6xxAO.hsp:更新

#include "init.hsp"
; #include "init.hsp" // 2回インクルードしても平気w
#include "hspext.as"
#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
dialog "begin"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return

#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
output@label_manage
output@variable_manage
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
*sbr_do_line
; if flag_on_line_search==1{
; num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
; }
return
*sbr_l_search
if flag_on_line_search==1{
; dialog ""+hoge_pc
num_rgst_num hoge_pc,hoge_pc,my_line:hoge_pc++
}
return
#defcfunc subr_label_search var p_label
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
return 0
#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
is_jump_p=0
return 1
}
}
return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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_6xxAO_script.hsp:更新1/3くらいコメントアウト中w

*sw_begin
await 1
; logmes "BEGIN"

/*my_line=int(__LINE__) // case 0: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search
; gosub *sbr_do

; gosub *sbr_no_jump_lab_search
; if is_jump_p==1{
; is_jump_p=0:goto global_label
; }
; gosub *sbr_do
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"0",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"0",1,label_pc)
}
}*/
my_line=int(__LINE__) // case 1: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}
; gosub *flag_clear

my_line=int(__LINE__) // case 2: cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
; dialog "this is 2"
logmes "途中inE2"
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
}

my_line=int(__LINE__) // case 3: objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 4:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
logmes "inE4"
;#define ctype do_eq_three_lread(%1,%2,%3,%4):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
;if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
;case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
; if my_pc_B==1{my_pc_B++:cr_com=en_get_my_label:goto *sw_begin}
; if my_pc_B==2{my_pc_B++:cp1="aa1":goto *sw_begin}
; if my_pc_B==3{my_pc_B++:cp2=11:goto *com_sw:goto *sw_begin}
; do_eq_three_lread(1,en_get_my_label,"a",1)
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
}
// button
if flag_on_do==1{
cmd_true_p{
logmes "inE5"
; subr_label=1
; do_eq_button_A_two_add1 4,"X足す1"
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 5:bt_pc_1=my_label: goto *sw_begin
eq_B 6:cr_com=en_button_A:cmd_fin
swend
}
}
my_line=int(__LINE__) // case 5:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
}

my_line=int(__LINE__) // case 6: pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 7: mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 8: stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 9:"aa1" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_three(1,"aa1",11,label_pc)
}
label_true_p{
do_eq_vardef_four(5,"x",10,0)
}
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
my_line=int(__LINE__) // case 10: calc
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
}

my_line=int(__LINE__) // case 11:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
; dialog "this is 11"
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}

// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
}

my_line=int(__LINE__) // case 12:"ab1" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ab1",12,label_pc)
}
}

my_line=int(__LINE__) // case 13: calc
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
}

my_line=int(__LINE__) // case 14
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}
// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 15:"ax1a" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label


if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
}

my_line=int(__LINE__) // case 16 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 17 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 18
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 19 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 20 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
}
my_line=int(__LINE__) // case 21 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
/*
my_line=int(__LINE__) // case 21 jz
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jz",31)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jz
; if flag_on_do==1{
; cmd_true_p{
; ;cp1=my_label:cr_com=en_goto:cmd_fin
; eq_B 8:cp1=reg1:cp2=my_label:cr_com=en_jz:goto *com_sw
; if my_pc_B==9:cr_com=en_nop:cmd_fin
; }
; }
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jz:goto *com_sw
swend
}
}

my_line=int(__LINE__) // case 22tmp
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jnz",30)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jnz
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jnz:goto *com_sw
swend
}
}

my_line=int(__LINE__) // case 23 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}


my_line=int(__LINE__) // case 24:"l4jz" def label
gosub *sbr_l_search
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"l4jz",31,label_pc)
}
}

my_line=int(__LINE__) // case 25 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 26 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 27
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 28 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 29 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 30 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 31:"l4jnz" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
logmes "jnz A"
logmes ""+label_pc
; logmes ""+num_stack.my_line
; num_stack.my_line=30
label_true_p{
do_eq_ldef_four(1,"l4jnz",30,label_pc)
}
}

my_line=int(__LINE__) // case 32 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 33 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 34
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 35 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 36 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label


if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 37 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
my_line=int(__LINE__) // case 38 EOF
gosub *sbr_l_search
// EOF
*/


No.646 RE:必殺!チラウラスレver0.4 Date: 2016/02/03(水) 04:04
Name :Y_repeat  7SM67tY6bA  HOME
mesbox関係は昔書いたのひっぱりだしましたw
いつもは簡易版使ってますけどw
最近 mesbox使ったらどっちか使ってますねw
ってパイプの結果しか表示しないというってかコレ前提に使ってないしw

FILE_MB_draw.hsp

// mesbox描画用module
// 以下MBとはmesboxのこと
#module m_MB_draw
// 変数定義
#deffunc _4MB_init
target=""
stock=""
ID=0
return
// IDのsetter
#deffunc _4MB_set_ID int p
ID=p
return
// MB描画
#deffunc MB_draw
target=stock+target
stock=""
objprm ID,target
return
// 一行描画(すぐ描画)
#deffunc MB_add_one str _4add
target=_4add+target
objprm ID,target
return
// 一行描画(すぐ描画)改行付加
#deffunc MB_add_one_line str _4add
target=_4add+"\n"+target
objprm ID,target
return
// 描画用文字列に追加(すぐは描画しない)
#deffunc MB_add str _4add
stock+=_4add
return
// 描画用文字列に追加(すぐは描画しない)改行付加
#deffunc MB_add_line str _4add
stock+=_4add+"\n"
return
// MBと文字列clear
#deffunc MB_clear
stock=""
target=""
objprm ID,target
return
#global

母艦:repy_main.hsp

#include "hspcmp.as"
#include "hspext.as"
#include "init.hsp"
#include "FILE_MB_draw.hsp"

screen 1,480,360
sdim mesbuf,10000
sdim mesbuf_B,10000
mesbox mesbuf,640,480,5
ID4mesbox=stat
gsel 0
sdim _4note,64000

; sdim mesbuf,$10000
sdim rtname,256
screen 0
objmode 1
objsize 200,25
button "do my script",*do_cmp_my_script
button "do my script no opr",*do_cmp_my_script_no_wnd
; button "do my script with debugW",*do_cmp_my_script_with_D
button "do analyze A",*do_analyze_A
button "do analyze B",*do_analyze_B
button "do cmp and analyze",*do_cmp_and_analyze
pos 200,0
button "show line_dump.txt",*show_ldh
button "show 1st_analyzed_line_dat.txt",*show_1st
button "show 2nd_analyzed_dat.txt",*show_2nd
button "show output_label.txt",*show_olt
button "show output_variable.txt",*show_ovt
pos 0,140
mesbox mesbuf_B,636,(446-140),5
ID4mesbox_B=stat
_4MB_init
_4MB_set_ID ID4mesbox_B
stop
*show_ldh
exec "notepad line_dump.txt"
stop
*show_1st
exec "notepad 1st_analyzed_line_dat.txt"
stop
*show_2nd
exec "notepad 2nd_analyzed_dat.txt"
stop
*show_olt
exec "notepad output_label.txt"
stop
*show_ovt
exec "notepad output_variable.txt"
stop
*do_analyze_A
gosub *pipedo_analyze_A
stop
*do_analyze_B
gosub *pipedo_analyze_B
stop
*pipedo_analyze_A
sdim ln,4096
sdim buf,32000

pipeexec buf,"analyze_A.exe"
if stat : dialog "実行できませんでした" : end

; mes "実行中...A"

repeat
pipeget ln ; パイプの取得/更新
if stat=0 : break ; 実行終了ならループを抜ける
wait 2
loop

MB_add_one ""+buf
; mes "実行完了...A"
return

*pipedo_analyze_B
sdim ln,4096
sdim buf,32000

pipeexec buf,"analyze_B.exe"
if stat : dialog "実行できませんでした" : end

; mes "実行中...B"

repeat
pipeget ln ; パイプの取得/更新
if stat=0 : break ; 実行終了ならループを抜ける
wait 2
loop

MB_add_one ""+buf
; mes "実行完了...B"
return
*do_cmp_my_script
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
*do_cmp_and_analyze
notesel _4note
noteload "init.hsp"
tmp_init=_4note
noteadd "FLAG_DO_SCRIPT=0",-1,0
notesave "init.hsp"
f_do_back_init=1
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
is_return=1
gosub *do_cmp_any

gosub *pipedo_analyze_A
gosub *pipedo_analyze_B
stop

*do_cmp_my_script_no_wnd
notesel _4note
noteload "init.hsp"
tmp_init=_4note
noteadd "FLAG_DO_SCRIPT=0",-1,0
notesave "init.hsp"
f_do_back_init=1
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
;*do_cmp_my_script_with_D
; fname=main_FILE_NAME ; スクリプトファイル名
; objname="obj" ; オブジェクトファイル名
; debug_mode=0 ; デバッグウィンドウ表示フラグ
; goto *do_cmp_any
*do_cmp_any


hsc_ini fname
hsc_objname objname
hsc_comp 0 ; コンパイル
res=stat:if res!=0 : dialog "ERROR" : goto *goerror

hsc3_getruntime rtname, objname ; ランタイム名を取得
if rtname="" : rtname="hsp3.exe"
debug_mode=0 ; デバッグウィンドウ表示フラグ


cmdexe = "\""+dir_exe+"\\"+rtname+"\" "+objname
hsc3_run cmdexe, debug_mode ; ランタイムを実行する
*goerror
hsc_getmes mesbuf
gsel 1
objmode 1
objprm ID4mesbox,mesbuf
gsel 0
; mesbox mesbuf,636,446,5
if f_do_back_init=1{
f_do_back_init=0
_4note=tmp_init
notesel _4note
notesave "init.hsp"
}
if is_return==1:is_return=0:return
stop


No.645 RE:必殺!チラウラスレver0.4 Date: 2016/02/03(水) 03:44
Name :Y_repeat  7SM67tY6bA  HOME
pipe処理のsample合成出来ましたw
mesboxらへんちょこちょこやってるのは未完成です
とりあえず一区切りついたっぽいので投稿w
更新したのは母艦だけですw
揺れ減らすのはやってましたw
途中flag使ってます
ここをこう進みたいんだよなあって時に活躍してくれますw
そういう用途でflag使う術を身に着けましたの巻w

#include "hspcmp.as"
#include "init.hsp"
#include "hspext.as"
screen 1,480,360
sdim mesbuf,10000
sdim mesbuf_B,10000
mesbox mesbuf,640,480,5
ID4mesbox=stat
gsel 0
sdim _4note,64000

; sdim mesbuf,$10000
sdim rtname,256
screen 0
objmode 1
objsize 200,25
button "do my script",*do_cmp_my_script
button "do my script no opr",*do_cmp_my_script_no_wnd
; button "do my script with debugW",*do_cmp_my_script_with_D
button "do analyze A",*do_analyze_A
button "do analyze B",*do_analyze_B
button "do cmp and analyze",*do_cmp_and_analyze
pos 200,0
button "show line_dump.txt",*show_ldh
button "show 1st_analyzed_line_dat.txt",*show_1st
button "show 2nd_analyzed_dat.txt",*show_2nd
button "show output_label.txt",*show_olt
button "show output_variable.txt",*show_ovt
pos 0,140
mesbox mesbuf_B,636,(446-140),5
ID4mesbox_B=stat
stop
*show_ldh
exec "notepad line_dump.txt"
stop
*show_1st
exec "notepad 1st_analyzed_line_dat.txt"
stop
*show_2nd
exec "notepad 2nd_analyzed_dat.txt"
stop
*show_olt
exec "notepad output_label.txt"
stop
*show_ovt
exec "notepad output_variable.txt"
stop
*do_analyze_A
gosub *pipedo_analyze_A
stop
*do_analyze_B
gosub *pipedo_analyze_B
stop
*pipedo_analyze_A
sdim ln,4096
sdim buf,32000

pipeexec buf,"analyze_A.exe"
if stat : dialog "実行できませんでした" : end

; mes "実行中...A"

repeat
pipeget ln ; パイプの取得/更新
if stat=0 : break ; 実行終了ならループを抜ける
wait 2
loop

dialog buf
; mes "実行完了...A"
return

*pipedo_analyze_B
sdim ln,4096
sdim buf,32000

pipeexec buf,"analyze_B.exe"
if stat : dialog "実行できませんでした" : end

; mes "実行中...B"

repeat
pipeget ln ; パイプの取得/更新
if stat=0 : break ; 実行終了ならループを抜ける
wait 2
loop

dialog buf
; mes "実行完了...B"
return
*do_cmp_my_script
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
*do_cmp_and_analyze
notesel _4note
noteload "init.hsp"
tmp_init=_4note
noteadd "FLAG_DO_SCRIPT=0",-1,0
notesave "init.hsp"
f_do_back_init=1
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
is_return=1
gosub *do_cmp_any

gosub *pipedo_analyze_A
gosub *pipedo_analyze_B
stop

*do_cmp_my_script_no_wnd
notesel _4note
noteload "init.hsp"
tmp_init=_4note
noteadd "FLAG_DO_SCRIPT=0",-1,0
notesave "init.hsp"
f_do_back_init=1
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
;*do_cmp_my_script_with_D
; fname=main_FILE_NAME ; スクリプトファイル名
; objname="obj" ; オブジェクトファイル名
; debug_mode=0 ; デバッグウィンドウ表示フラグ
; goto *do_cmp_any
*do_cmp_any


hsc_ini fname
hsc_objname objname
hsc_comp 0 ; コンパイル
res=stat:if res!=0 : dialog "ERROR" : goto *goerror

hsc3_getruntime rtname, objname ; ランタイム名を取得
if rtname="" : rtname="hsp3.exe"
debug_mode=0 ; デバッグウィンドウ表示フラグ


cmdexe = "\""+dir_exe+"\\"+rtname+"\" "+objname
hsc3_run cmdexe, debug_mode ; ランタイムを実行する
*goerror
hsc_getmes mesbuf
gsel 1
objmode 1
objprm ID4mesbox,mesbuf
gsel 0
; mesbox mesbuf,636,446,5
if f_do_back_init=1{
f_do_back_init=0
_4note=tmp_init
notesel _4note
notesave "init.hsp"
}
if is_return==1:is_return=0:return
stop


No.643 RE:必殺!チラウラスレver0.4 Date: 2016/02/01(月) 13:50
Name :Y_repeat  7SM67tY6bA  HOME
NO_630がanalyze処理あんまりなくて
一区切りついた感のあるversionですねw
スクリプトが30.2kbで写経にもお手頃でっすw
ちっょとしよーかな。と思ったw

でも僕のスクリプトはスペースとかタブとか揺れてるんだよなー
wikiに載せるとこから再始動したっぽいから
最初、半角スペースから始まってるの多いしw

#追記
#TOOL書いて揺れ結構減らせたかんじなので
#zipにまとめてうちでUPしますね♪

No.642 RE:必殺!チラウラスレver0.4 Date: 2016/02/01(月) 06:47
Name :Y_repeat  7SM67tY6bA  HOME
「共有メモリ」とか「略して仮」さんとか「なごみコネクト」とか見てましたw 全部共有メモリ系w
共有メモリは夢が広がりますなあw SQLもちょっぴり興味w
と、ややあって
pipeexec試してましたw
共有メモリに行ったのはコマンドプロンプロを共有できないか?だったのでw
ほぼサンプル

#include "hspext.as"
sdim ln,4096
sdim buf,32000

pipeexec buf,"analyze_A.exe"
if stat : dialog "実行できませんでした" : end

; mes "実行中...A"

repeat
pipeget ln ; パイプの取得/更新
if stat=0 : break ; 実行終了ならループを抜ける
wait 2
loop

mes buf
; mes "実行完了...A"

sdim ln,4096
sdim buf,32000

pipeexec buf,"analyze_B.exe"
if stat : dialog "実行できませんでした" : end

; mes "実行中...B"

repeat
pipeget ln ; パイプの取得/更新
if stat=0 : break ; 実行終了ならループを抜ける
wait 2
loop

mes buf
; mes "実行完了...B"

wait 5
mes "OK"
stop

実行FILEにしてanalyze_Aとする
テキストデータ必要なんですが^^;

#runtime "hsp3cl"
#include "init.hsp"
print "DO analyze A"
sdim _4note,64000
notesel _4note
noteload line_data_dump
sdim _4save,64000
_4save=""

nc=1
pre_n1=0
pre_n2=0
pre_n3=1

repeat notemax

noteget s,nc-1
;s="2 1 30"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
tmp_nc=nc-2
logmes ""+tmp_nc+" "+i+":"
_4save+=""+tmp_nc+" "+i+":\n"
next
logmes "!"+s
tmp_nc_b=tmp_nc+1
_4save+="/**!"+s+"**/ /**number:"+tmp_nc_b+"**/\n"
pre_nc=nc
nc++
pre_n1=n1
pre_n2=n2
pre_n3=n3
loop
notesel _4save
notesave _1st_analyzed_data

end

analyze_B exeにしてね
こっちもテキストデータ必要

#runtime "hsp3cl"
#include "init.hsp"
script_name="no_6xxAL_script.hsp"
#include "hsp3util.as"
print "DO analyze B"

sdim _4script,64000
notesel _4script
noteload script_FILE_NAME
note2array ar_script,_4script

sdim _4note,64000
notesel _4note
noteload _1st_analyzed_data

repeat notemax
t=""
noteget t,cnt
if instr(t,0,"!")=-1{
pre_t=t
t=strtrim(t,3,':')
split t," ",t1,t2
tt=int(t2)-1
result_t="/**"+pre_t+"**/"+ar_script.tt
noteadd result_t,cnt,1
}
loop
notesave _2nd_analyzed_data

end

自分のとこに一式zipにして置いておくので
そっちも要checkっすw

あとは何か月ぶりに 移転作業してましたw
レンタルwiki→ホームページビルダーでhtml化です
ここはめんどくさいですけど
やっぱhtmlのほうが移転しやすいですよねw

なんか最近、2日に一回くらい 晩御飯食べて午後8時に寝て 午前0時頃起きて
寝ないでPCやってるかんじw

アレですね。飽きっぽいのはそもそも向いてない
って考え方があり
自分ゲームばかりやってた頃 飽きっぽかったっすねw
で、プログラミングは気持ちしぶといっすねw
HSPが向いてるか?はともかくプログラミングは割と向いてるかも。自分
禁煙に成功したワタクシは
ゲームは気分転換なので
ゲーム割とやって 本あんまり読んでないw

No.641 RE:必殺!チラウラスレver0.4 Date: 2016/02/01(月) 01:32
Name :Y_repeat  7SM67tY6bA  HOME
ファイル2箇所でincludeしたくて
tytyさんifdef使ってたよなーと思い、探しても出て来ないw
公式BBSで検索かけたらありましたw

更新:ラベル一覧と変数一覧出力しましたw
母艦更新、ファイルも1クリックで開けるようにw
init

#ifndef ifdefSW
#define ifdefSW 1
#define global script_FILE_NAME "no_6xxAN_script.hsp"
#define global main_FILE_NAME "no_6xxAN.hsp"
#define global commnad_FILE_NAME "no_6x_subr_command.hsp"
#define global label_manage_FILE_NAME "no_6x_subr_var_label_manage.hsp"
//no_6x_subr_var_label_manage.hspで使ってる
#define global output_label_FILE_NAME "output_label.txt"
//no_6x_subr_var_label_manage.hspで使ってる
#define global output_variable_FILE_NAME "output_variable.txt"
// 1:script実行 0:script実行しないdumpとかはするw
FLAG_DO_SCRIPT=1
#define global analyze_01_FILE_NAME "line_analyze.hsp"
#define global analyze_02_FILE_NAME "line_analyze_add_script.hsp"

#define line_data_dump "line_dump.txt"
#define _1st_analyzed_data "1st_analyzed_line_dat.txt"
#define _2nd_analyzed_data "2nd_analyzed_dat.txt"
#endif

母艦

#include "hspcmp.as"
#include "init.hsp"

sdim _4note,64000

sdim mesbuf,$10000
sdim rtname,256

screen 0
objsize 200,25
button "do my script",*do_cmp_my_script
button "do my script no opr",*do_cmp_my_script_no_wnd
; button "do my script with debugW",*do_cmp_my_script_with_D
button "do analyze A",*do_analyze_A
button "do analyze B",*do_analyze_B
pos 200,0
button "show line_dump.txt",*show_ldh
button "show 1st_analyzed_line_dat.txt",*show_1st
button "show 2nd_analyzed_dat.txt",*show_2nd
button "show output_label.txt",*show_olt
button "show output_variable.txt",*show_ovt
pos 0,140
stop
*show_ldh
exec "notepad line_dump.txt"
stop
*show_1st
exec "notepad 1st_analyzed_line_dat.txt"
stop
*show_2nd
exec "notepad 2nd_analyzed_dat.txt"
stop
*show_olt
exec "notepad output_label.txt"
stop
*show_ovt
exec "notepad output_variable.txt"
stop
*do_analyze_A
fname=analyze_01_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any

*do_analyze_B
fname=analyze_02_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any

*do_cmp_my_script
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
*do_cmp_my_script_no_wnd
notesel _4note
noteload "init.hsp"
tmp_init=_4note
noteadd "FLAG_DO_SCRIPT=0",-1,0
notesave "init.hsp"
f_do_back_init=1
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
;*do_cmp_my_script_with_D
; fname=main_FILE_NAME ; スクリプトファイル名
; objname="obj" ; オブジェクトファイル名
; debug_mode=0 ; デバッグウィンドウ表示フラグ
; goto *do_cmp_any
*do_cmp_any


hsc_ini fname
hsc_objname objname
hsc_comp 0 ; コンパイル
res=stat:if res!=0 : dialog "ERROR" : goto *goerror

hsc3_getruntime rtname, objname ; ランタイム名を取得
if rtname="" : rtname="hsp3.exe"
debug_mode=0 ; デバッグウィンドウ表示フラグ


cmdexe = "\""+dir_exe+"\\"+rtname+"\" "+objname
hsc3_run cmdexe, debug_mode ; ランタイムを実行する
*goerror
hsc_getmes mesbuf
objmode 1
mesbox mesbuf,636,446,5

if f_do_back_init=1{
f_do_back_init=0
_4note=tmp_init
notesel _4note
notesave "init.hsp"
}
stop

label variable manage

#include "init.hsp"
#module mod_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,int p_l_value
sdim i_name,500
sdim i_ID,500
sdim i_l_value,500
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
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
return
#modfunc local get4op var p_r
p_r=""+i_ID+":"+i_name+":"+i_l_value
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,int _p_l_value,local loc_r
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 _3p_ID,local loc_i,local loc_get_index
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 loc_i,local loc_get_index
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,int _4p_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 __p_ID,local r_name
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_ID,local loc_sch,local loc_hit
loc_sch=label_search_from_ID@label_manage(_p3b_ID)
loc_hit=is_hit_after_label_search@label_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_label_value@label_manage(__p_name,loc_sch)
}
}
return -1
#deffunc local pre_set_x_label_value str __p_name,int __p_ID,var __p4set,local r_name
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_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
loc_hit_b=is_hit_after_label_search@label_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_label_value@label_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#deffunc local dump
logmes "log"
repeat fv_ID
dump@mod_label o_label.cnt
loop
logmes ""+fv_ID
logmes ""+label_pc@
return
#deffunc local output
sdim _4note_l_op,64000
_4note_l_op=""
_4op=""
notesel _4note_l_op
repeat fv_ID
get4op@mod_label o_label.cnt,_4op
_4note_l_op+=""+_4op+"\n"
loop
notesave output_label_FILE_NAME
noteunsel
sdim _4note_l_op,1
return

;#modfunc local dump
;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 get_v4op var p_r
p_r=""+v_i_ID+":"+v_i_name+":"+v_i_v_value
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,int _p_v_value,local loc_r
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_value
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_ID,local loc_i,local loc_get_index
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_i,local loc_get_index
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 _4p_i
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,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_var_value@variable_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p_ID,local r_name
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_ID,var __p4set,local r_name
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,local loc_sch,local loc_hit
loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
loc_hit=is_hit_after_var_search@variable_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_var_value@variable_manage(__p_name,loc_sch)
}
}
return -1
#deffunc local dump
; dump@mod_variable o_var.0
; dump@mod_variable o_var.1
return
#deffunc local output
sdim _4note_v_op,64000
_4note_v_op=""
_4op=""
notesel _4note_v_op
repeat fv_ID
get_v4op@mod_variable o_var.cnt,_4op
_4note_v_op+=""+_4op+"\n"
loop
notesave output_variable_FILE_NAME
noteunsel
return
#global


No.640 RE:必殺!チラウラスレver0.4 Date: 2016/01/31(日) 23:29
Name :Y_repeat  7SM67tY6bA  HOME
バッチファイルっぽいのが増えたので
メイン画面を作りました
生意気にもhspcmp使ってコンパイルしてますw
設定FILEいじってから起動して終わったら戻すとかもしました

#include "hspcmp.as"
#include "init.hsp"

sdim _4note,64000

sdim mesbuf,$10000
sdim rtname,256

screen 0
objsize 200,25
button "do my script",*do_cmp_my_script
button "do my script no opr",*do_cmp_my_script_no_wnd
; button "do my script with debugW",*do_cmp_my_script_with_D
button "do analyze A",*do_analyze_A
button "do analyze B",*do_analyze_B
stop

*do_analyze_A
fname=analyze_01_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any

*do_analyze_B
fname=analyze_02_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any

*do_cmp_my_script
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
*do_cmp_my_script_no_wnd
notesel _4note
noteload "init.hsp"
tmp_init=_4note
noteadd "FLAG_DO_SCRIPT=0",-1,0
notesave "init.hsp"
f_do_back_init=1
fname=main_FILE_NAME ; スクリプトファイル名
objname="obj" ; オブジェクトファイル名
goto *do_cmp_any
;*do_cmp_my_script_with_D
; fname=main_FILE_NAME ; スクリプトファイル名
; objname="obj" ; オブジェクトファイル名
; debug_mode=0 ; デバッグウィンドウ表示フラグ
; goto *do_cmp_any
*do_cmp_any


hsc_ini fname
hsc_objname objname
hsc_comp 0 ; コンパイル
res=stat:if res!=0 : dialog "ERROR" : goto *goerror

hsc3_getruntime rtname, objname ; ランタイム名を取得
if rtname="" : rtname="hsp3.exe"
debug_mode=0 ; デバッグウィンドウ表示フラグ


cmdexe = "\""+dir_exe+"\\"+rtname+"\" "+objname
hsc3_run cmdexe, debug_mode ; ランタイムを実行する
*goerror
hsc_getmes mesbuf
objmode 1
mesbox mesbuf,636,446,5

if f_do_back_init=1{
f_do_back_init=0
_4note=tmp_init
notesel _4note
notesave "init.hsp"
}
stop

mainスクリプトもちょっと更新w

No.639 RE:必殺!チラウラスレver0.4 Date: 2016/01/30(土) 05:02
Name :Y_repeat  7SM67tY6bA  HOME
GGJのツイッター投稿チラチラ見ながらやってますよーw

NUMBER記述欄が欲しかったんですけど
(自動的に記述してくれる欄ですね)
割と楽に出来ましたw
SCRIPTに自動記述はまだ心理的に高い壁がw

出来たっつーか記述しただけなんですけど
でもこうNUMBERなんとかって記述して欲しかったんですよねw

line_analyze.hsp:更新

#include "init.hsp"
sdim _4note,64000
notesel _4note
noteload line_data_dump
sdim _4save,64000
_4save=""

nc=1
pre_n1=0
pre_n2=0
pre_n3=1

repeat notemax

noteget s,nc-1
;s="2 1 30"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
tmp_nc=nc-2
logmes ""+tmp_nc+" "+i+":"
_4save+=""+tmp_nc+" "+i+":\n"
next
logmes "!"+s
tmp_nc_b=tmp_nc+1
_4save+="/**!"+s+"**/ /**number:"+tmp_nc_b+"**/\n"
pre_nc=nc
nc++
pre_n1=n1
pre_n2=n2
pre_n3=n3
loop
notesel _4save
notesave _1st_analyzed_data

end


No.638 RE:必殺!チラウラスレver0.4 Date: 2016/01/30(土) 04:18
Name :Y_repeat  7SM67tY6bA  HOME
sample方式の演算が出来るようにバッチファイル更新
(起動して演算して消えるので、バッチファイルと呼びますw)
analyze A

#include "init.hsp"
sdim _4note,64000
notesel _4note
noteload line_data_dump
sdim _4save,64000
_4save=""

nc=1
pre_n1=0
pre_n2=0
pre_n3=1

repeat notemax

noteget s,nc-1
;s="2 1 30"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
tmp_nc=nc-2
logmes ""+tmp_nc+" "+i+":"
_4save+=""+tmp_nc+" "+i+":\n"
next
logmes "!"+s
_4save+="/**!"+s+"**/\n"
pre_nc=nc
nc++
pre_n1=n1
pre_n2=n2
pre_n3=n3
loop
notesel _4save
notesave _1st_analyzed_data

end


analyze B

#include "init.hsp"
script_name="no_6xxAL_script.hsp"
#include "hsp3util.as"

sdim _4script,64000
notesel _4script
noteload script_FILE_NAME
note2array ar_script,_4script

sdim _4note,64000
notesel _4note
noteload _1st_analyzed_data

repeat notemax
t=""
noteget t,cnt
if instr(t,0,"!")=-1{
pre_t=t
t=strtrim(t,3,':')
split t," ",t1,t2
tt=int(t2)-1
result_t="/**"+pre_t+"**/"+ar_script.tt
noteadd result_t,cnt,1
}
loop
notesave _2nd_analyzed_data

end


No.637 RE:必殺!チラウラスレver0.4 Date: 2016/01/30(土) 04:03
Name :Y_repeat  7SM67tY6bA  HOME
/**!hoge**/
と!とかがコマンドの中に入ってるか調べる関数
s1="/*abc*/def"
s2="/**abc**/def"
s3="/*!abc*/def"
s4="/**!abc**/def"
s5="!/**abc**/def!"
mes search_in_comment(s1,"!")
mes search_in_comment(s2,"!")
mes search_in_comment(s3,"!")
mes search_in_comment(s4,"!")
mes search_in_comment(s5,"!")
stop

#defcfunc search_in_comment str p_moto,str p_search,local loc_moto,local loc_is
loc_moto=p_moto
n_front=instr(loc_moto,0,"/**")
n_back =instr(loc_moto,0,"**/")
if n_front=-1:return -1
if n_back=-1:return -1
if n_front > n_back :return -1
loc_is=instr(loc_moto,0,p_search)
if loc_is==-1:return -1
if n_front>loc_is:return -1
if n_back r=loc_is
return r


No.636 RE:必殺!チラウラスレver0.4 Date: 2016/01/30(土) 03:47
Name :Y_repeat  7SM67tY6bA  HOME
sample書きました
最初の数字をあらかじめ/*% %*/で括って 消したい時に消すかんじw
文字列の中では使わない!という強い意志を持ってw
→/*% %*/は見栄えが良くないので/** **/へ
文字列の中では使わないという強い意志を持ってw
文字列の中では"/*"+"*hoge**/"とか推奨w

s1="/*abc*/def"
s2="/**abc**/def
s3="abc/*def*/"
s4="abc/**def**/
s5="abc/*def"
s6="abc/**def"
s7="abc*/def/*"
s8="abc**/def/**"

s9="abc/**def**/ghi"
s10="abc/**def**/ghi abc/**def**/ghi"
rx="":r1="":r2=""
any_comment_trim rx,s1
mes rx
any_comment_trim rx,s2
mes rx
any_comment_trim rx,s3
mes rx
any_comment_trim rx,s4
mes rx
any_comment_trim rx,s5
mes rx
any_comment_trim rx,s6
mes rx
any_comment_trim rx,s7
mes rx
any_comment_trim rx,s8
mes rx
any_comment_trim rx,s9
mes rx

any_comment_trim r1,s10
mes r1
any_comment_trim r2,r1
mes r2
stop

#deffunc any_comment_trim var p4r,str p_moto,local loc_moto,local loc_l,local loc_s1,local loc_s2
loc_moto=p_moto
n_front=instr(loc_moto,0,"/**")
n_back =instr(loc_moto,0,"**/")
if n_front=-1:p4r=p_moto:return -1
if n_back=-1:p4r=p_moto:return -1
if n_front > n_back :p4r=p_moto:return -1
; mes n_front
loc_s1=strmid(loc_moto,0,n_front)
; mes n_back
loc_l=strlen(loc_moto)
loc_l-=n_back
loc_l-=3
loc_s2=strmid(loc_moto,-1,loc_l)
p4r=""+loc_s1+loc_s2
return 1



No.635 RE:必殺!チラウラスレver0.4 Date: 2016/01/27(水) 17:51
Name :Y_repeat  7SM67tY6bA  HOME
init.hspというFILEを用意して設定を書きだしました
結構いいアイデアw
no_6x_subr_var_label_manage.hsp:変わらず
no_6x_subr_command.hsp:変わらず
no_6xxAL_script.hsp:変わらず
no_6xxAL.hsp ちょっと更新

line_analyze ちょっと更新
line_analyze2 ちょっと更新

init.hsp 作成

今TESTしたらFILE名がグローバルじゃないので動かなかったり
globalキーワードつけたら動きましたw

そして634のスクリプト 更新してたら
wiki投稿用 変更してしまったw

設定

#define global script_FILE_NAME "no_6xxAM_script.hsp"
#define global main_FILE_NAME "no_6xxAM.hsp"
#define global commnad_FILE_NAME "no_6x_subr_command.hsp"
#define global label_manage_FILE_NAME "no_6x_subr_var_label_manage.hsp"
// 1:script実行 0:script実行しないdumpとかはするw
FLAG_DO_SCRIPT=1
#define global analyze_01_FILE_NAME "line_analyze.hsp"
#define global analyze_02_FILE_NAME "line_analyze_add_script.hsp"

#define line_data_dump "line_dump.txt"
#define _1st_analyzed_data "1st_analyzed_line_dat.txt"
#define _2nd_analyzed_data "2nd_analyzed_dat.txt"


main

#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "init.hsp"
#include "hspext.as"

#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return
#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload script_FILE_NAME
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
if FLAG_DO_SCRIPT==0:end
}
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc-1,my_line:hoge_pc++
}
return
#defcfunc subr_label_search var p_label
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
return 0
#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
is_jump_p=0
return 1
}
}
return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include script_FILE_NAME
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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

analyze1

#include "init.hsp"
sdim _4note,64000
notesel _4note
noteload line_data_dump
sdim _4save,64000
_4save=""

nc=1
pre_n1=0
pre_n2=0
pre_n3=1

repeat notemax

noteget s,nc-1
;s="2 1 30"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
tmp_nc=nc-2
logmes ""+tmp_nc+" "+i+":"
_4save+=""+tmp_nc+" "+i+":\n"
next
logmes "!"+s
_4save+="!"+s+"\n"
pre_nc=nc
nc++
pre_n1=n1
pre_n2=n2
pre_n3=n3
loop
notesel _4save
notesave _1st_analyzed_data

end

analyze2

#include "init.hsp"
script_name="no_6xxAL_script.hsp"
#include "hsp3util.as"

sdim _4script,64000
notesel _4script
noteload script_FILE_NAME
note2array ar_script,_4script

sdim _4note,64000
notesel _4note
noteload _1st_analyzed_data

repeat notemax
t=""
noteget t,cnt
if instr(t,0,"!")=-1{
pre_t=t
t=strtrim(t,3,':')
split t," ",t1,t2
tt=int(t2)-1
result_t=""+pre_t+ar_script.tt
noteadd result_t,cnt,1
}
loop
notesave _2nd_analyzed_data

end


No.634 RE:必殺!チラウラスレver0.4 Date: 2016/01/27(水) 17:25
Name :Y_repeat  7SM67tY6bA  HOME
マイナーアップデートですw
行dumpにnotemax+1を最後に追加しないと
最後まで読んでくれないw
そのためにnoteloadするのもどうなんでしょうw水曜どうでしょうw

やっつけscriptは最後にend追加w
no_6x_subr_var_label_manage.hsp:変わらず
no_6x_subr_command.hsp:変わらず
no_6xxAL_script.hsp:変わらず
no_6xxAL.hsp ちょっと更新

line_analyze ちょっと更新
line_analyze2 ちょっと更新

main

#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "hspext.as"

#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return
#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_line,64000
_4note_line=""
notesel _4note_line
noteload "no_6xxAL_script.hsp"
script_max=notemax+1
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
noteadd ""+loc_i+" "+-1+" "+script_max,-1,0
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
}
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc-1,my_line:hoge_pc++
}
return
#defcfunc subr_label_search var p_label
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
return 0
#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
is_jump_p=0
return 1
}
}
return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include "no_6xxAL_script.hsp"
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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

analyze

sdim _4note,64000
notesel _4note
noteload "line_dump.txt"
sdim _4save,64000
_4save=""

nc=1
pre_n1=0
pre_n2=0
pre_n3=1

repeat notemax

noteget s,nc-1
;s="2 1 30"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
tmp_nc=nc-2
logmes ""+tmp_nc+" "+i+":"
_4save+=""+tmp_nc+" "+i+":\n"
next
logmes "!"+s
_4save+="!"+s+"\n"
pre_nc=nc
nc++
pre_n1=n1
pre_n2=n2
pre_n3=n3
loop
notesel _4save
notesave "1st_analyzed_line_dat.txt"

end

analyze2

script_name="no_6xxAL_script.hsp"
#include "hsp3util.as"

sdim _4script,64000
notesel _4script
noteload script_name
note2array ar_script,_4script

sdim _4note,64000
notesel _4note
noteload "1st_analyzed_line_dat.txt"

repeat notemax
t=""
noteget t,cnt
if instr(t,0,"!")=-1{
pre_t=t
t=strtrim(t,3,':')
split t," ",t1,t2
tt=int(t2)-1
result_t=""+pre_t+ar_script.tt
noteadd result_t,cnt,1
}
loop
notesave "2nd_analyzed_dat.txt"

end


No.633 RE:必殺!チラウラスレver0.4 Date: 2016/01/26(火) 19:36
Name :Y_repeat  7SM67tY6bA  HOME
現在scriptは32KBもあるw
半分くらいシナリオですがw
30KBは写経するの大変ですよw
コレ作成始めて2年以上ですが
だんだん長くなってきたんかなw
160127
analyze1:48:48
analyze2:25:73
command:38:111
label:196:307
script:694:1001
main:280:1281
計1281行
他datとかmemoとか

30KBとか書いて1000行くらいなんかー
1万行行ってからびっくりすれ。みたいなw

No.632 RE:必殺!チラウラスレver0.4 Date: 2016/01/26(火) 05:20
Name :Y_repeat  7SM67tY6bA  HOME
analyze更新
dumpしておいたindexを元に
番号編集
それから
番号行のスクリプトくっつけるw

line_analyze

sdim _4note,64000
notesel _4note
noteload "line_dump.txt"
sdim _4save,64000
_4save=""

nc=1
pre_n1=0
pre_n2=0
pre_n3=1

repeat notemax

noteget s,nc-1
;s="2 1 30"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
tmp_nc=nc-2
logmes ""+tmp_nc+" "+i+":"
_4save+=""+tmp_nc+" "+i+":\n"
next
logmes "!"+s
_4save+="!"+s+"\n"
pre_nc=nc
nc++
pre_n1=n1
pre_n2=n2
pre_n3=n3
loop
notesel _4save
notesave "1st_analyzed_line_dat.txt"
/*
s="3 2 49"
split s," ",n1,n2,n3
n1=int(n1)
n2=int(n2)
n3=int(n3)

i=pre_n3
for i,i,n3,1
logmes ""+nc+" "+i+":"
next
logmes "!"+s

2nd analyze

script_name="no_6xxAL_script.hsp"
#include "hsp3util.as"

sdim _4script,64000
notesel _4script
noteload script_name
note2array ar_script,_4script

sdim _4note,64000
notesel _4note
noteload "1st_analyzed_line_dat.txt"

repeat notemax
t=""
noteget t,cnt
if instr(t,0,"!")=-1{
pre_t=t
t=strtrim(t,3,':')
split t," ",t1,t2
tt=int(t2)-1
result_t=""+pre_t+ar_script.tt
noteadd result_t,cnt,1
}
loop
notesave "2nd_analyzed_dat.txt


No.631 RE:必殺!チラウラスレver0.4 Date: 2016/01/26(火) 05:17
Name :Y_repeat  7SM67tY6bA  HOME
処理系的にマイナーアップデートです
analyzeをちょっと頑張りました
scriptはまた全面的に編集w
no_6x_subr_var_label_manage.hsp:変わらず
no_6x_subr_command.hsp:変わらず
no_6xxAL_script.hsp 更新
no_6xxAL.hsp 更新

main

#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "hspext.as"

#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return
#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave local loc_i
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
loc_i=0
while 1
if (ar_rgst_num.loc_i.0==0)&&(ar_rgst_num.loc_i.1==0){
if loc_i!=0:_break
}else{
noteadd ""+loc_i+" "+ar_rgst_num.loc_i.0+" "+ar_rgst_num.loc_i.1,-1,0
}
loc_i++
wend
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
}
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc-1,my_line:hoge_pc++
}
return
#defcfunc subr_label_search var p_label
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
return 0
#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
is_jump_p=0
return 1
}
}
return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include "no_6xxAL_script.hsp"
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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

script

*sw_begin
await 1
; logmes "BEGIN"

my_line=int(__LINE__) // case 0: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search
; gosub *sbr_do

; gosub *sbr_no_jump_lab_search
; if is_jump_p==1{
; is_jump_p=0:goto global_label
; }
; gosub *sbr_do
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"0",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"0",1,label_pc)
}
}

my_line=int(__LINE__) // case 1: def label
; on_flag_on_line_search=1
; on_flag_on_label_search=1
; on_flag_on_do=1

gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}
; gosub *flag_clear

my_line=int(__LINE__) // case 2: cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
logmes "途中inE2"
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
}

my_line=int(__LINE__) // case 3: objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 4:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
}
// button
if flag_on_do==1{
cmd_true_p{
logmes "inE5"
subr_label=my_label
do_eq_button_A_two_add1 4,"X足す1"
; 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
}
}

my_line=int(__LINE__) // case 5:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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
}
}

my_line=int(__LINE__) // case 6: pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 7: mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 8: stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 9:"aa1" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_three(1,"aa1",11,label_pc)
}
label_true_p{
do_eq_vardef_four(5,"x",10,0)
}
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}

my_line=int(__LINE__) // case 10: calc
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
}

my_line=int(__LINE__) // case 11:
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}

// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
}

my_line=int(__LINE__) // case 12:"ab1" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ab1",12,label_pc)
}
}

my_line=int(__LINE__) // case 13: calc
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
}

my_line=int(__LINE__) // case 14
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}
// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 15:"ax1a" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label


if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
}

my_line=int(__LINE__) // case 16 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 17 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 18
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 19 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 20 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
swend
switch my_pc_B
eq_B 7:cp1="Xの値は"+reg1+"です":goto *sw_begin
eq_B 8:cr_com=en_mes:cmd_fin
swend
}
}

my_line=int(__LINE__) // case 21 jz
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jz",31)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jz
; if flag_on_do==1{
; cmd_true_p{
; ;cp1=my_label:cr_com=en_goto:cmd_fin
; eq_B 8:cp1=reg1:cp2=my_label:cr_com=en_jz:goto *com_sw
; if my_pc_B==9:cr_com=en_nop:cmd_fin
; }
; }
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jz:goto *com_sw
swend
}
}

my_line=int(__LINE__) // case 22tmp
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jnz",30)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jnz
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jnz:goto *com_sw
swend
}
}

my_line=int(__LINE__) // case 23 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}


my_line=int(__LINE__) // case 24:"l4jz" def label
gosub *sbr_l_search
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"l4jz",31,label_pc)
}
}

my_line=int(__LINE__) // case 25 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 26 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 27
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 28 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 29 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 30 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 31:"l4jnz" def label
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
logmes "jnz A"
logmes ""+label_pc
; logmes ""+num_stack.my_line
; num_stack.my_line=30
label_true_p{
do_eq_ldef_four(1,"l4jnz",30,label_pc)
}
}

my_line=int(__LINE__) // case 32 cls 0
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 33 objsize
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}

my_line=int(__LINE__) // case 34
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}

my_line=int(__LINE__) // case 35 pos
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}

my_line=int(__LINE__) // case 36 mes
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label


if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

my_line=int(__LINE__) // case 37 stop
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
my_line=int(__LINE__) // case 38 EOF
gosub *sbr_l_search


No.630 RE:必殺!チラウラスレver0.4 Date: 2016/01/26(火) 00:00
Name :Y_repeat  7SM67tY6bA  HOME
なんか3.4でも変数引数にラベルいれれたw
新機能じゃなかったっぽいですw
・グローバル変数にラベル代入を
参照渡し引数にラベル代入に変更
なんか全体に渡る変更多いようなw
試行錯誤中であります
no_6x_subr_var_label_manage.hsp:変わらず
no_6x_subr_command.hsp:変わらず
no_6xxAK_script.hsp 更新
no_6xxAK.hsp 更新

・main

#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "hspext.as"

#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return
#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
repeat 100
if (ar_rgst_num.cnt.0==0)&&(ar_rgst_num.cnt.0==0){}else{
noteadd ""+cnt+" "+ar_rgst_num.cnt.0+" "+ar_rgst_num.cnt.1,-1,0
}
loop
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
}
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc-1,my_line:hoge_pc++
}
return
#defcfunc subr_label_search var p_label
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
p_label=*sw_begin
return 1
}// label
}
}
return 0
#defcfunc subr_do var p_label
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
p_label=*sw_begin
is_jump_p=0
return 1
}
}
return 0
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
ret_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include "no_6xxAK_script.hsp"
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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


・script

*sw_begin
await 1
; logmes "BEGIN"

// case 0: 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

; gosub *sbr_no_jump_lab_search
; if is_jump_p==1{
; is_jump_p=0:goto global_label
; }
; gosub *sbr_do
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"0",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"0",1,label_pc)
}
}

// 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

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}
; gosub *flag_clear

// case 2: cls 0
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
logmes "途中inE2"
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
}

// case 3: objsize
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 4:
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
}
// button
if flag_on_do==1{
cmd_true_p{
logmes "inE5"
subr_label=my_label
do_eq_button_A_two_add1 4,"X足す1"
; 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

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 7: mes
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 8: stop
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 9:"aa1" def label
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_three(1,"aa1",11,label_pc)
}
label_true_p{
do_eq_vardef_four(5,"x",10,0)
}
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
// case 10: calc
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
}
// case 11:
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}

// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
}
// case 12:"ab1" def label
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ab1",12,label_pc)
}
}
// case 13: calc
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
}
// case 14
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}
// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 15:"ax1a" def label
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label


if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
}
// case 16 cls 0
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 17 objsize
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 18
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}
// case 19 pos
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 20 mes
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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 jz
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jz",31)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jz
; if flag_on_do==1{
; cmd_true_p{
; ;cp1=my_label:cr_com=en_goto:cmd_fin
; eq_B 8:cp1=reg1:cp2=my_label:cr_com=en_jz:goto *com_sw
; if my_pc_B==9:cr_com=en_nop:cmd_fin
; }
; }
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jz:goto *com_sw
swend
}
}
// case 22tmp
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jnz",30)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jnz
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jnz:goto *com_sw
swend
}
}
// case 23 stop
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

// case 24:"l4jz" def label
my_line=int(__LINE__)
gosub *sbr_l_search
if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"l4jz",31,label_pc)
}
}
// case 25 cls 0
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 26 objsize
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 27
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
}
// case 28 pos
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 29 mes
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 30 stop
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 31:"l4jnz" def label
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_do(ret_label)==1:goto ret_label

if flag_on_label_search==1{
logmes "jnz A"
logmes ""+label_pc
; logmes ""+num_stack.my_line
; num_stack.my_line=30
label_true_p{
do_eq_ldef_four(1,"l4jnz",30,label_pc)
}
}

// case 32 cls 0
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 33 objsize
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 34
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}
// case 35 pos
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 36 mes
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label


if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 37 stop
my_line=int(__LINE__)
gosub *sbr_l_search

if subr_label_search(ret_label)==1:goto ret_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}


No.629 RE:必殺!チラウラスレver0.4 Date: 2016/01/24(日) 18:32
Name :Y_repeat  7SM67tY6bA  HOME
おおぅ
35b3で引数にラベルを代入できるw
出来なかったから不自然な記述してましたw

goto *a
#deffunc hoge var pl
pl=*tmp
return
*a
*begin

piyo=*begin

hoge piyo
goto piyo


*tmp
mes "OK"

あとは
繰り返しマクロ(forとか)を閉じてない時に出るerror情報がわかりやすくなってるw
twitterよりw

No.628 RE:必殺!チラウラスレver0.4 Date: 2016/01/23(土) 02:42
Name :Y_repeat  7SM67tY6bA  HOME
なんかどっかにプレーンテキスト+マクロ
みたく実現したいことリストにしてましたが
自分が書いてるのほぼそうですねw
HSP文法プラスマクロみたいなw

読みにくいからサブルーチンにしてるんですがw
なかなかいいかんじでサブルーチンにならないんですよね。これが
ってそもそもその方向(サブルーチン化)の努力を
まだあんまりしてなかったりw

No.627 RE:必殺!チラウラスレver0.4 Date: 2016/01/23(土) 02:39
Name :Y_repeat  7SM67tY6bA  HOME
こちらこそあけましてめでとうございます
まさかの年賀状書きこみですなw
>ども!明けましておめでとうござます。
申酉は荒れるとどこかに書いてましたが
芸能界いきなり荒れてますなw

>y.tack さん改め Y_repeat さん(どっちで呼べば良いのでしょう?)
まだ変更するかもしれませんが
Y_repeatと呼んでいただいたほうが定着早いかな。とも思っています

>新トピ作成乙です!
>所で81っていい数字なんですね?初耳でした。
どっかに書いてたのなんとなく覚えてるだけですw
80進数は8でも10でも16でも割り切れますしね

>スクリプト書きも進んでますね!
>私も見習って進めていきたい今日このごろ
僕も今年はDQXあんまりやんないで
プログラミングに励みたいですね

No.623 RE:必殺!チラウラスレver0.4 Date: 2016/01/19(火) 22:13
Name :Y_repeat  7SM67tY6bA  HOME
とりあえず
dump2notesaveの中でコマンド番号と行番号の
簡単な対象表みたいのを作成しました
ちょこちょこ何やってるか書かないと 何やったかわかんなくなるのでw
no_6x_subr_var_label_manage.hsp:変わらず
no_6x_subr_command.hsp:変わらず
no_6xxAJ_script.hsp:変わらずw
no_6xxAJ.hsp 更新

#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#include "hspext.as"

#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return
#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#deffunc dump2notesave
sdim _4note_dump,2000
_4note_dump=""
notesel _4note_dump
repeat 100
if (ar_rgst_num.cnt.0==0)&&(ar_rgst_num.cnt.0==0){}else{
noteadd ""+cnt+" "+ar_rgst_num.cnt.0+" "+ar_rgst_num.cnt.1,-1,0
}
loop
notesave "line_dump.txt"
return
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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

/*------------------------------------------*/
// 要チェック
dump2notesave
num_rgst_dump
}
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc-1,my_line:hoge_pc++
}
return
*sbr_no_jump_lab_search
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
global_label=*sw_begin
is_jump_p=1
return
}// label
}
}
return
*sbr_no_jump_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
global_label=*sw_begin
is_jump_p=1
return
}
}
return
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include "no_6xxAJ_script.hsp"
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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


*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.622 RE:必殺!チラウラスレver0.4 Date: 2016/01/19(火) 21:31
Name :Y_repeat  7SM67tY6bA  HOME
まずはアレですな sys操作と 普通の操作の分離ですねw
めんどくさくて更新はしょってた未更新スクリプトも掲載w
no_6x_subr_var_label_manage.hsp:変わらず
no_6x_subr_command.hsp:変わらずw
no_6xxAJ.hsp 分離 sys動作
no_6xxAJ_script.hsp 分離 動作記述
・no_6x_subr_var_label_manage.hsp

#module mod_label i_name,i_ID,i_l_value
;i_nameラベル変数の名前
;i_nameラベル変数のID
;i_nameラベル変数の値、コマンド番号を格納する(だったようなw)
#modinit str p_name,int p_ID,int p_l_value
sdim i_name,500
sdim i_ID,500
sdim i_l_value,500
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
logmes "dump "+i_ID
logmes "dump "+i_name
logmes "dump "+i_l_value
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,int _p_l_value,local loc_r
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 _3p_ID,local loc_i,local loc_get_index
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 loc_i,local loc_get_index
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,int _4p_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 __p_ID,local r_name
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_ID,local loc_sch,local loc_hit
loc_sch=label_search_from_ID@label_manage(_p3b_ID)
loc_hit=is_hit_after_label_search@label_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_label_value@label_manage(__p_name,loc_sch)
}
}
return -1
#deffunc local pre_set_x_label_value str __p_name,int __p_ID,var __p4set,local r_name
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_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=label_search_from_ID@label_manage(_p3c_ID)
loc_hit_b=is_hit_after_label_search@label_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_label_value@label_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#deffunc local dump
logmes "log"
repeat fv_ID
dump@mod_label o_label.cnt
loop
logmes ""+fv_ID
logmes ""+label_pc@
return
;#modfunc local dump
;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
#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,int _p_v_value,local loc_r
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_value
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_ID,local loc_i,local loc_get_index
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_i,local loc_get_index
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 _4p_i
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,var _p3c_4set,local loc_sch_b,local loc_hit_b
loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID)
loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_name,loc_sch_b)
if (loc_sch_b!=-1){
if (loc_hit_b!=-1){
pre_set_x_var_value@variable_manage _p3c_name,loc_sch_b,_p3c_4set
}
}
return -1
#defcfunc local pre_get_x_var_value str __p_name,int __p_ID,local r_name
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_ID,var __p4set,local r_name
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,local loc_sch,local loc_hit
loc_sch=var_search_from_ID@variable_manage(_p3b_ID)
loc_hit=is_hit_after_var_search@variable_manage(__p_name,loc_sch)
if (loc_sch!=-1){
if (loc_hit!=-1){
return pre_get_x_var_value@variable_manage(__p_name,loc_sch)
}
}
return -1
#deffunc local dump
; dump@mod_variable o_var.0
; dump@mod_variable o_var.1
return
#global

・no_6x_subr_command.hsp

goto *jump4avoid_subr_com
// 使いたい命令を追加するにはこのFILEを編集してください
#enum en_nop=0
#enum en_get_my_label
#enum en_get_from_var
#enum en_set_to_var
#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_jz
#enum en_jnz
#enum en_calc

*com_sw
switch cr_com
case en_get_my_label: my_label=get_x_label_value@label_manage(cp1,cp2):goto *sw_begin
case en_get_from_var: cpr=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
case en_set_to_var: set_x_var_value@variable_manage cp1,cp2,cp3:goto *sw_begin
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
case en_jz: if cp1==0{ logmes "zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "not zero":my_pc_B=1:cmd_pc++:goto *sw_begin
case en_jnz: if cp1!=0{ logmes "not zero":my_pc_B=1:cmd_pc=cp2:goto *sw_begin }logmes "zero":my_pc_B=1:cmd_pc++:goto *sw_begin
swend
if f_stop==1:f_stop=0:stop
goto *sw_begin
*jump4avoid_subr_com

・no_6xxAJ.hsp

#include "no_6x_subr_var_label_manage.hsp"
#include "no_6x_subr_command.hsp"
#module num_rgst
#deffunc num_rgst_init
dim ar_rgst_num,256,2
return
#deffunc num_rgst_num int p_index,int p_num,int p_line
ar_rgst_num.p_index.0=p_num
ar_rgst_num.p_index.1=p_line
return
#deffunc num_rgst_dump
repeat 16
logmes "num "+cnt+":"+ar_rgst_num.cnt.0
logmes "line "+cnt+":"+ar_rgst_num.cnt.1
loop
return
#defcfunc search_rgst_num int p_line
for i,0,256,1
if ar_rgst_num.i.1==p_line{
; dialog p_line,0
return ar_rgst_num.i.0
}
next
return -1
#global
num_rgst_init

;dim pc_stack,5000
;n_pc_stack=0
hoge_pc=1
// 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++:cp1=%2:goto *sw_begin
#define eq_B_two(%1,%2,%3):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:
#define eq_B_three(%1,%2,%3,%4):\
case %1:my_pc_B++:cp1=%2:goto *sw_begin:case %1+1:my_pc_B++:cp2=%3:goto *sw_begin:\
case %1+2:my_pc_B++:cp3=%4:goto *sw_begin:
#define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
;#define ctype do_eq_one(%1,%2)if my_pc_B==%1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=%2:cmd_fin
;#define ctype do_eq_one(%1,%2)case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
;#define ctype do_eq_two(%1,%2,%3):\
;if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:cmd_fin:goto *sw_begin
#define ctype do_eq_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:cmd_fin}
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:cmd_fin:goto *sw_begin
; case %1:my_pc_B++:cr_com=en_cls0:cmd_fin
#define ctype do_eq_three_lread(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin}
; #define ctype do_eq_three_ldef(%1,%2,%3,%4):\
; case %1:my_pc_B++:cr_com=%2:goto *sw_begin:case %1+1:my_pc_B++:cp1=%3:goto *sw_begin:\
; case %1+2:my_pc_B++:cp2=%4:goto *com_sw:goto *sw_begin
#define ctype do_eq_ldef_three(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}
#define ctype do_eq_ldef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==(%1+2){ my_pc_B++:cp3=%4}if my_pc_B==(%1+3){ my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3:goto *sw_begin}:\
if my_pc_B==(%1+4){my_pc_B=1:label_pc++:goto *sw_begin}
#define ctype do_eq_vardef_four(%1,%2,%3,%4):\
if my_pc_B==%1{my_pc_B++:cp1=%2:goto *sw_begin}:\
if my_pc_B==%1+1{my_pc_B++:cp2=%3:goto *sw_begin}:\
if my_pc_B==%1+2{my_pc_B++:cp3=%4:goto *sw_begin}:\
if my_pc_B==%1+3{my_pc_B++:x_var_search_init@variable_manage cp1,cp2,cp3:goto *sw_begin}

#define cmd_true_p if cmd_pc==search_rgst_num(my_line)
#define label_true_p if label_pc==search_rgst_num(my_line)
goto *subr_avoid
; #define ctype do_eq_two(%1,%2,%3):\
; if my_pc_B==%1{my_pc_B++:cr_com=%2:goto *sw_begin}if my_pc_B==(%1+1){ my_pc_B++:cp1=%3:cmd_fin}
; do_eq_one(1,en_cls0)
; #define cmd_fin :my_pc_B=1:cmd_pc++:goto *com_sw: goto *sw_begin
; do_eq_two(1,en_mes,"ボタンを押してください")
#deffunc subr_do_eq_1 int p1,int p2
if my_pc_B==p1{
my_pc_B=1:cr_com=p2:cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
#deffunc subr_do_eq_2_p3s int p1,int p2,str p3_s
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_s
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_2_p3var int p1,int p2,var p3_var
if my_pc_B==p1{
my_pc_B++:cr_com=p2:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B=1:cp1=p3_var
cmd_pc++:
global_label=*com_sw: is_jump_p=1:return }
is_jump_p=0:return
#deffunc subr_do_eq_ldef4 int p1,str p2_s,int p3,int p4
if my_pc_B==p1{
my_pc_B++:cp1=p2_s
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+1{
my_pc_B++:cp2=p3:
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+2{
my_pc_B++:cp3=p4
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+3{
my_pc_B++: x_label_search_init@label_manage cp1,cp2,cp3
global_label=*sw_begin: is_jump_p=1:return }
if my_pc_B==p1+4{
my_pc_B=1:label_pc++
global_label=*sw_begin: is_jump_p=1:return }
is_jump_p=0:return
#deffunc do_eq_button_A_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_A:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_1=subr_label:cmd_fin}
return
#deffunc do_eq_button_B_two_add1 int p1,str p_s
if my_pc_B==p1{
my_pc_B++:cr_com=en_button_B:goto *sw_begin}
if my_pc_B==(p1+1){
my_pc_B++:cp1=p_s:goto *sw_begin}
if my_pc_B==(p1+2){
my_pc_B++:bt_pc_2=subr_label:cmd_fin}
return
*subr_avoid

;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"


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
}
goto *sbr_end
*sbr_l_search
if flag_on_line_search==1{
num_rgst_num hoge_pc,hoge_pc-1,my_line:hoge_pc++
}
return
*sbr_no_jump_lab_search
if flag_on_label_search==1{
label_true_p{
if my_pc_B==1{;logmes "途中C":
my_pc_B=1:label_pc++:
global_label=*sw_begin
is_jump_p=1
return
}// label
}
}
return
*sbr_no_jump_do
if flag_on_do==1{
; logmes "途中D"
; logmes ""+num_stack.my_line
; logmes "pc"+cmd_pc
cmd_true_p{
; logmes "途中inE1"
my_pc_B=1:cmd_pc++:
global_label=*sw_begin
is_jump_p=1
return
}
}
return
;*flag_clear
; on_flag_on_line_search=0
; on_flag_on_label_search=0
; on_flag_on_do==0
; return

*sbr_end

global_label=*sw_begin
is_jump_p=0

/*----------------------------------------------------------------------------*/
#include "no_6xxAJ_script.hsp"
/*----------------------------------------------------------------------------*/

//if flag_on_label_search==1:mes 6:goto *_2do
;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
}
num_rgst_dump
mes "stop"
stop


*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_6xxAJ_script.hsp

*sw_begin
await 1
; logmes "BEGIN"

// case 0: 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

; gosub *sbr_no_jump_lab_search
; if is_jump_p==1{
; is_jump_p=0:goto global_label
; }
; gosub *sbr_do
gosub *sbr_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"0",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"0",1,label_pc)
}
}

// 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_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_label_search==1{
label_true_p{ logmes "途中A"
subr_do_eq_ldef4 1,"a",1,label_pc
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_ldef_four(1,"a",1,label_pc)
}
}
; gosub *flag_clear

// case 2: cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
logmes "途中inE2"
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
; do_eq_one(1,en_cls0)
}
}

// case 3: objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 4:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
logmes "inE4"
do_eq_three_lread(1,en_get_my_label,"aa1",11)
}
}
// button
if flag_on_do==1{
cmd_true_p{
logmes "inE5"
subr_label=my_label
do_eq_button_A_two_add1 4,"X足す1"
; 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_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ab1",12)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"X引く1"
; 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_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 7: mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"ボタンを押してください"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 8: stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 9:"aa1" def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_three(1,"aa1",11,label_pc)
}
label_true_p{
do_eq_vardef_four(5,"x",10,0)
}
label_true_p{
do_eq_vardef_four(9,"y",20,0)
eq_B 13:my_pc_B=1:label_pc++:goto *sw_begin
}
}
// case 10: calc
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
eq_B 9:reg3=reg1+1:goto *sw_begin
eq_B 10:reg2+=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
logmes "通過check B":cmd_fin
swend
}
}
// case 11:
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}

// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
; if my_pc_B==4{
; my_pc_B++:cr_com=en_goto:
; goto *sw_begin
; }
; if my_pc_B==5{
; my_pc_B=1:cp1=my_label
; cmd_pc++:
; goto *com_sw:
; }
; do_eq_two(4,en_goto,my_label)
}
}
// case 12:"ab1" def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ab1",12,label_pc)
}
}
// case 13: calc
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// 変数値取得
if flag_on_do==1{
; v1=get_x_var_value@variable_manage("x",1)
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 4:reg1=cpr
; reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 5,"y",20
eq_B 7:cr_com=en_get_from_var:goto *com_sw: goto *sw_begin
eq_B 8:reg2=cpr
; logmes "通過check C"
; eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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{
cmd_true_p{
switch my_pc_B
; logmes "通過check C2"
eq_B 9:reg3=reg1-1:goto *sw_begin
eq_B 10:reg2-=2:goto *sw_begin
eq_B 11: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
cmd_true_p{
switch my_pc_B
eq_B_three 12,"x",10,reg3
eq_B 15:cr_com=en_set_to_var:goto *com_sw: goto *sw_begin
swend
switch my_pc_B
eq_B_three 16,"y",20,reg2
eq_B 19:cr_com=en_set_to_var:cmd_fin
; logmes "通過check B"
swend
}
}
// case 14
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"ax1a",21)
}
}
// goto
if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3var 4,en_goto,my_label
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 15:"ax1a" def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label


if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"ax1a",21,label_pc)
}
}
// case 16 cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 17 objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 18
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}
// case 19 pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 20 mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:reg1=get_x_var_value@variable_manage(cp1,cp2):logmes ""+reg1:goto *sw_begin
swend
switch my_pc_B
eq_B_two 4,"y",20
eq_B 6:reg2=get_x_var_value@variable_manage(cp1,cp2):goto *sw_begin
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 jz
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jz",31)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr:goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jz
; if flag_on_do==1{
; cmd_true_p{
; ;cp1=my_label:cr_com=en_goto:cmd_fin
; eq_B 8:cp1=reg1:cp2=my_label:cr_com=en_jz:goto *com_sw
; if my_pc_B==9:cr_com=en_nop:cmd_fin
; }
; }
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jz:goto *com_sw
swend
}
}
// case 22tmp
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label var
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"l4jnz",30)
}
cmd_true_p{
switch my_pc_B
eq_B_two 4,"x",10
eq_B 6:cr_com=en_get_from_var:goto *com_sw
eq_B 7:reg1=cpr: goto *sw_begin
mes ""+reg1:goto *sw_begin
swend
}
}
// jnz
if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 8,reg1,my_label
eq_B 10
cr_com=en_jnz:goto *com_sw
swend
}
}
// case 23 stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}

// case 24:"l4jz" def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_label_search==1{
label_true_p{
do_eq_ldef_four(1,"l4jz",31,label_pc)
}
}
// case 25 cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 26 objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 27
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_B_two_add1 4,"NEXT"
}
}
// case 28 pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 29 mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_2_p3s 1,en_mes,"Xの値は0です!!!"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 30 stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 31:"l4jnz" def label
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_do
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_label_search==1{
logmes "jnz A"
logmes ""+label_pc
; logmes ""+num_stack.my_line
; num_stack.my_line=30
label_true_p{
do_eq_ldef_four(1,"l4jnz",30,label_pc)
}
}

// case 32 cls 0
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_cls0
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 33 objsize
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_objsize,120,24)
}
}
// case 34
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

// read label
if flag_on_do==1{
cmd_true_p{
do_eq_three_lread(1,en_get_my_label,"a",1)
}
}
// button
if flag_on_do==1{
cmd_true_p{
subr_label=my_label
do_eq_button_A_two_add1 4,"NEXT"
}
}
// case 35 pos
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
do_eq_three(1,en_pos,150,0)
}
}
// case 36 mes
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label


if flag_on_do==1{
cmd_true_p{
switch my_pc_B
eq_B_two 1,"x",10
eq_B 3:cr_com=en_get_from_var:goto *com_sw
eq_B 4:reg1=cpr:goto *sw_begin
swend
subr_do_eq_2_p3s 5,en_mes,"Xの値は"+reg1+"です。。。"
if is_jump_p==1:is_jump_p=0:goto global_label
}
}
// case 37 stop
my_line=int(__LINE__)
gosub *sbr_l_search
gosub *sbr_no_jump_lab_search
if is_jump_p==1:is_jump_p=0:goto global_label

if flag_on_do==1{
cmd_true_p{
subr_do_eq_1 1,en_stop
if is_jump_p==1:is_jump_p=0:goto global_label
}
}


No.295 キリ番報告スレッド! Date: 2011/04/26(火) 01:03
Name :tyty  nJ2XUER0vw  HOME MAIL [このトピックに書き込む]
ここはキリ番報告スレッドです、キリ番報告にお使いください。
たまたま迷い込んでしまってのゲット報告も気軽にどうぞ!
報告されたキリ番はここにまとめて行きたいと思います。
では良いゲットを!


[アクセス] [ゲッターさん] :アクセスゲット時のコメント

「BBS」
 128 tyty(管理人) :128アクセスゲット!しますた。
 222 y.tack さん :うそうこの前このBBSの222GETしますた
 300 y.tack さん :前300HIT踏みましたよー
 500 tyty(管理人) :今500ゲッツしてしまいました(^^;;)
 444 y.tack さん :この前444HIT踏みましたよ〜
 512 tyty(管理人) :たった今キリのいい 512 げとしました
 600 tyty(管理人) :自分で600踏んでしまいました・・・。
 2222 y.tack さん :どもー2222踏みましたよー
 3500 y.tack さん :3500HIT!踏みましたー
 3900 tyty(管理人) :思いがけずの3900ヒット!でした。
 4200 tyty(管理人) :BBSのトップ画像を更新したら うっかり4200ゲットしました!
 4400 tyty(管理人) :そして今自分もBBSで4400獲得…。
 4700 tyty(管理人) :しまった!また自分で踏んでしまった。4700ゲッツ!!
 4900 y.tack さん :今日4900踏んだ気がします
 5300 tyty(管理人) :5300番目ゲット!

「投稿No.」
 500 y.tack さん :投稿NO 500 GETっすw
 555 y.tack さん :投稿NO.GO!GO!GO!(555)GETいたしいました
 600 y.tack さん :投稿ナンバー600ゲットだぜ!ポケモンゲットだぜーw
 700 Y_repeat さん :投稿NO700 踏みました

「WEB SITE」
 11111 y.tack さん :サイトの方11111踏ませていただきました
 12100 y.tack さん :siteの方12100踏ませていただきました
 13800 y.tack さん :たぶんサイトの方 13800踏みました!
 14500 tyty(管理人) :かなり前に、電霊トップページアクセス14500獲得!


No.709 RE:キリ番報告スレッド! Date: 2017/01/07(土) 01:57
Name :tyty  nJ2XUER0vw  HOME MAIL
かなり前に、
電霊トップページアクセス14500獲得!

No.701 RE:キリ番報告スレッド! Date: 2016/10/08(土) 07:33
Name :Y_repeat  7SM67tY6bA  HOME
投稿NO700 踏みました
ブログはたいして更新してませんが
スクリプトはいぱーい書いていきたいですねw

No.625 RE:キリ番報告スレッド! Date: 2016/01/20(水) 20:12
Name :tyty  nJ2XUER0vw  HOME MAIL
ども!惜しかったですね!
気をつけて今来てみたら私も07778でした!
全く同じ番号なんてこと有るんですね…?
となると 07777 は一体どこへ!?
怖いですねぇ。

No.624 RE:キリ番報告スレッド! Date: 2016/01/20(水) 18:51
Name :Y_repeat  7SM67tY6bA  HOME
惜しい!07778でしたw

No.621 RE:キリ番報告スレッド! Date: 2016/01/19(火) 21:29
Name :Y_repeat  7SM67tY6bA  HOME
自分、今のHITで07775ですw
キリ番近いのでお気をつけあれw

No.602 RE:キリ番報告スレッド! Date: 2015/10/08(木) 03:02
Name :y.tack  5dAdqTSdIo  HOME
投稿ナンバー600ゲットだぜ!ポケモンゲットだぜーw

No.566 RE:キリ番報告スレッド! Date: 2015/07/20(月) 16:25
Name :y.tack  7SM67tY6bA  HOME
おつかれさまです

投稿NO.GO!GO!GO!(555)GETいたしいました

GO!GO!囲碁!みたいなw

No.501 RE:キリ番報告スレッド! Date: 2015/05/29(金) 06:35
Name :y.tack  7SM67tY6bA  HOME
投稿NO 500 GETっすw
おめっとーございまーす

次は777とか1000とか
目指そう!ですね

No.446 RE:キリ番報告スレッド! Date: 2015/01/01(木) 00:15
Name :y.tack  7SM67tY6bA  HOME
HAPPY NEW YEAR!でござる
今年も迷惑かけそうですが
相手してやってくだそうろう

No.433 RE:キリ番報告スレッド! Date: 2014/12/16(火) 19:23
Name :y.tack  PgeUuQv9Ps  HOME
サイトの方14001踏みまして
サイト運営 乙っす
イヨ!オオイ!

No.405 RE:キリ番報告スレッド! Date: 2014/04/17(木) 07:49
Name :tyty  nJ2XUER0vw  HOME
お祝いコメント有難うございます!

> そう言えばここのBBS
> 開設5周年くらいですね

もうそんなになるんですね、言われて初めて気が付きました(~~;)
今後ともよろしくお願いします!

No.404 RE:キリ番報告スレッド! Date: 2014/04/15(火) 19:41
Name :y.tack  7SM67tY6bA 
そう言えばここのBBS
開設5周年くらいですね

やったね!やったね!
very very congratulation!
very very unbelievable!

No.403 RE:キリ番報告スレッド! Date: 2014/03/26(水) 20:13
Name :y.tack  7SM67tY6bA 
たぶんサイトの方 13800踏みました!

No.389 RE:キリ番報告スレッド! Date: 2012/07/30(月) 22:49
Name :tyty  nJ2XUER0vw  HOME MAIL
5300番目ゲット!
また自分で取ってしまった。。。

No.371 RE:キリ番報告スレッド! Date: 2012/02/19(日) 19:01
Name :y.tack  7SM67tY6bA  HOME
こんばんわ
今日4900踏んだ気がします
報告忘れててごめんなさいw

死んで苦しむ霊
とこれも縁起悪いですねw

No.362 RE:キリ番報告スレッド! Date: 2011/12/08(木) 01:36
Name :tyty  nJ2XUER0vw  HOME MAIL
しまった!
また自分で踏んでしまった。
4700ゲッツ!!

No.342 RE:キリ番報告スレッド! Date: 2011/09/04(日) 15:59
Name :tyty  nJ2XUER0vw  HOME MAIL
ご報告有難うございます、どこでのアクセス数でも歓迎です!
何か良い語呂合わせ考えてみましたが思い付きませんでした(^^

そして今自分もBBSで4400獲得…。
死に霊とはこれまた縁起が悪い。


フェーズチェンジ了解です!

No.340 RE:キリ番報告スレッド! Date: 2011/08/30(火) 21:44
Name :y.tack  7SM67tY6bA  HOME
siteの方12100踏ませていただきました
twitterの閲覧siteなんですよねー

No.319 RE:キリ番報告スレッド! Date: 2011/07/20(水) 21:52
Name :tyty  nJ2XUER0vw  HOME MAIL
BBSのトップ画像を更新したら
うっかり4200ゲットしました!

No.296 RE:キリ番報告スレッド! Date: 2011/04/29(金) 01:58
Name :tyty  nJ2XUER0vw  HOME MAIL
BBS内のキリ番報告をまとめてスレッドトップに載せてみました。
もしかしたら漏れがあるかもしれませんが、対分大丈夫なはず(^^;)

No.514 多目的テラス ver0.4 Date: 2015/06/11(木) 01:40
Name :tyty  nJ2XUER0vw  HOME MAIL [このトピックに書き込む]
取り敢えずどこに書き込むか迷ったら書き込むスレッド!
気楽にお使い下さい!

「以前のトピック」

総合スレッド(ver0.1)

雑談スレver0.2

立ち話スレッドver0.3

No.708 RE:多目的テラス ver0.4 Date: 2017/01/07(土) 01:47
Name :tyty  nJ2XUER0vw  HOME MAIL
どうも明けましておめでとうございます!
前の書き込みが一年前なのを見て
個人的にはまだ前回からそこまで経過してる感じがしていなくて、
自分の時間分解能が結構劣化してる様子に軽くショッキングでしたねー。。。

> tytyさん。皆さん。あけましておめでとうございます
> 自分も年が明けて 視界が開けたかんじがします

Y_repeat さん明けましておめでとうございます!
いつも定期的に書き込んでくださって盛り上げ様として頂いて有難うございます、視界が開けたという事で活躍を楽しみにしたいと思います。
こちらも引き離されないよう何とか今年こそはペースを上げて行きたい所存です。
(なぜか硬めに文章になってしまいました^^;)

No.626 RE:多目的テラス ver0.4 Date: 2016/01/20(水) 20:48
Name :tyty  nJ2XUER0vw  HOME MAIL
気づけば前回から5ヶ月近く経ってる事に
衝撃を覚える tyty です。
ども!明けましておめでとうござます。

y.tack さん改め Y_repeat さん(どっちで呼べば良いのでしょう?)
新トピ作成乙です!
所で81っていい数字なんですね?初耳でした。
スクリプト書きも進んでますね!
私も見習って進めていきたい今日このごろ。

またこっちのBBSにも書いていきたい所存です!
今年もよろしくお願いします。

No.576 RE:多目的テラス ver0.4 Date: 2015/08/26(水) 01:35
Name :tyty  nJ2XUER0vw  HOME MAIL
もうちょいで作業が一区切り二区切りできそうな感じの tyty です
それでもまだやることが沢山あるのが悩ましいところ。
ではまた空いてしまいましたが返信でげす。


>>573
> http://hsp.tv/play/pforum.php?mode=all&num=70673
> 2.6verマップエディタの移植が
> 多分完了しました
> 一年くらいかかった気がします
> でも結局
> 公式BBSの人にサンプルもらって大体完成w
> サンプル書いてもらうのは抵抗ありますが
> 僕のアウトプットもサンプルスクリプト色強かったし
> こういうのもいいのかなー

長かったですね、でもいいかんじですね、
しばらく配置して遊んでみましたが、
ツクールのマップ編集思い出して懐かし気持ちになりました。
さらに自分も昔マップエディタ作った時似たようなことして遊んで
懐かしくなってたな〜とデジャビュ。

ちょっと操作してたらマップスクロールでバグを見つけました
行番号書いときますね 36行, 75行です。
この二箇所を修正したら一応治りましたよ。

そういえばこの公式BBSのウィンドウ判別スクリプトって
HSPのウィンドウからHSPの別のウィンドウへのドラッグ操作も出来そうですね。

人にサンプル貰う抵抗も分からなくはないですけども
でも進まないよりは良いのかなとも思ったり。
ということで完成おめでとうございます。


>>574
> いつも相手していただいて ありがとうございます
>
> いやー公式BBSでお礼してないって非難された人がいて
> 僕もほとんどお礼書いてないなーって
> 今月をちゃんとお礼を書こう月間にしようかな?
> って勢いですw

どうもこちらこそいつも盛り上げていただいて有難うございます、
私関係なくとも案外長続きしてた気もしますがそう言って頂いて恐縮です。
良くしている自覚は無かったりしますが改めてこういうのも時には悪くは無いかもしれませんね
お礼は必須じゃないけど、一つの円滑剤のようなことはあるのかもしれません。
お互い今後共興味の続く限りプログラミングライフを楽しんで行きましょい!

私も強化月間に便乗してみました!
どもどもです。


>>575
> >相変わらずソースの差分調べには WinMergeU が大活躍です!。
> ってWinMergeしか見つからなかったんですが
> 僕は元ソースと写経したソース コピペして
> 誤字がないかcheckする使い方が多いんですが
> そういうの指摘してくれないです
> あくまでもファイル単位?

実行ファイル名が WinMergeU だったのでそのままコピペしたんですけど
今確認しなおしたら WinMerge でした・・・。
どうやら最後の U は Unicode 対応って意味かもしれない。
入手先が以下なら合ってます
公式:http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html
窓社:http://www.forest.impress.co.jp/library/software/winmerge/

コピペでも比較出来ますよ!
新規作成して、右と左にそれぞれ貼り付けてから
F5 キーを押すと比較してくれます。

No.571 RE:多目的テラス ver0.4 Date: 2015/08/07(金) 05:52
Name :tyty  nJ2XUER0vw  HOME MAIL
ども!こんちくわ!
私です!(ドヤッ(誰?))


最近は暑いですね猛暑日とか新記録作っちゃったり
昼間は室温40度くらい行ってました。
そんななかで色々やってたりします、関係ないことやってたり、
まだ出せるとこまで出来てないのでもうひと踏ん張りな今日このごろ。


前に公式BBSでフォント名取得できないかっていうスレッドありましたが
そういう感じのこともやりつつ。
ってもうそれはほとんど出来てるんでそろそろ公開したいところですね
まだ整えたりしないと行けない部分もあるのでもうちょいですが。


今年のコンテストはまだ全然考えてなくて
自分でもどうしようかと思っておるところです。
何か思い付いたら良いんですけどね。


そんなこんなで、こんなところで近況報告の様なものでした。

No.539 RE:多目的テラス ver0.4 Date: 2015/07/11(土) 02:53
Name :tyty  nJ2XUER0vw  HOME MAIL
>>537
> >>533
> > > HSPTVBBS の repeat の cnt をアルファベットにってスレに
> > > 今回もう少し真面目に書いた物を書き込んでみます(こっちで(なんでや))
> > 僕もたまに公式BBSの続きをこっちに書いてるよーなw
> あまり書き込みすぎるとバランスが良くないですしぬぇ。

新たにレスありましたね。
そこで
> a の次桁が ba なのは a が0扱いなので 0,1,2,3... の桁上がりが 1 なのと一緒です
とありました。。。あー!
私のここで書いたやつ完全にその罠にかかってるー
スクリプト書いてる時、何で桁上り初めが b なんだろうと思ってよく考えず
a からになるよう調整してましたがそもそも余計だったみたいです。
01 なら ab だからですね、トホホ。

ということで修正バージョンを貼っておきまするるる
ついでにモジュールにして小文字か大文字かを指定するパラメータも付けてみました。

#module mod_int_to_ab

// 正の整数をアルファベットに変換して返す
#defcfunc int2ab int val, int mode
a = val
s = ""
repeat
b = a \ 26
poke s, 1, s
poke s, 0, 'a' + b - 32 * (mode ! 0)
a /= 26
if a = 0 :break
loop
return s

#global


#const MARGIN 5

screen 0, 640, 480
repeat
mes int2ab(cnt)
if GINFO_CY + GINFO_MESY >= GINFO_WINY :pos GINFO_CX + GINFO_MESX + MARGIN, 0
if GINFO_CX + GINFO_MESX + MARGIN >= GINFO_WINX - 50 :break
loop

mes "----"
repeat 5, 1
mes int2ab(int(powf(26, cnt)) - 1, 1)
loop


> > > なんかうまく行ってる気がします!
> > 動作のしかたはわかってませんが 僕の環境でも正しく返って来ました
> 個人的に、うまく行ってるように見えるだけってのがよく有るんですよね。

もうちょっとでしたね(苦笑)

> > > ちなみにあっちで書き込んだ cnt_ab という表記は、
> > > って、どうでも良い話ですね。
> > 公式BBSの利用者さんはこの小ネタ知らないので
> > 謎の表記ですなw

どうでも良いついでに書くと、あっちのサンプルでは
a から 28 個表示してて a b で表示し終わるようになってるのも
アルファベットの a b に掛けてあったり・・・。
どうでも良すぎましたね。

> > 10進表記をa〜jの10進表記に
> > 単純に置き換えてみては?
> それも面白そうですね、
> 後でやってみます!

上のモジュールをベースに書いてみました、
触発されて桁指定機能も追加してみたり。

#module mod_int_to_ab10

// 正の整数をアルファベットの a - j を使って表して返す
#defcfunc int2ab10 int val, int keta, int mode
a = val
s = ""
repeat limit(keta, -1, 10) - (keta = 0)
b = a \ 10
poke s, 1, s
poke s, 0, 'a' + b - 32 * (mode ! 0)
a /= 10
if keta <= 0 & a = 0 :break
loop
return s

#global


#const MARGIN 10

repeat
mes int2ab10(cnt, 3, 1)
if cnt \ 10 = 9 :pos GINFO_CX + GINFO_MESX + MARGIN, 0
if GINFO_CX + GINFO_MESX + MARGIN >= GINFO_WINX :break
loop

でも中身ほとんど同じですね(--;)

No.537 RE:多目的テラス ver0.4 Date: 2015/07/10(金) 15:06
Name :tyty  nJ2XUER0vw  HOME MAIL
これまた今気がついたんですが
「>>この記事を引用する」から引用すると
pre タグとかもそのまま引き継げるんですね。
これは便利ですね(何故気付かなかった・・・自分)


>>533
> > HSPTVBBS の repeat の cnt をアルファベットにってスレに
> > 今回もう少し真面目に書いた物を書き込んでみます(こっちで(なんでや))
> 僕もたまに公式BBSの続きをこっちに書いてるよーなw
> 本当はよろしくない気もしますがw

あまり書き込みすぎるとバランスが良くないですしぬぇ。
それに質問者の返信も一度も無いので。。。
こっちのが色々気軽に投稿できるという。

> あんまり分解してないですけどw
> なんでリピートの中に放りこまないといけないんですか?
> 公式BBSの方のは 一行にまとめてマクロになってるんで
> そっちのが使いやすそーな
> 一行じゃなくてもマクロにまとめたほうが使いやすいかんじしますけど
> でもコレこのまんまrepeat〜loop込みでマクロにされても理解しにくくはありますが

後の投稿(>>536)をみるともう理解されてるみたいなので蛇足と思いますが
検索などでここにたまたま迷い込んできた人とか向けに一応明文化しときますと
repeat してるのは複数桁対応だからですね!(キラーン)
マクロや関数にして便利化しても良いんですけど、
一応サンプルとして書いたばかりの段階で勢い余って投稿したのでベタ書きのままになってます。
これ実は整数を16進数に変換する処理書いてて、これはこないだのあれにそのまま応用できるぞ!と
閃いて書いてみたものだったり。なので少しいじると16進数変換になります。

> こうしたり
> こうしたりw

桁数指定は思いつきませんでした、
そういうのも面白いですねー。

> > なんかうまく行ってる気がします!
> > が、ちゃんと検証してないのでどっかでずれてきそうな気もします。。。
> 動作のしかたはわかってませんが 僕の環境でも正しく返って来ました

確認有難うございます!
個人的に、うまく行ってるように見えるだけってのがよく有るんですよね。

> > ちなみにあっちで書き込んだ cnt_ab という表記は、
> > って、どうでも良い話ですね。
> 公式BBSの利用者さんはこの小ネタ知らないので
> 謎の表記ですなw

そのくらいの方がバランスちょうど良いかなーって。

> 僕はそのスレ読んで
> わざわざ26進表記にしないで
> 10進表記をa〜jの10進表記に
> 単純に置き換えてみては?
> って書こうとして躊躇したりw

それも面白そうですね、
後でやってみます!

No.532 RE:多目的テラス ver0.4 Date: 2015/07/10(金) 02:18
Name :tyty  nJ2XUER0vw  HOME MAIL
そいえば今思いましたが、お互いスレッドを分けて投稿すると
">>この記事を引用する" がそのまま使えなくなりますね。
コピーして移動してペーストと。
ブラウザ上で直接書くと間違えてそのまま書いて投稿しちゃいそな。


HSPTVBBS の repeat の cnt をアルファベットにってスレに
久々に書き込んだくせにお茶お濁してた私ですが
http://hsp.tv/play/pforum.php?mode=all&num=69984
今回もう少し真面目に書いた物を書き込んでみます(こっちで(なんでや))

a = 26
s = ""

repeat
b = a \ 26
s = strf("%c", 'a' + b) + s
a /= 26
if a = 0 :break
a --
loop

mes s

なんかうまく行ってる気がします!
が、ちゃんと検証してないのでどっかでずれてきそうな気もします。。。

ちなみにあっちで書き込んだ cnt_ab という表記は、
調べた所アルファベットという名前はギリシャの文字の最初の2つ
アルファとベータから来てるらしいので、そこから ab と取ってみました。
cnt_αβ にしようか迷いましたが半角と全角混ぜると幅が変わるので止めました。
って、どうでも良い話ですね。

No.531 RE:多目的テラス ver0.4 Date: 2015/07/09(木) 23:06
Name :tyty  nJ2XUER0vw  HOME MAIL
ちょっとずつ投稿していくスタイルで、ほそぼそと!

>>526

> > まいどどうもお騒がせしてすみません。
> イメージだけで決めつけて
> ちゃんと調べてない。もあるあるですね

ですね!
きちんと面倒くさがらずに確認するのは大事ですね。以後気を付けたいです。

> 最近の僕だと
> dupという命令に問題は特にないと思ってたら
> 3.x推奨せずw
> 途中で値変わるかもですって
> #defineで代用してますが、問題ありそうですか?

dup てそうなんですか!?
私も驚きました!
ヘルプには「初心者向けに、dup命令を推奨することはありません。」
と書いてあるのは今確認しましたが
あるバージョン以上でってのはもうちょっと詳細を知りたいところです。

> > > ほぼクリックしないですね。自分w
> > 個人的には前の話しが分からないとこの意味が分からない
> > みたいな時のために一応あったら安心です。
> めんどくさいから辿らず、あるもので理解するのを
> 心がけてますね
> じゃあ 途中のNOをどう利用するのでしょう?みたいなw

利用しないという(笑)

検索して探すのも面倒くさいので、保険みたいなもんですね。

> > > > >出先でたまに「電霊」で検索かけてるかもw自分w
> > > > ドキッ!
> > > なんか検索しにくいかんじになってきましたねw
> > 元々し易いのかはともかくとして、
> > 適当に付けて適当に略した名称なので成り行き任せが似合ってると思ってたり。
> > 今試しにググってみたらデビルサマナー ソウルハッカーズとか出てきました(笑)
> > 多分やったことあるゲームのはずなのにそんなに覚えてないという。
> コレはあれですね。外で検索してるのバレたから
> 外で検索しにくくなったという流れでw

なるほど、完全な誤爆でした(恥)

> > > なんか検索しにくいかんじになってきましたねw

改めて。
いえいえ、どんどん検索して下さいましまし!
全然気にしませんよってからに。

> > > いまいち定番エディタないっすよね→CとJAVA
> > 現在の使用エディタをまとめると、普通のテキストとか、ちょっとした C とか HTML, CSS は terapad
> > HSP は LeAntilla, PHP は notepad ++ を主に使ってます、
> > 最近は Brackets や sublime text も試しにダウンロードして使ってみてます、
> > 相変わらずソースの差分調べには WinMergeU が大活躍です!。
> なんかまたフリーソフトの名前がズラズラ並んでてw
> そういうスレまた建てた方がいいでしょうか?

あまり話題が伸び無さそうならこんな(今のような)感じでも良いと思います。
伸びそうなら作るのも吝かではないですけどね(多分「吝か」使い方間違ってる!)。

> > > ECLIPSEは重いのであんまり起動する気になれないwみたいなw
> > それしかないって時まで極力開きたくはないですね。
> > Visual Studio Code ってのもあるようです。
> > まだダウンロードしただけで使ってないので軽いか分からないですが。
> コレWEB制作用っぽいんですが

あ、ウェブ用でしたか、
やっぱり確認せずに言うのは良くないですね。失礼しました。

> WEBはブラウザで作業するかビルダーですね
> なんかビルダーを駆使すれば過去ログの整理が割と楽っぽいんですけど
> どうしましょうか
> 別に全部一気に(TOOLとかで)変換せず 一項目ずつ入力してくのも
> 頑張れば出来なくもないかんじですねw

でも一項目ずつってのは頑張り方が間違ってるような気もしなくもない様な?
いや、実際は分からないですけれども。

ツール作って、CSV形式で保存できるようにしたり、
HTMLのページみたいに見れるような機能をつけた方が
色々と良さそうかなと。作ったツールは公開するので。

> > > [ウェブサービス終了にまつわるデータ消失についての話題](ざっくりまとめてみた(笑))
> > 大手のブログなどは移行出来るようにエクスポート機能あるとこもありますね
> > 加えて別ブログデータのインポート機能も合わせて。
> > でもサイトやBBSとはまた事情が違いそうですけど。
> > ウェブ上のデータは基本的にバックアップしやすくしといてほしいものですね。
> エクスポートしてくれるとこもあるんですけど
> はてな。とかw
> それをどうコンバートするかも問題だったりw

コンバート問題は難しそうですね・・・。

> > > ellerさんとこ 全然更新してないのに がっちり残ってるの眺めて
> > > ブログは大丈夫って言い聞かせてますけどw

コンテンツが有用だったりすると、広告が入ってるブログは、
それだけで広告収入が入るからサービス元としては
消さないほうがメリットとかありそうですね。

> > > > これツールか何かで取り出したんでしょうか、凄いですね。
> > > 一覧表示して手動コピペですよw
> > まさかのコピペ!
> 逆に変に自動化しようとするより
> 手動でちょこちょこやってたりする方が楽なことありません?w

確かにそうなんだけども、自分の場合、
ついでにツール作ったらその分学習にもなるしお得!
ってついつい思ってしまいます(悪い癖です)。

> > > > > レンタルwiki何か月かに一回は更新しようとは気をつけてますが
> > > > 色んなとこにバックアップしつつのまさに確率の世界ですね。
> > > アクセス権いじってサイトに置くのってどーなんですか?
> > このアクセス権てのがどういうのか良く分かりませんでした
> > できれば補足おぬがいします。
> 666とか755とか聞いたことありません?
> UNIX系はアクセス権あるぽいです どんなファイルでも
> なのでWEBから来た人にアクセス権与えず
> 自分だけFTPでDL出来るみたくしよーかな。とw

あーそういう意味でしたか。
アクセス権いじってサイトに置くって所から、
自分用にウェブに置いとくって発想に至りませんでした。
補足どうもです!説明聞いて納得しました。
規約に則ってればそれも良さそうですね。

> > > > > tytyさんも過去ログの管理考えてみてください
> > > 僕がやってる手動コピペじゃなく
> > なにで作るかにもよりますが、意外と行けそう。
> > 作る方向で考えてみます。
> 本文、URL、スクリプト 等を識別してコンバートする。と
> 僕こういうの苦手っすねw
> 手打ち用TOOLくらいしか思いつかないw

実は数年前に別件プロジェクトで(個人的な)
sqlite3 を使って csv からデータベースに変換して
データベースからウェブサイトをまるまる出力する様なツールを作ったことがあるので(笑)
その時の経験が活かせそうです。

No.530 RE:多目的テラス ver0.4 Date: 2015/07/09(木) 22:05
Name :tyty  nJ2XUER0vw  HOME MAIL
今回は短く区切って投稿してみまする!

>>527
> こんばんわ
> 吉里吉里がですね
> 複雑で大規模なプロジェクトに向いてるって書いてました
> 複雑なのを書こうとは思いませんが
> 「他のADVツールに比べて」と入ると思います

吉里吉里ってそうなんですね、
確かに何と比べてという相対的なものですよねそういう概念(観念?)て。

> 大規模なのは
> 言語仕様というより
> 規模の大きなのを作る人が多いから。かもしれませんね

そういう規模のものを作る人が始めに居たから
このツールは大規模にも使えるのか!見たいに
大きめで作りたい人が引き寄せられてとかありそうですね。
それでそういう人が増えたから開発側も大規模に向いた作りになってくとか。

あるいは、他に同様のツールが有った時に、実際にツールを使ってみた人が
自分の作りたい物に合った環境に固定されて、そうじゃない人は別のツールへ流れてみたいにして
結果的に吉里吉里が大規模に向いてたから集まってきたとかもありそうですけど。

どちらにしろ集まってきた層に応じて求められる機能が
強化されて行くものなのかもしれません。

> HSPは僕含め 小型のプロジェクとを作る人が多いからみたいなw
> なんだかんだ言って
> こういうのはユーザー同士
> 微妙に繋がってるのではないか
> という仮説を立ててみたりw

HSPの場合はどうなんでしょうね?
大きい作品を作る人も居るんでしょうけど多分小規模が多いですよねぇ。
ユーザー同士の繋がりってのは、
大規模作品を作る人が多いと大規模制作のためのノウハウも共有され溜まってゆく
だからよりそういう方向での開発に適してくる?とかそういう面もありそうですね。

No.529 RE:多目的テラス ver0.4 Date: 2015/07/09(木) 21:43
Name :tyty  nJ2XUER0vw  HOME MAIL
微妙だったトピックタイトル変更しました
それほど変わってませんが前より分かりやすいかなと。


>>528

> 汎用文字列検索モジュールやっと出来ました!
> まだ全角に対応してないんですけどもね。

煩雑でまだリファクタリング?も残ってて
必要な処理もいくつか足りてない感じなのでその追加も。
まだ掛かるみたい・・・。

> >>522
> > ・TEST
> > あんまり詳しくないんで
> > xUnitっぽい TOOLを想定してるんですけど
> って今思い出したんですが、
> 確か数年前にどなたかが HSP の統合開発エディタを公開されてて
> そこにテスト機能が有ったようなと急に思い出しました。
> ちゃんと使ったこと無いんですけどそのエディタ。
> それを見れば HSP のテストの何か参考になるかも?しれませんね。
> いや分からないですけども。エディタ名後で確認してみます。

確認してみました、IDHsp という名前のエディタでした。
もうページなくなってて入手出来無いっぽいですが、一応当時ダウンロードしてたみたいです私。
ソフトの扱いに関する記述が書いてないので複製して良いか分かりませんがもし興味が有ったら出します。

一応さっき使ってみたのですが、なん文字か打つ度に落ちてしまってきちんと試せてません
ソフト名でググったらHSPTVの掲示板にスレが有りました。
スレ読んでたらなんとなくこんなこと有ったなと思い出してきました。
http://hsp.tv/play/pforum.php?mode=pastwch&num=31376
http://hsp.tv/play/pforum.php?mode=pastwch&num=34868

それでこのスレ中に以下のリンクが有り、
テストを使用している動画が置いてて、今もまだ見れました。
https://onedrive.live.com/?id=90EB8631400F6A4F%21102&cid=90EB8631400F6A4F&group=0
しかしこれだけ見ても自分には何をしてるのやらよく分からなかったりしますが・・・。


> >>526
> > なんかどの程度残せばいいかんじか
> > よくわかんなくて
> 最近は、最初の引用文は出来るだけそのまま引用して
> 2回めの引用からは、返信内容で話題の方向性が絞られるので
> 話の流れが分かる程度に話題に合わない行を削っていく

最初とか2回目とか書いたのは引用の引用の引用、見たいな意味での回数です、
今自分で読み直したらやたらと理解しづらかったので補足してみました。

No.528 RE:電的汎用テラス ver0.4 Date: 2015/07/08(水) 01:10
Name :tyty  nJ2XUER0vw  HOME MAIL
ども!
ボーとしてて気が付くと直ぐに半月ほど経ってるという
恐ろしい時間感覚に自らおののいている tyty です!

汎用文字列検索モジュールやっと出来ました!
考え方がちょっとズレてたみたいでした。
まだ全角に対応してないんですけどもね。

>>518
> > 最近ずっとHSPの文字列検索モジュールを書いてるんですけど
> > 欲が出て"()"によるサブマッチもどきを入れる段階で急に頭がこんがらがってきました
> 汎用的な処理ってのが曲者で
> 僕からしたら サンプルスクリプトをのっけてコピペとか
> 少々汎用的じゃなく 型のはまった処理
> のが楽そうではあります

そのためだけの一点ものの方が考える範囲が狭まって作りやすいってのはありそうですね
だけども今後の方向性のために必要になってくるので、
「これ作っとくと後々いろいろ楽になるぞなんとか作らねば!」って感じでした。

>>523
> ロジック
> あるあるですよね
> こーゆー処理をしたくて 書いてるんだけど上手くいかない みたいなw
> そーゆー時はロジックが間違っていることが多いです
> みたいなことを 書籍でクイズを例にして説明してました

今回の場合はロジックというか流れの読み方が間違ってた感じでしたね
なんというか前後関係の状態とか流れに頭がこんがらがってた
でも冷静に考えたら、前後関係そこまで考えなくて良い状態で
必要以上に流れを気にしてたのが問題だったようです。

自分の場合ロジックをよく分かってないので(笑)
ロジックは多分そんなに合ってないかも。。。

> 僕が書いてる簡易言語で言うと
>
> 毎回行う関数があって
> switchみたく分岐して
> 関数を実行する
> って流れだと思うんですよ。普通
> しかし僕の場合
> マクロで数種類の処理を
> ちょっと変えて実際に叙述するんです
>
> 行う分岐をそんなにスペース節約したいかw
> (たぶんしなくていい)
> みたいなw

関数飛んだ先で行う処理を、マクロに書いてその場で展開させてるって感じですか(違う?)。
同じスレッドに投稿してるスクリプトの事だと思うんですけど
最近複雑になりすぎてコメント無くてなかなか読めないですね、
フラグとかも駆使しててマクロ内にもフラグ隠れてたりで
自分みたいな記憶力の無い人にとっては追いかけるの結構大変な処理ですね。
一度本腰入れて頭から解析しながらコメント書き入れて見ていかないと今はまだ理解出来てないです。

> 僕のミニゲームも
> 最初はシナリオ処理で作ってく流れだったんですけど
> シナリオじゃなく まんま書いてて
> 実際 そんなに悪い手法だとは思ってなくて
>
> マクロで数種類の処理を
> ちょっと変えて実際に叙述する
> 手法で RPGツクールみたい処理を書くのは
> どうなのか?
> みたく考えております

悪い手法では無いと思いますね。
シナリオ読んで解析してってのも1つの手ですけど、
スクリプトのベタ書きってのも、やり方次第で良さが出そうです。

> HSPは大規模な作品不向きって
> 読みにくいだけかもとも思います

読みにくさは労力に関係して来ると思うんですけど、
同じ労力なら別の方法使ったほうが楽だよ見たいな意味なのかなと。
ハサミで料理作るの不向きっていう見たいなもんで
やってやれないことは無いかもしれないけど同じ労力なら包丁使ったほうが適してる見たいな。
それはある意味その不利さを許容できればハサミの便利さも活かせる部分があるという事かも。
ってこれ絶対例え悪いです(^^;;;)

>>522
> ・TEST
> あんまり詳しくないんで
> xUnitっぽい TOOLを想定してるんですけど
> そーゆー処理を単純化させて具現するとしたらどんなかんじなんでしょうか?
> って公式BBSで質問したほうがいいですか?

自分もテスト関連は全然です
こんな感じ?っていうイメージくらいしかないです
今慌てて xUnit でググったくらいにトーシローでございます。

って今思い出したんですが、
確か数年前にどなたかが HSP の統合開発エディタを公開されてて
そこにテスト機能が有ったようなと急に思い出しました。
ちゃんと使ったこと無いんですけどそのエディタ。
それを見れば HSP のテストの何か参考になるかも?しれませんね。
いや分からないですけども。エディタ名後で確認してみます。

>>526
> > > > そういえば BBSの返信は terapad で書くことが多いんですけど、
> > > > その時 CTRL + Q ショートカットキーで、頭に > 付き貼り付けできて便利ですね。
> > > 僕は この記事を引用する クリックしてコピペですね
> > 私も初めは「引用する」でやってたんですけど、
> > 全部引用されるので terapad 使う様になりましたね。
> 改行して適当にdel押してやってて
> そんなにめんどくさくないですね
> 逆に最初の頃 引用記号 手打ちだったのはめんどくさかったですけどw

あ〜そういえば全角の括弧使ってましたね、
どっちの引用か分からなくならないための対策っぽかったですが
手打ちだったんですね・・・それはめんどくさいぃ・・・。

> なんかどの程度残せばいいかんじか
> よくわかんなくて
> そういう部分をtytyさんにまかせっぱなのは
> 申し訳なく思っていますw

最近は、最初の引用文は出来るだけそのまま引用して
2回めの引用からは、返信内容で話題の方向性が絞られるので
話の流れが分かる程度に話題に合わない行を削っていく
引用による '>' が重なる度にその削りを繰り返すってだけですね。
引用文が増え過ぎたらその話題の要約になりそうな数行だけ選んで後は消すとか。
要するに適当です(笑)

No.524 RE:電的汎用テラス ver0.4 Date: 2015/06/15(月) 10:15
Name :tyty  nJ2XUER0vw  HOME MAIL
http://dentama.1616bbs.com/bbs/dentama_tree_r_518.html

> > でも一つだけ難があって、
> > >>番号 で記事にリンクできなくなるんですよね
> > スレッドが違うので。
> > http://dentama.1616bbs.com/bbs/dentama_tree_r_記事番号.html
> > というふうに記事番号の部分だけを変えてリンク貼れば参照できるみたいなので
> > http://dentama.1616bbs.com/bbs/dentama_tree_r_497.html

あうあう、なんか勘違いしてたかもしれない、

>>518

試しにやってみたら出来ました!
ものすごい早とちりでした。

なんでスレッド違いで出来ないと思ったんだろう自分・・・そしてなぜ確かめなかったし・・・。
今後とも普通に >> を使ってやって下さい!
まいどどうもお騒がせしてすみません。

> クリックしたらジャンプするってなんとなく認知にあるんですけど
> ほぼクリックしないですね。自分w

必要さえ無かったパターンのやつやー!
個人的には前の話しが分からないとこの意味が分からない
みたいな時のために一応あったら安心です。

> > >出先でたまに「電霊」で検索かけてるかもw自分w
> > ドキッ!
> なんか検索しにくいかんじになってきましたねw

元々し易いのかはともかくとして、
適当に付けて適当に略した名称なので成り行き任せが似合ってると思ってたり。
今試しにググってみたらデビルサマナー ソウルハッカーズとか出てきました(笑)
多分やったことあるゲームのはずなのにそんなに覚えてないという。

> > そういえば BBSの返信は terapad で書くことが多いんですけど、
> > その時 CTRL + Q ショートカットキーで、頭に > 付き貼り付けできて便利ですね。
> 僕は この記事を引用する クリックしてコピペですね

私も初めは「引用する」でやってたんですけど、
全部引用されるので terapad 使う様になりましたね。

> CとかJAVAはterapad使ってます
> いまいち定番エディタないっすよね→CとJAVA

定番とかはそんなに決まってない物もありますね、
私の場合 javascript に使うエディタはちゃらんぽらんです(^^;)。
現在の使用エディタをまとめると、普通のテキストとか、ちょっとした C とか HTML, CSS は terapad
HSP は LeAntilla, PHP は notepad ++ を主に使ってます、
最近は Brackets や sublime text も試しにダウンロードして使ってみてます、
近代的なエディタって感じで個人的には好きな方向性です。
相変わらずソースの差分調べには WinMergeU が大活躍です!。

> ECLIPSEは重いのであんまり起動する気になれないwみたいなw
> 吉里吉里も開発環境とterapad半々ですね

確かに eclipse とか Visual Studio とか重いエディタは
それしかないって時まで極力開きたくはないですね。
最近窓の杜↓で知ったたんですけど
Visual Studio Code ってのもあるようです。
http://www.forest.impress.co.jp/docs/news/20150603_705205.html
まだダウンロードしただけで使ってないので軽いか分からないですが。

> > な、なんと!レンタルサーバーの @sites がサービス終了してたみたいです!
> うちもatpageとatwiki借りてるんで焦ったんですけど こっちはまだ大丈夫ですねえ

前にサイトの移転考えてた時の候補だった時もあるので
私も驚きと同時に急がなくて良かったと思いました。。。
pageとwikiは大丈夫なんですね!でもこういうことがあるとそっちも心配になる。

> そして、check早いのさすがっすw

掲示板の方だけ月に数回ほど開いてて(平均すると)、
スタイルが無くなってるのを見て気がつきました。
前開いたのが5月半ば頃くらいだったと思うので
半月が早いのかどうかは分かりません(笑)

> > > > 突然のサービス終了でデータ消滅とかあるかもしれない
> > > りささんとこもレンタル場所変わりましたよね
> > > サービス終了ってあるあるなんすか?
> > 直近で、こういう話もしてたのでなんともタイムリーですね()
> > この場合はBBSじゃなくサイトの方で、データはローカルにもありそうですが。
> WEB上のデータってあんまり利用者の方でバックアップしてなかったり
> 移転しにくい構造になってたりするんですよね
> 僕もまあサイトは許容範囲ですが
> ブログはサービス停止になったらアウトだなってとこはあります
> ellerさんとこ 全然更新してないのに がっちり残ってるの眺めて
> ブログは大丈夫って言い聞かせてますけどw

大手のブログなどは移行出来るようにエクスポート機能あるとこもありますね
加えて別ブログデータのインポート機能も合わせて。
でもサイトやBBSとはまた事情が違いそうですけど。
ウェブ上のデータは基本的にバックアップしやすくしといてほしいものですね。

> > これツールか何かで取り出したんでしょうか、凄いですね。
> > でも記事ナンバーが1からじゃないっぽい?
> > こっちでも何か考えて見ます。
> 一覧表示して手動コピペですよw
> なので記事は一覧の上から順に載ってます
> でもこんなんならスレごとにコピペできそうですね

まさかのコピペ!

> 「このトピックに書き込む」クリックで
> スレ全部表示されるはずw

なるほど確かに、気づきませんでした!

> > > レンタルwiki何か月かに一回は更新しようとは気をつけてますが
> > 色んなとこにバックアップしつつのまさに確率の世界ですね。
> アクセス権いじってサイトに置くのってどーなんですか?

このアクセス権てのがどういうのか良く分かりませんでした
できれば補足おぬがいします。

> > > うちのサイトにアップしましたが
> > > こういうのは2か所以上がいいんですよね
> > > tytyさんも過去ログの管理考えてみてください
> 僕がやってる手動コピペじゃなく
> tytyさんならTOOL作れそうなかんじがするのでw

これは簡単に作れそうな気も。
なにで作るかにもよりますが、意外と行けそう。
作る方向で考えてみます。

No.517 RE:電的汎用テラス ver0.4 Date: 2015/06/11(木) 15:36
Name :tyty  nJ2XUER0vw  HOME MAIL
なんか lisa さんのサイトが開けなくなってるのに気が付きました、
サイトからスタイルシートを読みこむようにしてたからか
BBS のデザインもおかしくなってますね。

なんでだろうと思って少し調べたら
な、なんと!レンタルサーバーの @sites がサービス終了してたみたいです!
http://desk.atfreaks.com/tickets/form/atsites
http://www56.atwiki.jp/atsites/pages/56.html


> > 突然のサービス終了でデータ消滅とかあるかもしれない
> りささんとこもレンタル場所変わりましたよね
> サービス終了ってあるあるなんすか?

直近で、こういう話もしてたのでなんともタイムリーですね()
この場合はBBSじゃなくサイトの方で、データはローカルにもありそうですが。
空気を呼んで私はずっとあっちには書き込んでなかったので
なんとも言えない立場ですが、今後なにか動きはあるのかな。
.net バージョンで作り直してたみたいなんで、
なんか今後の動きがあるのかどうなのか気になりますね。

No.516 RE:電的汎用テラス ver0.4 Date: 2015/06/11(木) 03:22
Name :tyty  nJ2XUER0vw  HOME MAIL
最近ずっとHSPの文字列検索モジュールを書いてるんですけど
苦戦でもう数ヶ月スランプってて他の事にも頭が回りません。
もうそろそろ完成させたいのだけれどもうーむ。

ini などの設定ファイルを標準命令だけで簡単に処理したくて
まずは汎用的な便利検索モジュールだろうと作ってみたらハマってしまいました。

文字列の検索にワイルドカードに正規表現のエッセンス(果汁で言うと3%くらい)を
中途半端に混ぜた様なオレオレ仕様で、途中までは割りと直ぐできたんだけども、
欲が出て"()"によるサブマッチもどきを入れる段階で急に頭がこんがらがってきました(これがコンフュか!)
とはいえもうすぐ出来そうな感じもしつつ、なかなかどうして。。。


そういえば BBSの返信は terapad で書くことが多いんですけど、
その時 CTRL + Q ショートカットキーで、頭に > 付き貼り付けできて便利ですね。


> > ワーイ ジャパニーズピーポー ワーイ!見たいな?(笑)
> 厚切りさんw

面白いですよね、勢いだけで押し切ってる感じが妙に好きです

> ホワイと表記すると思うんですけど
> ワーイだと喜んでるみたいw
> ワーイと聞こえるっちゃ聞こえますが

確かにヽ(=´▽`=)ノって感じしますね。
カタカナ英語で書くとホワイの方が有ってそうですが
w はあんまり発音しないって聞くので、ホワイもなんかちょっと違和感があります。
なのでそれらしく表記するなら
ワイ
が良いかもしれませんね。って見た目の違和感パないですけど。


>出先でたまに「電霊」で検索かけてるかもw自分w

ドキッ!めっかっちゃったー!見たいな(笑)

> > お互いが書き込む専用のスレッドを作り分けて、
> > 自分専用のスレッドに相手への返信書いてくってのも面白いかも(ただの思いつき)
> > 自分の書き込みだけ、相手の書き込みだけ読めると。
> なるほろ こんなかんじっすか?w

そんな感じです!
でも一つだけ難があって、
>>番号 で記事にリンクできなくなるんですよね
スレッドが違うので。
それさえ問題なければ便利な部分もありそうです。
でも、
http://dentama.1616bbs.com/bbs/dentama_tree_r_記事番号.html
というふうに記事番号の部分だけを変えてリンク貼れば参照できるみたいなので
その手間が許容できれば問題無いっちゃ無いのかな。
この記事の返信先アンカーなら
http://dentama.1616bbs.com/bbs/dentama_tree_r_497.html
こんな感じで。
HTMLのaタグと組み合わせると
<a href="http://dentama.1616bbs.com/bbs/dentama_tree_r_497.html">>>497</a>

>>497
こんな感じで書けるけど面倒くさいですね。

> > 突然のサービス終了でデータ消滅とかあるかもしれない
> > でも投稿したデータの一括取得機能が無い
> > なので手動でコピペかツールでダウンロードしないとな〜
> りささんとこもレンタル場所変わりましたよね
> サービス終了ってあるあるなんすか?

あるあるっぽいですね、
運営の会社が大きかったら心強かったり
消えてもアナウンスが事前にあったりしそうですが、
以前レンタルしてたBBSは突然消えましたからね・・・。
まあ万が一に備えてってやつですね。

> レンタルwiki何か月かに一回は更新しようとは気をつけてますが
> 一体どこを信じれば
> 自分のPCにローカルwiki立てるとかっすか?→安心なのw

個人的には自分自身も信じられないので、
色んなとこにバックアップしつつのまさに確率の世界ですね。


>>511
> ここのサイトのこの書き込みの前の書き込みまでバクアップ取ってみました
> スクロールしてリッチテキストにコピペだけですがw

お疲れ様です!

> 本当はgithubに置きたかったんですが
> 上手くいかなかったw
> githubにコミット出来たっぽいっす
> https://github.com/y-tack/backnumber

おーいいですね github。
自分もいつか手を出してみたい。

> うちのサイトにアップしましたが
> こういうのは2か所以上がいいんですよね
> tytyさんも過去ログの管理考えてみてください

有難うございます!
これツールか何かで取り出したんでしょうか、凄いですね。
でも記事ナンバーが1からじゃないっぽい?
こっちでも何か考えて見ます。

No.515 RE:電的汎用テラス ver0.4 Date: 2015/06/11(木) 01:59
Name :tyty  nJ2XUER0vw  HOME MAIL
前のトピックのレス数が多くなったので
新しく継承スレッドを作ってみました!

タイトルは微妙感が満載なので
変更するかもしれませんがしばらく様子見で。

No.692 書いて解決 Q&A Date: 2016/07/13(水) 19:59
Name :Y_repeat  7SM67tY6bA  HOME [このトピックに書き込む]
あなたはBBSとかで、質問を投稿した時点で 問題が整理された状態になったことはありませんか?
僕(Y_repeat)はあります

という訳で
質問に回答してもらわなくても 解決しそうだなー。という質問を投稿するスレです

僕(Y_repeat)もあんまり回答出来そうにないですが
出来るならします。管理人さん(tytyさん)もしてくれると思いますよー

No.707 RE:書いて解決 Q&A Date: 2017/01/04(水) 00:00
Name :Y_repeat  Rv3tJps6PA  HOME
bignum演算
例えば100を
100 0000 0000 として格納し
下8桁を小数として扱う
あーint加算とか減算とか考えたら
100 0000 として格納し
下4桁を小数として扱う
くらいでいいのかな

掛け算 割り算 も変に加工しないで
*20とか/20とかでいいよねw

割り算は20の場合 /20 0000 にしなきゃダメか
でも 5って出るよねw
/20 だと 5 0000 って出るからまんまでいいのかw
剰余は/20 0000にしなきゃダメよね

小数の演算は
*1.2とかだと
*1 2000して/1 0000でいいよね
/1.2は
/1 2000して *1 0000でいいよね

今のとこ漏れなくダブリなくは半分くらい実現してると思いたいw

No.694 RE:書いて解決 Q&A Date: 2016/07/13(水) 20:08
Name :Y_repeat  7SM67tY6bA  HOME
結構な期間なんとなく開発してる開発環境もどき

最初はノートパッド命令の中身と
モジュールの配列のインスタンスを
違う順番で実装しようと思ってたんですが
そうなると頭の中がごちゃごちゃしてくるんですよね

なので追加/削除する度に
毎回モジュールの配列を並べ替えれば?って結論でやってるんですけど
モジュールの配列をリスト形式ではなく配列形式で管理しようという試みです

それにはどういうかんじで記述していけばいいのでしょうか。という疑問です

末尾に追加。と(モジュール配列伸ばせばいいので)
項目更新。と(配列の順序変わらないので)
ノートパッドの行削除。と
モジュールの配列クリアが
出来ている状態です

No.693 RE:書いて解決 Q&A Date: 2016/07/13(水) 20:03
Name :Y_repeat  7SM67tY6bA  HOME
ハイ。書いて解決 Q&A 第一弾レスですw

HSPのプログラムを複数FILEに分けて書いてる時
どれを実行すればいいか ちょっと考えてしまいますよね

なので全部のFILEに同じFILEを#includeすれば
毎回同じFILEを実行してくれるFILEって書けるのかな?という疑問です

#ifndefなんか使うと実行するのは最初だけってことを考えると出来そうなんだけどなー

No.555 作品投稿スレver0.2 Date: 2015/07/20(月) 15:16
Name :y.tack  7SM67tY6bA  HOME [このトピックに書き込む]
このスレは HSPコンテストに関するスレッド の後継スレッドです

まずは HSPコンテストに関するスレッド の中のTOOLに関する記述をまとめます

HSPコンテストに関するスレッド の中のTOOLに関する記述を収集してたら
HSPコンテストに関するスレッドを一通り目を通してしまいましたさw

必殺!チラウラスレ のエディタ作成に関するスレもこっちに移動します

ちなみに 相談気分でも ここにUPすることは宣言みたくなって
実行出来ないことが多いので
報告気分で「やってること」「やったこと」を書くかんじで利用するのがいいかんじです

No.698 RE:作品投稿スレver0.2 Date: 2016/08/30(火) 03:12
Name :Y_repeat  7SM67tY6bA  HOME
別exe簡単インタプリタ ver0.0.3

流してみたw

main

sdim _4note,4000
exec "hsptmp.exe",0
notesel _4note
button "A",*l_A
button "B",*l_B
button "C",*l_C
button "clear",*l_clear
stop
*l_A
_4note="push A\n"+_4note
notesave "dat_file.dat"
goto *l_do
*l_B
_4note="push B\n"+_4note
notesave "dat_file.dat"
goto *l_do
*l_C
_4note="push C\n"+_4note
notesave "dat_file.dat"
goto *l_do
*l_clear
_4note=""
notesave "dat_file.dat"
goto *l_do
*l_do
notesave "dat_file.dat"
stop


No.697 RE:作品投稿スレver0.2 Date: 2016/08/30(火) 03:08
Name :Y_repeat  7SM67tY6bA  HOME
別exe簡単インタプリタ ver0.0.2

オウム返しではなくなったかもw

main

sdim _4note,4000
exec "hsptmp.exe",0
notesel _4note
button "A",*l_A
button "B",*l_B
button "C",*l_C
stop
*l_A
_4note="push A"
notesave "dat_file.dat"
goto *l_do
*l_B
_4note="push B"
notesave "dat_file.dat"
goto *l_do
*l_C
_4note="push C"
notesave "dat_file.dat"
goto *l_do
*l_do
notesave "dat_file.dat"
stop


sub(awaitの値変えただけw)
exe自動作成とかでexeにしてください

sdim _4note,4000
notesel _4note
note_stock=_4note
#define d_file "dat_file.dat"

*begin
await 200
noteload "dat_file.dat"
if note_stock!=_4note{
cls 0
pos 0,0
mes _4note
note_stock=_4note
}
goto *begin


No.696 RE:作品投稿スレver0.2 Date: 2016/08/30(火) 03:01
Name :Y_repeat  7SM67tY6bA  HOME
別exe簡単インタプリタ

簡単インタプリタと言いつつオウム返しのみw
main

sdim _4note,4000
exec "hsptmp.exe",0
notesel _4note
repeat 3000
await 1000
cls 0
pos 0,0
mes cnt
_4note=str(cnt)
notesave "dat_file.dat"
loop


sub

sdim _4note,4000
notesel _4note
note_stock=_4note
#define d_file "dat_file.dat"

*begin
await 100
noteload "dat_file.dat"
if note_stock!=_4note{
cls 0
pos 0,0
mes _4note
note_stock=_4note
}
goto *begin


No.691 RE:作品投稿スレver0.2 Date: 2016/07/10(日) 01:53
Name :Y_repeat  7SM67tY6bA  HOME
txt保存実装
変更実装
モジュール全削除実装

モジュールがちゃんと消えてるか知りたくて
「knowbug]を導入しましたw


#module one_block_data_S data,data_title,title_no,line_no,del_flag
#modinit
data_title=""
title_no=-1
del_flag=0
data=""
return
#modfunc local set_del_flag
del_flag=-1
sdim data_title,1
sdim data,1
return
#modfunc local set_title str p_str
data_title=p_str
return
#modcfunc local get_title
return data_title
#modfunc local set_title_no int p_int
title_no=p_int
return
#modcfunc local get_title_no
return title_no
#modfunc local set_line_no int p_int
line_no=p_int
return
#modcfunc local get_line_no
return line_no
#modfunc local set_data str p_str
data=p_str
return
#modcfunc local get_data
return data
#modfunc local str_dump int p_index
logmes "no"+p_index+" title:"+data_title+" line:"+line_no+" no"+title_no + " " + del_flag+"del_flag"
logmes ""+data
return
#modcfunc local one_dump int p_index
tmp_s= "no"+p_index+" title:"+data_title+" line:"+line_no+" no"+title_no + " " + del_flag+"del_flag\n"
tmp_s+= ""+data+"\n"
return tmp_s
#modfunc local reset
data_title=""
title_no=-1
del_flag=0
data=""
return
#global
#module block_manage
#deffunc local init
sdim _4note,10000
notesel _4note
num=0
return
#defcfunc local get_size
tmp_size=0
foreach one_block_obj
tmp_size++
loop
return tmp_size
#deffunc del_mod
tmp_len=get_size@block_manage()
i=0
for i,tmp_len-1,-1,-1
delmod one_block_obj.i
next
return
#deffunc local add_block
newmod one_block_obj,one_block_data_S
num++
return num-1
#deffunc local many_dump
repeat num
str_dump@one_block_data_S one_block_obj@block_manage.cnt,cnt
loop
return
#deffunc local wnd_dump
_4wnd_dump=""
repeat num
_4wnd_dump+=one_dump@one_block_data_S(one_block_obj@block_manage.cnt,cnt)
loop
gsel 3
objprm 0,_4wnd_dump
return
#deffunc local more_correct_dump
; repeat notemax
; tmp=""
; noteget tmp,cnt
; str_dump@one_block_data one_block_obj@block_manage.int(tmp)
; loop
; return
#global



#include "module_one_block_S.hsp"
#include "hspda.as"
#include "en_token.hsp"
#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
init@block_manage
show_screen=1
screen show_screen,400,480
title "show window"
show_s4mesbox=""
font "",24
objmode
show_s4mesbox=""
mesbox show_s4mesbox,400,400,5
ID4show_mesbox=stat
dump_screen=3
screen dump_screen,400,400
title "dump window"
dump_s4mesbox=""
mesbox dump_s4mesbox,400,400,4
ID4dump_mesbox=stat
screen 0,730,580
title "main window"
cls 2
s4listbox="-1"
index4listbox=0
objsize 400,580
font "",24
objmode
listbox index4listbox,100,s4listbox
id4listbox=stat
pos 400,580-75-10-25
_4input_input=""
mesbox _4input_input,330,25,0
ID4input_input=stat
pos 400,580-75
_4mesbox_input=""
mesbox _4mesbox_input,330,75
ID4mesbox_input=stat
pos 400,0
objsize 330,25
button "del",*add_B
button "delしたのがあるか調べてあったら変更",*add_C
button "最大数+1してそこに追加",*add_D
button "SHOW_1",*l_SHOW_1
button "最後尾に追加",*l_add_last
button "logmes dump",*l_logmes_dump
button "vsave",*do_vsave
button "vload",*do_vload
var4num_mesbox=str(-1)
mesbox var4num_mesbox,330,25,1
ID4num_mesbox=stat
button "NUM SELECT",*l_num_select
button "変更",*l_txt_chg
button "txt save",*l_txt_save
sel_cmd_screen=2
button "mod del",*l_mod_del
screen sel_cmd_screen,400,480
title "command window"
cls 2
objsize 200,24
button_block "end"
sel_cmd_str="//end"
sel_cmd_tok=token_end
goto *sel_cmd
b_end
button_block "script"
sel_cmd_str="//script"
sel_cmd_tok=token_script
goto *sel_cmd
b_end
button_block "goto"
sel_cmd_str="//goto"
sel_cmd_tok=token_goto
goto *sel_cmd
b_end
button_block "stop"
sel_cmd_str="//stop"
sel_cmd_tok=token_stop
goto *sel_cmd
b_end
button_block "if"
sel_cmd_str="//if"
sel_cmd_tok=token_if
goto *sel_cmd
b_end
button_block "else"
sel_cmd_str="//else"
sel_cmd_tok=token_else
goto *sel_cmd
b_end
button_block "}"
sel_cmd_str="//R_brace"
sel_cmd_tok=token_R_brace
goto *sel_cmd
b_end
button_block "repeat"
sel_cmd_str="//repeat"
sel_cmd_tok=token_repeat
goto *sel_cmd
b_end
button_block "loop"
sel_cmd_str="//loop"
sel_cmd_tok=token_loop
goto *sel_cmd
b_end
button_block "while"
sel_cmd_str="//while"
sel_cmd_tok=token_while
goto *sel_cmd
b_end
button_block "wend"
sel_cmd_str="//wend"
sel_cmd_tok=token_wend
goto *sel_cmd
b_end
button_block "_break"
sel_cmd_str="//_break"
sel_cmd_tok=token__break
goto *sel_cmd
b_end
button_block "for"
sel_cmd_str="//for"
sel_cmd_tok=token_for
goto *sel_cmd
b_end
button_block "next"
sel_cmd_str="//next"
sel_cmd_tok=token_next
goto *sel_cmd
b_end
pos 200,0
button_block "label"
sel_cmd_str="//label"
sel_cmd_tok=token_label
goto *sel_cmd
b_end
button_block "c_mes"
sel_cmd_str="//c_mes"
sel_cmd_tok=token_c_mes
goto *sel_cmd
b_end
button_block "gosub"
sel_cmd_str="//gosub"
sel_cmd_tok=token_gosub
goto *sel_cmd
b_end
button_block "return"
sel_cmd_str="//return"
sel_cmd_tok=token_return
goto *sel_cmd
b_end
button_block "v_mes"
sel_cmd_str="//v_mes"
sel_cmd_tok=token_v_mes
goto *sel_cmd
b_end
button_block "boxf"
sel_cmd_str="//boxf"
sel_cmd_tok=token_boxf
goto *sel_cmd
b_end
button_block "set"
sel_cmd_str="//set"
sel_cmd_tok=token_set
goto *sel_cmd
b_end
button_block "await"
sel_cmd_str="//await"
sel_cmd_tok=token_await
goto *sel_cmd
b_end
button_block "button"
sel_cmd_str="//button"
sel_cmd_tok=token_button
goto *sel_cmd
b_end
button_block "chkbox"
sel_cmd_str="//chkbox"
sel_cmd_tok=token_chkbox
goto *sel_cmd
b_end
button_block "objsize"
sel_cmd_str="//objsize"
sel_cmd_tok=token_objsize
goto *sel_cmd
b_end
button_block "combox"
sel_cmd_str="//combox"
sel_cmd_tok=token_combox
goto *sel_cmd
b_end
button_block "input"
sel_cmd_str="//input"
sel_cmd_tok=token_input
goto *sel_cmd
b_end
button_block "listbox"
sel_cmd_str="//listbox"
sel_cmd_tok=token_listbox
goto *sel_cmd
b_end
button_block "clrobj"
sel_cmd_str="//clrobj"
sel_cmd_tok=token_clrobj
goto *sel_cmd
b_end
//////////////////////////////////////////////////////////
dialog "AUTOセーブをロードしますか?",2
if stat==6{
gosub *do_from_AUTO_vload
gsel 0
objprm id4listbox,s4listbox
}
gsel 0
goto *LB_loop
*l_num_select
gsel 0
tmp=index4listbox
if tmp\2==1:index4listbox--
objprm ID4num_mesbox,str(index4listbox)
var4num_mesbox=str(index4listbox)
objprm id4listbox,_4note@block_manage
goto *LB_loop
*sel_cmd
gsel 0
s=""+sel_cmd_str+"//"+sel_cmd_tok
objprm ID4input_input,s
stop
*do_vsave
vsave "dat"
stop
*do_vload
vload "dat"
gsel 0
objprm id4listbox,_4note@block_manage
goto *LB_loop
*do_AUTO_vsave
vsave "auto.dat"
return
*do_from_AUTO_vload
vload "auto.dat"
return
*LB_loop
pre_index=index4listbox
*LB_tmp
await 50
if index4listbox==-1:goto *LB_tmp
if pre_index!=index4listbox:goto *l_SHOW_X
goto *LB_loop
*l_SHOW_1
gosub *do_AUTO_vsave
if s4listbox!=-1{
s4show="NO."+index4listbox
}
goto *LB_loop
*l_SHOW_X
gosub *do_AUTO_vsave
if s4listbox!=-1{
}
goto *LB_loop
*l_txt_chg
tmp_num=int(var4num_mesbox)
if tmp_num==-1:goto *LB_loop
gsel 0
tmp4note=""+_4input_input
tmp_num2=tmp_num+1
noteadd "//"+tmp_num2+tmp4note,tmp_num,1

tmp4note_b=_4mesbox_input
strrep tmp4note_b,"\n",""
noteadd ""+tmp4note_b,tmp_num+1,1

tmp_num_b=tmp_num/2
set_title@one_block_data_S one_block_obj@block_manage.tmp_num_b,tmp4note
set_title_no@one_block_data_S one_block_obj@block_manage.tmp_num_b,tmp_num_b
set_line_no@one_block_data_S one_block_obj@block_manage.tmp_num_b,tmp_num
set_data@one_block_data_S one_block_obj@block_manage.tmp_num_b,tmp4note_b

s4listbox=_4note@block_manage
objprm id4listbox,_4note@block_manage
goto *LB_loop
*l_add_last
gosub *do_AUTO_vsave
// 追加A
gsel 0
add_block@block_manage
index=stat
tmp4notemax=notemax+1
tmp4note=_4input_input
noteadd "//"+tmp4notemax+tmp4note,-1,0

tmp4note_b=_4mesbox_input
strrep tmp4note_b,"\n",""
noteadd ""+tmp4note_b,-1,0

set_title@one_block_data_S one_block_obj@block_manage.index,tmp4note
set_title_no@one_block_data_S one_block_obj@block_manage.index,index
set_line_no@one_block_data_S one_block_obj@block_manage.index,tmp4notemax
set_data@one_block_data_S one_block_obj@block_manage.index,tmp4note_b

s4listbox=_4note@block_manage
objprm id4listbox,_4note@block_manage
goto *LB_loop
*l_mod_del
del_mod
stop
*l_txt_save
notesave "dat.txt"
dialog "open?",2
if stat==6:exec "notepad dat.txt"
goto *LB_loop
*l_logmes_dump
gosub *do_AUTO_vsave
many_dump@block_manage
wnd_dump@block_manage
dialog ""+get_size@block_manage(),0
goto *LB_loop
*add_A
gosub *do_AUTO_vsave
// 追加A
gsel 0
goto *LB_loop
*add_B
gosub *do_AUTO_vsave
// 追加
gsel 0
goto *LB_loop
*add_C
gosub *do_AUTO_vsave
// 追加
gsel 0
goto *LB_loop
*add_D
gosub *do_AUTO_vsave
// 追加
gsel 0
goto *LB_loop


No.690 RE:作品投稿スレver0.2 Date: 2016/07/09(土) 23:38
Name :Y_repeat  7SM67tY6bA  HOME
少々更新
dump時配列の最大数を探してdialogで表示
listboxの選択中ID表示

#module one_block_data_S data,data_title,title_no,line_no,del_flag
#modinit
data_title=""
title_no=-1
del_flag=0
data=""
return
#modfunc local set_del_flag
del_flag=-1
sdim data_title,1
sdim data,1
return
#modfunc local set_title str p_str
data_title=p_str
return
#modcfunc local get_title
return data_title
#modfunc local set_title_no int p_int
title_no=p_int
return
#modcfunc local get_title_no
return title_no
#modfunc local set_line_no int p_int
line_no=p_int
return
#modcfunc local get_line_no
return line_no
#modfunc local set_data str p_str
data=p_str
return
#modcfunc local get_data
return data
#modfunc local str_dump int p_index
logmes "no"+p_index+" title:"+data_title+" line:"+line_no+" no"+title_no + " " + del_flag+"del_flag"
logmes ""+data
return
#modcfunc local one_dump int p_index
tmp_s= "no"+p_index+" title:"+data_title+" line:"+line_no+" no"+title_no + " " + del_flag+"del_flag\n"
tmp_s+= ""+data+"\n"
return tmp_s
#modfunc local reset
data_title=""
title_no=-1
del_flag=0
data=""
return
#global
#module block_manage
#deffunc local init
sdim _4note,10000
notesel _4note
num=0
return
#defcfunc local get_size
tmp_size=0
foreach one_block_obj
tmp_size++
loop
return tmp_size
#deffunc local add_block
newmod one_block_obj,one_block_data_S
num++
return num-1
#deffunc local many_dump
repeat num
str_dump@one_block_data_S one_block_obj@block_manage.cnt,cnt
loop
return
#deffunc local wnd_dump
_4wnd_dump=""
repeat num
_4wnd_dump+=one_dump@one_block_data_S(one_block_obj@block_manage.cnt,cnt)
loop
gsel 3
objprm 0,_4wnd_dump
return
#deffunc local more_correct_dump
; repeat notemax
; tmp=""
; noteget tmp,cnt
; str_dump@one_block_data one_block_obj@block_manage.int(tmp)
; loop
; return
#global



#include "module_one_block_S.hsp"
#include "hspda.as"
#include "en_token.hsp"
#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
init@block_manage
show_screen=1
screen show_screen,400,480
title "show window"
show_s4mesbox=""
font "",24
objmode
show_s4mesbox=""
mesbox show_s4mesbox,400,400,5
ID4show_mesbox=stat
dump_screen=3
screen dump_screen,400,400
title "dump window"
dump_s4mesbox=""
mesbox dump_s4mesbox,400,400,4
ID4dump_mesbox=stat
screen 0,730,580
title "main window"
cls 2
s4listbox="-1"
index4listbox=0
objsize 400,580
font "",24
objmode
listbox index4listbox,100,s4listbox
id4listbox=stat
pos 400,580-75-10-25
_4input_input=""
mesbox _4input_input,330,25,0
ID4input_input=stat
pos 400,580-75
_4mesbox_input=""
mesbox _4mesbox_input,330,75
ID4mesbox_input=stat
pos 400,0
objsize 330,25
button "変更",*add_A
button "del",*add_B
button "delしたのがあるか調べてあったら変更",*add_C
button "最大数+1してそこに追加",*add_D
button "SHOW_1",*l_SHOW_1
button "最後尾に追加",*l_add_last
button "logmes dump",*l_logmes_dump
button "vsave",*do_vsave
button "vload",*do_vload
var4num_input=-1
input var4num_input,330,25
ID4num_input=stat
button "NUM SELECT",*l_num_select
sel_cmd_screen=2
screen sel_cmd_screen,400,480
title "command window"
cls 2
objsize 200,24
button_block "end"
sel_cmd_str="//end"
sel_cmd_tok=token_end
goto *sel_cmd
b_end
button_block "script"
sel_cmd_str="//script"
sel_cmd_tok=token_script
goto *sel_cmd
b_end
button_block "goto"
sel_cmd_str="//goto"
sel_cmd_tok=token_goto
goto *sel_cmd
b_end
button_block "stop"
sel_cmd_str="//stop"
sel_cmd_tok=token_stop
goto *sel_cmd
b_end
button_block "if"
sel_cmd_str="//if"
sel_cmd_tok=token_if
goto *sel_cmd
b_end
button_block "else"
sel_cmd_str="//else"
sel_cmd_tok=token_else
goto *sel_cmd
b_end
button_block "}"
sel_cmd_str="//R_brace"
sel_cmd_tok=token_R_brace
goto *sel_cmd
b_end
button_block "repeat"
sel_cmd_str="//repeat"
sel_cmd_tok=token_repeat
goto *sel_cmd
b_end
button_block "loop"
sel_cmd_str="//loop"
sel_cmd_tok=token_loop
goto *sel_cmd
b_end
button_block "while"
sel_cmd_str="//while"
sel_cmd_tok=token_while
goto *sel_cmd
b_end
button_block "wend"
sel_cmd_str="//wend"
sel_cmd_tok=token_wend
goto *sel_cmd
b_end
button_block "_break"
sel_cmd_str="//_break"
sel_cmd_tok=token__break
goto *sel_cmd
b_end
button_block "for"
sel_cmd_str="//for"
sel_cmd_tok=token_for
goto *sel_cmd
b_end
button_block "next"
sel_cmd_str="//next"
sel_cmd_tok=token_next
goto *sel_cmd
b_end
pos 200,0
button_block "label"
sel_cmd_str="//label"
sel_cmd_tok=token_label
goto *sel_cmd
b_end
button_block "c_mes"
sel_cmd_str="//c_mes"
sel_cmd_tok=token_c_mes
goto *sel_cmd
b_end
button_block "gosub"
sel_cmd_str="//gosub"
sel_cmd_tok=token_gosub
goto *sel_cmd
b_end
button_block "return"
sel_cmd_str="//return"
sel_cmd_tok=token_return
goto *sel_cmd
b_end
button_block "v_mes"
sel_cmd_str="//v_mes"
sel_cmd_tok=token_v_mes
goto *sel_cmd
b_end
button_block "boxf"
sel_cmd_str="//boxf"
sel_cmd_tok=token_boxf
goto *sel_cmd
b_end
button_block "set"
sel_cmd_str="//set"
sel_cmd_tok=token_set
goto *sel_cmd
b_end
button_block "await"
sel_cmd_str="//await"
sel_cmd_tok=token_await
goto *sel_cmd
b_end
button_block "button"
sel_cmd_str="//button"
sel_cmd_tok=token_button
goto *sel_cmd
b_end
button_block "chkbox"
sel_cmd_str="//chkbox"
sel_cmd_tok=token_chkbox
goto *sel_cmd
b_end
button_block "objsize"
sel_cmd_str="//objsize"
sel_cmd_tok=token_objsize
goto *sel_cmd
b_end
button_block "combox"
sel_cmd_str="//combox"
sel_cmd_tok=token_combox
goto *sel_cmd
b_end
button_block "input"
sel_cmd_str="//input"
sel_cmd_tok=token_input
goto *sel_cmd
b_end
button_block "listbox"
sel_cmd_str="//listbox"
sel_cmd_tok=token_listbox
goto *sel_cmd
b_end
button_block "clrobj"
sel_cmd_str="//clrobj"
sel_cmd_tok=token_clrobj
goto *sel_cmd
b_end
//////////////////////////////////////////////////////////
dialog "AUTOセーブをロードしますか?",2
if stat==6{
gosub *do_from_AUTO_vload
gsel 0
objprm id4listbox,s4listbox
}
gsel 0
goto *LB_loop
*l_num_select
gsel 0
tmp=index4listbox
if tmp\2==1:index4listbox--
objprm ID4num_input,index4listbox
goto *LB_loop
*sel_cmd
gsel 0
s=""+sel_cmd_str+"//"+sel_cmd_tok
objprm ID4input_input,s
stop
*do_vsave
vsave "dat"
stop
*do_vload
vload "dat"
stop
*do_AUTO_vsave
vsave "auto.dat"
return
*do_from_AUTO_vload
vload "auto.dat"
return
*LB_loop
pre_index=index4listbox
*LB_tmp
await 50
if index4listbox==-1:goto *LB_tmp
if pre_index!=index4listbox:goto *l_SHOW_X
goto *LB_loop
*l_SHOW_1
gosub *do_AUTO_vsave
if s4listbox!=-1{
s4show="NO."+index4listbox
}
goto *LB_loop
*l_SHOW_X
gosub *do_AUTO_vsave
if s4listbox!=-1{
}
goto *LB_loop
*l_add_last
gosub *do_AUTO_vsave
// 追加A
gsel 0
add_block@block_manage
index=stat
tmp4notemax=notemax+1
tmp4note=_4input_input
noteadd "//"+tmp4notemax+tmp4note,-1,0

tmp4note_b=_4mesbox_input
strrep tmp4note_b,"\n",""
noteadd ""+tmp4note_b,-1,0

set_title@one_block_data_S one_block_obj@block_manage.index,tmp4note
set_title_no@one_block_data_S one_block_obj@block_manage.index,index
set_line_no@one_block_data_S one_block_obj@block_manage.index,tmp4notemax
set_data@one_block_data_S one_block_obj@block_manage.index,tmp4note_b

s4listbox=_4note@block_manage
objprm id4listbox,_4note@block_manage
stop
goto *LB_loop
*l_logmes_dump
gosub *do_AUTO_vsave
many_dump@block_manage
wnd_dump@block_manage
dialog ""+get_size@block_manage(),0
goto *LB_loop
*add_A
gosub *do_AUTO_vsave
// 追加A
gsel 0
goto *LB_loop
*add_B
gosub *do_AUTO_vsave
// 追加
gsel 0
goto *LB_loop
*add_C
gosub *do_AUTO_vsave
// 追加
gsel 0
goto *LB_loop
*add_D
gosub *do_AUTO_vsave
// 追加
gsel 0
goto *LB_loop


No.689 RE:作品投稿スレver0.2 Date: 2016/06/27(月) 04:51
Name :Y_repeat  7SM67tY6bA  HOME
dump処理実装中
データ登録処理実装中

#module one_block_data_S data,data_title,title_no,line_no,del_flag
#modinit
data_title=""
title_no=-1
del_flag=0
data=""
return
#modfunc local set_del_flag
del_flag=-1
sdim data_title,1
sdim data,1
return
#modfunc local set_title str p_str
data_title=p_str
return
#modcfunc local get_title
return data_title
#modfunc local set_title_no int p_int
title_no=p_int
return
#modcfunc local get_title_no
return title_no
#modfunc local set_line_no int p_int
line_no=p_int
return
#modcfunc local get_line_no
return line_no
#modfunc local set_data str p_str
data=p_str
return
#modcfunc local get_data
return data
#modfunc local str_dump int p_index
logmes "no"+p_index+" title:"+data_title+" line:"+line_no+" no"+title_no + " " + del_flag+"del_flag"
logmes ""+data
return
#modcfunc local one_dump int p_index
tmp_s= "no"+p_index+" title:"+data_title+" line:"+line_no+" no"+title_no + " " + del_flag+"del_flag\n"
tmp_s+= ""+data+"\n"
return tmp_s
#modfunc local reset
data_title=""
title_no=-1
del_flag=0
data=""
return
#global
#module block_manage
#deffunc local init
sdim _4note,10000
notesel _4note
num=0
return
#deffunc local add_block
newmod one_block_obj,one_block_data_S
num++
return num-1
#deffunc local many_dump
repeat num
str_dump@one_block_data_S one_block_obj@block_manage.cnt,cnt
loop
return
#deffunc local wnd_dump
_4wnd_dump=""
repeat num
_4wnd_dump+=one_dump@one_block_data_S(one_block_obj@block_manage.cnt,cnt)
loop
gsel 3
objprm 0,_4wnd_dump
return
#deffunc local more_correct_dump
; repeat notemax
; tmp=""
; noteget tmp,cnt
; str_dump@one_block_data one_block_obj@block_manage.int(tmp)
; loop
; return
#global



#include "module_one_block_S.hsp"
#include "hspda.as"
#include "en_token.hsp"
#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

init@block_manage
show_screen=1
screen show_screen,400,480
title "show window"
show_s4mesbox=""
font "",24
objmode
show_s4mesbox=""
mesbox show_s4mesbox,400,400,5
ID4show_mesbox=stat
dump_screen=3
screen dump_screen,400,400
title "dump window"
dump_s4mesbox=""
mesbox dump_s4mesbox,400,400,4
ID4dump_mesbox=stat
screen 0,730,580
title "main window"
cls 2
s4listbox="-1"
index4listbox=0
objsize 400,580
font "",24
objmode
listbox index4listbox,100,s4listbox
id4listbox=stat
pos 400,580-75-10-25
_4input_input=""
mesbox _4input_input,330,25,0
ID4input_input=stat
pos 400,580-75
_4mesbox_input=""
mesbox _4mesbox_input,330,75
ID4mesbox_input=stat
pos 400,0
objsize 330,25
button "変更",*add_A
button "del",*add_B
button "delしたのがあるか調べてあったら変更",*add_C
button "最大数+1してそこに追加",*add_D
button "SHOW_1",*l_SHOW_1
button "最後尾に追加",*l_add_last
button "logmes dump",*l_logmes_dump
button "vsave",*do_vsave
button "vload",*do_vload
sel_cmd_screen=2
screen sel_cmd_screen,400,480
title "command window"
cls 2
objsize 200,24
button_block "end"
sel_cmd_str="//end"
sel_cmd_tok=token_end
goto *sel_cmd
b_end
button_block "script"
sel_cmd_str="//script"
sel_cmd_tok=token_script
goto *sel_cmd
b_end
button_block "goto"
sel_cmd_str="//goto"
sel_cmd_tok=token_goto
goto *sel_cmd
b_end
button_block "stop"
sel_cmd_str="//stop"
sel_cmd_tok=token_stop
goto *sel_cmd
b_end
button_block "if"
sel_cmd_str="//if"
sel_cmd_tok=token_if
goto *sel_cmd
b_end
button_block "else"
sel_cmd_str="//else"
sel_cmd_tok=token_else
goto *sel_cmd
b_end
button_block "}"
sel_cmd_str="//R_brace"
sel_cmd_tok=token_R_brace
goto *sel_cmd
b_end
button_block "repeat"
sel_cmd_str="//repeat"
sel_cmd_tok=token_repeat
goto *sel_cmd
b_end
button_block "loop"
sel_cmd_str="//loop"
sel_cmd_tok=token_loop
goto *sel_cmd
b_end
button_block "while"
sel_cmd_str="//while"
sel_cmd_tok=token_while
goto *sel_cmd
b_end
button_block "wend"
sel_cmd_str="//wend"
sel_cmd_tok=token_wend
goto *sel_cmd
b_end
button_block "_break"
sel_cmd_str="//_break"
sel_cmd_tok=token__break
goto *sel_cmd
b_end
button_block "for"
sel_cmd_str="//for"
sel_cmd_tok=token_for
goto *sel_cmd
b_end
button_block "next"
sel_cmd_str="//next"
sel_cmd_tok=token_next
goto *sel_cmd
b_end
pos 200,0
button_block "label"
sel_cmd_str="//label"
sel_cmd_tok=token_label
goto *sel_cmd
b_end
button_block "c_mes"
sel_cmd_str="//c_mes"
sel_cmd_tok=token_c_mes
goto *sel_cmd
b_end
button_block "gosub"
sel_cmd_str="//gosub"
sel_cmd_tok=token_gosub
goto *sel_cmd
b_end
button_block "return"
sel_cmd_str="//return"
sel_cmd_tok=token_return
goto *sel_cmd
b_end
button_block "v_mes"
sel_cmd_str="//v_mes"
sel_cmd_tok=token_v_mes
goto *sel_cmd
b_end
button_block "boxf"
sel_cmd_str="//boxf"
sel_cmd_tok=token_boxf
goto *sel_cmd
b_end
button_block "set"
sel_cmd_str="//set"
sel_cmd_tok=token_set
goto *sel_cmd
b_end
button_block "await"
sel_cmd_str="//await"
sel_cmd_tok=token_await
goto *sel_cmd
b_end
button_block "button"
sel_cmd_str="//button"
sel_cmd_tok=token_button
goto *sel_cmd
b_end
button_block "chkbox"
sel_cmd_str="//chkbox"
sel_cmd_tok=token_chkbox
goto *sel_cmd
b_end
button_block "objsize"
sel_cmd_str="//objsize"
sel_cmd_tok=token_objsize
goto *sel_cmd
b_end
button_block "combox"
sel_cmd_str="//combox"
sel_cmd_tok=token_combox
goto *sel_cmd
b_end
button_block "input"
sel_cmd_str="//input"
sel_cmd_tok=token_input
goto *sel_cmd
b_end
button_block "listbox"
sel_cmd_str="//listbox"
sel_cmd_tok=token_listbox
goto *sel_cmd
b_end
button_block "clrobj"
sel_cmd_str="//clrobj"
sel_cmd_tok=token_clrobj
goto *sel_cmd
b_end
gsel 0
goto *LB_loop
*sel_cmd
gsel 0
s=""+sel_cmd_str+"//"+sel_cmd_tok
objprm ID4input_input,s
stop
*do_vsave
vsave "dat"
stop
*do_vload
vload "dat"
stop
*LB_loop
pre_index=index4listbox
*LB_tmp
await 50
if index4listbox==-1:goto *LB_tmp
if pre_index!=index4listbox:goto *l_SHOW_X
goto *LB_loop
*l_SHOW_1
if s4listbox!=-1{
s4show="NO."+index4listbox
}
goto *LB_loop
*l_SHOW_X
if s4listbox!=-1{
}
goto *LB_loop
*l_add_last
// 追加A
gsel 0
add_block@block_manage
index=stat
tmp4notemax=notemax+1
tmp4note=_4input_input
noteadd "//"+tmp4notemax+tmp4note,-1,0

tmp4note_b=_4mesbox_input
strrep tmp4note_b,"\n",""
noteadd ""+tmp4note_b,-1,0

set_title@one_block_data_S one_block_obj@block_manage.index,tmp4note
set_title_no@one_block_data_S one_block_obj@block_manage.index,index
set_line_no@one_block_data_S one_block_obj@block_manage.index,tmp4notemax
set_data@one_block_data_S one_block_obj@block_manage.index,tmp4note_b

s4listbox=_4note@block_manage
objprm id4listbox,_4note@block_manage
stop
goto *LB_loop
*l_logmes_dump
many_dump@block_manage
wnd_dump@block_manage
goto *LB_loop
*add_A
// 追加A
gsel 0
goto *LB_loop
*add_B
// 追加
gsel 0
goto *LB_loop
*add_C
// 追加
gsel 0
goto *LB_loop
*add_D
// 追加
gsel 0
goto *LB_loop


No.688 RE:作品投稿スレver0.2 Date: 2016/06/27(月) 02:41
Name :Y_repeat  7SM67tY6bA  HOME
最後尾に追加 ボタン実装中

#include "module_one_block_S.hsp"
#include "hspda.as"
#include "en_token.hsp"
#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

init@block_manage
show_screen=1
screen show_screen,400,480
show_s4mesbox=""
font "",24
objmode
mesbox show_s4mesbox,400,400,5
ID4show_mesbox=stat
screen 0,730,580
cls 2
s4listbox="-1"
index4listbox=0
objsize 400,580
font "",24
objmode
listbox index4listbox,100,s4listbox
id4listbox=stat
pos 400,580-75-10-25
_4input_input=""
mesbox _4input_input,330,25,0
ID4input_input=stat
pos 400,580-75
_4mesbox_input=""
mesbox _4mesbox_input,330,75
ID4mesbox_input=stat
pos 400,0
objsize 330,25
button "変更",*add_A
button "del",*add_B
button "delしたのがあるか調べてあったら変更",*add_C
button "最大数+1してそこに追加",*add_D
button "SHOW_1",*l_SHOW_1
button "最後尾に追加",*l_add_last
button "vsave",*do_vsave
button "vload",*do_vload
sel_cmd_screen=2
screen sel_cmd_screen,400,480
cls 2
objsize 200,24
button_block "end"
sel_cmd_str="//end"
sel_cmd_tok=token_end
goto *sel_cmd
b_end
button_block "script"
sel_cmd_str="//script"
sel_cmd_tok=token_script
goto *sel_cmd
b_end
button_block "goto"
sel_cmd_str="//goto"
sel_cmd_tok=token_goto
goto *sel_cmd
b_end
button_block "stop"
sel_cmd_str="//stop"
sel_cmd_tok=token_stop
goto *sel_cmd
b_end
button_block "if"
sel_cmd_str="//if"
sel_cmd_tok=token_if
goto *sel_cmd
b_end
button_block "else"
sel_cmd_str="//else"
sel_cmd_tok=token_else
goto *sel_cmd
b_end
button_block "}"
sel_cmd_str="//R_brace"
sel_cmd_tok=token_R_brace
goto *sel_cmd
b_end
button_block "repeat"
sel_cmd_str="//repeat"
sel_cmd_tok=token_repeat
goto *sel_cmd
b_end
button_block "loop"
sel_cmd_str="//loop"
sel_cmd_tok=token_loop
goto *sel_cmd
b_end
button_block "while"
sel_cmd_str="//while"
sel_cmd_tok=token_while
goto *sel_cmd
b_end
button_block "wend"
sel_cmd_str="//wend"
sel_cmd_tok=token_wend
goto *sel_cmd
b_end
button_block "_break"
sel_cmd_str="//_break"
sel_cmd_tok=token__break
goto *sel_cmd
b_end
button_block "for"
sel_cmd_str="//for"
sel_cmd_tok=token_for
goto *sel_cmd
b_end
button_block "next"
sel_cmd_str="//next"
sel_cmd_tok=token_next
goto *sel_cmd
b_end
pos 200,0
button_block "label"
sel_cmd_str="//label"
sel_cmd_tok=token_label
goto *sel_cmd
b_end
button_block "c_mes"
sel_cmd_str="//c_mes"
sel_cmd_tok=token_c_mes
goto *sel_cmd
b_end
button_block "gosub"
sel_cmd_str="//gosub"
sel_cmd_tok=token_gosub
goto *sel_cmd
b_end
button_block "return"
sel_cmd_str="//return"
sel_cmd_tok=token_return
goto *sel_cmd
b_end
button_block "v_mes"
sel_cmd_str="//v_mes"
sel_cmd_tok=token_v_mes
goto *sel_cmd
b_end
button_block "boxf"
sel_cmd_str="//boxf"
sel_cmd_tok=token_boxf
goto *sel_cmd
b_end
button_block "set"
sel_cmd_str="//set"
sel_cmd_tok=token_set
goto *sel_cmd
b_end
button_block "await"
sel_cmd_str="//await"
sel_cmd_tok=token_await
goto *sel_cmd
b_end
button_block "button"
sel_cmd_str="//button"
sel_cmd_tok=token_button
goto *sel_cmd
b_end
button_block "chkbox"
sel_cmd_str="//chkbox"
sel_cmd_tok=token_chkbox
goto *sel_cmd
b_end
button_block "objsize"
sel_cmd_str="//objsize"
sel_cmd_tok=token_objsize
goto *sel_cmd
b_end
button_block "combox"
sel_cmd_str="//combox"
sel_cmd_tok=token_combox
goto *sel_cmd
b_end
button_block "input"
sel_cmd_str="//input"
sel_cmd_tok=token_input
goto *sel_cmd
b_end
button_block "listbox"
sel_cmd_str="//listbox"
sel_cmd_tok=token_listbox
goto *sel_cmd
b_end
button_block "clrobj"
sel_cmd_str="//clrobj"
sel_cmd_tok=token_clrobj
goto *sel_cmd
b_end
gsel 0
goto *LB_loop
*sel_cmd
gsel 0
s=""+sel_cmd_str+"//"+sel_cmd_tok
objprm ID4input_input,s
stop
*do_vsave
vsave "dat"
stop
*do_vload
vload "dat"
stop
*LB_loop
pre_index=index4listbox
*LB_tmp
await 50
if index4listbox==-1:goto *LB_tmp
if pre_index!=index4listbox:goto *l_SHOW_X
goto *LB_loop
*l_SHOW_1
if s4listbox!=-1{
s4show="NO."+index4listbox
}
goto *LB_loop
*l_SHOW_X
if s4listbox!=-1{
}
goto *LB_loop
*l_add_last
// 追加A
gsel 0
add_block@block_manage
index=stat
tmp4notemax=notemax+1
tmp4note=_4input_input
noteadd "//"+tmp4notemax+tmp4note,-1,0

tmp4note=_4mesbox_input
strrep tmp4note,"\n",""
noteadd ""+tmp4note,-1,