文字の組み合わせ

高校一年くらいで習うのかな
数字の組み合わせだったような
いやいや
whitespaceの字句解析のデバッグ用に書きました
配列のサイズがあんま自由じゃないんで
追記:そういえばHSPは配列の大きさは大きくなりますなw
ノート命令に書き込んでから配列に代入してます

sdim _4note,10000
 notesel _4note
 s="s"
 t="t"
 n="n"
 tmp1=s
 gosub *sub_d
 tmp1=t
 gosub *sub_d
 tmp1=n
 gosub *sub_d
 notesave "stn5.txt"
 sdim ar_stn5,8,notemax
 repeat notemax
 tmp_get=""
 noteget tmp_get,cnt
 ar_stn5.cnt=tmp_get
 loop
 stop
 *sub
 tmps=tmp1+tmp2+tmp3+tmp4+s
 tmpt=tmp1+tmp2+tmp3+tmp4+t
 tmpn=tmp1+tmp2+tmp3+tmp4+n
 noteadd tmps,-1,0
 noteadd tmpt,-1,0
 noteadd tmpn,-1,0
 return
 *sub_b
 tmp4=s
 gosub *sub
 tmp4=t
 gosub *sub
 tmp4=n
 gosub *sub
 return
 *sub_c
 tmp3=s
 gosub *sub_b
 tmp3=t
 gosub *sub_b
 tmp3=n
 gosub *sub_b
 return
 *sub_d
 tmp2=s
 gosub *sub_c
 tmp2=t
 gosub *sub_c
 tmp2=n
 gosub *sub_c
 return

これは初稿でサブルーチンを利用して繰り返してます
逆にコレ書いた後なんで
繰り返しでも書けました

Ruby 簡単システム

ここらへんは
僕の黒歴史とも言える
こっそり載ってるとも言える
プロジェクトすぅぃった。という企画の
サンプルプログラムをRubyに移植するという企画です
プロジェクトすぅぃった。という企画は
GUI操作なんですが
CUIで似たようなことをするのを目指してます

# encoding: UTF-8
# 以下はサンプルプログラム
# Ruby動作2.6で確認
# ボタンが押された時にこれらの変数をselected_btnextに代入して
# メインルーチンにジャンプする
 $btnext_1 = ""
 $btnext_2 = ""
# ボタンにって選択される選択肢のID
 $selected_btnext = "a"
# これがtrueになると終了する
 $exit = false
 require 'io/console'
# ここからメインルーチン
 def bt_selected_gomain
   tmp_ch = "?"
   while 1
     if $exit == true then break end
     case $selected_btnext
     when "a" then
       $btnext_1 = "aa"
       $btnext_2 = "ab"
       print("zキーかxキーを押してください\n")
       print("終了:qキー")
       while 1
         tmp_ch = get_getc()
         if tmp_ch == "z"
           $selected_btnext = $btnext_1
           break
         elsif tmp_ch == "x"
           $selected_btnext = $btnext_2
           break
         elsif tmp_ch=="q"
           $exit = true
           print("QUIT")
           tmp_ch = get_getc()
           break
         end
       end # end of while B
     when "aa" then
       $btnext_1 = "a"
       print("あなたはzキーを押しましたね\n")
       print("NEXT:zキー")
       while 1
         tmp_ch = get_getc()
         if tmp_ch == "z"
           $selected_btnext = $btnext_1
           break
         end
       end # end of while C
     when "ab" then
       $btnext_1 = "a"
       print("あなたはxキーを押しましたね\n")
       print("NEXT:zキー")
       while 1
         tmp_ch = get_getc()
         if tmp_ch == "z"
           $selected_btnext = $btnext_1
           break
         end
       end # end of while D
     end # end of case
   end # end of while A
 end # end of method
 def get_getc
   $stdin.raw do |io|
     ch = io.getc
     print ch
     print "\n\n"
     return ch
   end
 end
 bt_selected_gomain

Ruby memo R020311

RubyはPATH通せば、FILEのダブルクリックで実行

PATH通すのにはインストール時に選択する

2.5インストールしたらそういう項目なかった

2.6インストールしたらあった

MSYSはTK入ってるぽいので、TKでGUIプログラムを
作成したかったらインストールした方がいい

2.5だとRuby25のbinのexeのショートカットを作成して
そこにD&Dするのがいいかも

SJISプログラミングをしたいなら
FILEの先頭に

# coding: Shift_JIS

グローバル変数は先頭に$
$hoge
配列もハッシュもグローバルに出来るぽい
RPGツク-ルはスクリプト書き場の変数は
使いたいのグローバルにしないと
イベントとかでRuby書いても参照できない

定数は基本、大文字と_
先頭だけ大文字でも大丈夫とか
モジュールの中に書いてもグローバルっぽい
module::constみたいに呼び出すっぽい
定数の整理にいいね

true/false/nilがある

ライブラリっぽいのを
(自分で作成したのも)呼び出す
require “library”
includeはモジュール読み込み

メソッド定義
def hoge(p)
引数がないなら()いらない
def hoge

endに色々と用途があって逆にわかんなくなる
(慣れてないのもある)
LISPっぽいのはこういうとこかも
end # end of def
とか
end # end of while
とか書くのもあり

僕がIOでゲーム作りたい時
while 1 が妙に役にたつ

require ‘io/console’
して
$stdin.raw do |io|
ch = io.getc
print ch
print “\n\n”
end
で、一文字入力
CUIでゲーム作りたいなら便利っぽい

なんか言語のエラー吐きがRubyはHSPより厳しい気がする

なんか言語のエラー吐きがRubyはHSPより厳しい気がする
その辺がなかなか僕が移行出来ない原因かも

エラーにならなくて、すぐ落ちて、謎なバグがあったんですけど
よく見たらprntfのダブルクォートを閉じてなかったっていうね

whenみたいとこで、なかなか動かなくて悪戦苦闘したんですけど
途中のwhenはendで閉じなくて良くて
最後のwhenはendで閉じなきゃダメっていうね

なぜかRubyはやってると時間が過ぎちゃいますね
これがRubyの楽しさの効果なんかな

WhiteSpace/my_WhiteSpace用命令(HSP)

WhiteSpaceをHSPに翻訳するにあたり、いらない文字を削除する命令と、数値表現(1と2と3)文字表現(sとtとn)デフォルト表現(スペースとタブと改行(0A))を置き換えて(sとtとn)の表現に統一する用の命令を書きました

#module
//いらない文字を削除する命令(返り値あり)
#defcfunc trim_ws var p_src,int p4trim_a,int p4trim_b,int p4trim_c
	//半角英数字っぽく繰り返し。2byte文字非対応
	repeat 256
		//指定した文字は削除しない
		if cnt==p4trim_a||cnt==p4trim_b||cnt==p4trim_c{
			continue
		}
		//cntの文字削除
		p_src=strtrim(p_src,3,cnt)
	loop
	return p_src
#global
#if 1
//適当な文字列
_123="123456789  \nabc\t12456"
//'1''2''3'以外削除
_123=trim_ws(_123,'1','2','3')
//結果表示
mes ""+_123
//適当な文字列
stn="1234st56n789  \nasbc\t12t456n"
//'s''t''n'以外削除
stn=trim_ws(stn,'s','t','n')
//結果表示
mes ""+stn
//適当な文字列
ws_char="1234  56\t789  \nabc\t12456"
//' ''\t'0A(改行もどき)以外削除
ws_char=trim_ws(ws_char,' ','\t',$0A)
//結果表示
mes ""+ws_char
#endif
#module
//"1"を"s"に、"2"を"t"に、"3"を"n"に置き換える
//マイwhite_spaseの文字は"s""t""n"が本命
#deffunc ws_char_rep_123tostn var p4rep
	strrep p4rep,"1","s"
	strrep p4rep,"2","t"
	strrep p4rep,"3","n"
	return
//" "を"s"に、"\t"を"t"に、0A(改行もどき)を"n"に置き換える
#deffunc ws_char_rep_wschar_tostn var p4rep
	strrep p4rep," ","s"
	strrep p4rep,"\t","t"
	sdim tmp_0A,4
	poke tmp_0A,0,$0A
	strrep p4rep,tmp_0A,"n"
	return
#global
#if 1
//  さっき使った文字列"1""2""3"とか、を"s""t""n"に置き換える
	ws_char_rep_123tostn _123
// 結果表示
	mes _123
	ws_char_b=ws_char
//  さっき使った文字列" ""n"0A(改行もどき)とか、を"s""t""n"に置き換える
	ws_char_rep_wschar_tostn ws_char_b
// 結果表示
	mes ws_char_b
#endif

GO!GO!GO!

ミヒマルさんが「ユルメのレイデ」だと思うんですけど
3、2、1、GO!って言ってたイメージです
大泉さんがたまに言うようなw
GO!GO!7188さんも結構好きっすw
結局、競馬の詞になっちゃいましたけどw

1、2、3、4、GO!GO!GO!
1、2、3、4、GO!GO!GO!
馬さん。馬さん。GO!GO!GO!
馬さん。馬さん。GO!GO!GO!
ハイヨー。ハイヨー。GO!GO!GO!
ハイヨー。ハイヨー。GO!GO!GO!
一着目指せよ。GO!GO!GO!
一着目指せよ。GO!GO!GO!
単勝。単勝。GO!GO!GO!
単勝。単勝。GO!GO!GO!
ウハウハウハウハ。GO!GO!GO!
ウハウハウハウハ。GO!GO!GO!
せめて3着。GO!GO!GO!
せめて3着。GO!GO!GO!
複勝。複勝。GO!GO!GO!
複勝。複勝。GO!GO!GO!
ウハウハウハウハ。GO!GO!GO!
ウハウハウハウハ。GO!GO!GO!

「あたし」

なんかYOUTUBEでELT聞いたら出来ましたw
気分は持田香織さんw
最近の子はあたしって言わないんすかね
あと宇多田ヒカルさんの「あなた」
ってタイトルをもじってる疑惑
それではどうぞ

あなたがあたしを向いていることは
あたしにはわかっていて
あなたがあたしを向いていることは
あたしにはわかっていて
だけどあたしは
あなたの方を向かないの
だって悔しいじゃない?
あなたはあたしに言い寄ってくるけど
あなたはあたしに言い寄ってくるけど
あたしはそれには応じないの
だって、あたし、安い女じゃないの
あたしがあなたに合わせるんじゃないの
あたしがあなたに合わせるんじゃないの
あなたがあたしに合わせるのよ
あなたがあたしに合わせるのよ
あたしがあなたを受けいれるんじゃないの
あたしがあなたを受けいれるんじゃないの
あなたがあたしを受けいれなさい
あなたがあたしを受けいれなさい
あたしがあなたに惚れたんじゃないの
あたしがあなたに惚れたんじゃないの
あなたがあたしに惚れたのよ
あなたがあたしに惚れたのよ
そう。つまりは、あなたの負けね
そう。つまりは、あなたの負けね
あきらめなさい。いさぎよく
あきらめなさい。いさぎよく

死ぬ気でやる

カリスマブロガー。マナブ様のYOUTUBEで、
いやいや他の方のマナブ様の一日を追った動画で、
マナブ様に、ブログを書く秘訣は?と問われ、
一言、死ぬ気で書く。とおっしゃいました

フリーランスで気楽に書いてるはずなのに
結局、死ぬ気でやるんかいwみたいなw
そういえば誰かも、死ぬ気でやればなんとかなる。
って言ってたような。

自分はどうだろうね。文章は楽しいから書いてるので、
最近、スランプ気味ですけども
でも、結局、死ぬ気でやんないと成功しないってのは、
頭のどっかに入れとかなきゃいけないんでしょうね。

ちなみに一か月連続でブログを更新したら結果が出る。
みたいに書いてて、真に受けて一か月くらい
毎日更新しましたが、訪問者全然来なかったっていうねw
マナブ様も別の場所で何年もやってやっと収益になったとか
おっしゃってるし

強くてニューゲーム(ひょっとしてブレークスルーしたかも)

一昨日、久しぶりにwhitespaceという簡易言語を写経してたら
えたーなってたまんまのHSPへの移植が進みました
ひょっとして俺、ブレークスルーしたかもって調子こいてます
今回こそは上手くいくかもwww

なんか写経も一日100行くらいなのに
まあ昨日も100行くらいなんですがw
一昨日は300行くらいやったしw

なんか最近、カリスマブロガーマナブ様のYOUTUBEにはまってて
それ見てたら、なんだか、人生、上手くいくような気がしてきて
そっから派生したブレークスルー疑惑でしたw

whitespaceのHSPへの移植も、これこそ強くてニューゲームっすよw

強くてニューゲーム(VIMとかFFAとか)

自分の写経用のエディタはVIMなんですが

理由は分割時、別々のファイルを開けるし
移動が自由自在なとこです
画面を半画面づつ動かせるのと
一行づつ動かせるのが好きです
(カーソル行じゃないですよ)

そして、最近、チュートリアルをやってみたら
前よりしっくり来ました
コレがたぶんあれです
カリスマブロガー。マナブ様の言う
強くてニューゲームです

チュートリアルの学習は期間を開けて三回目くらいなんですが
そのたび、強くてニューゲームになってきますねw

そこのあなたも
以前、挑戦してみた事に挑戦してみてはどうですか?
強くてニューゲームになるかもしれませんよ

そして、今日、HSPのプロコンの放送を見てて
ずっと見るのも飽きるんでFFAをやってて
なんとはなしに、ソースコードをDLして覗いてみたんですよ
ほぼメインCGIに記述してて2000行くらいw
あんな有名ゲームが2000行くらいですって
という訳でFFAの写経がTODOに追加されました
これも強くてニューゲームっすなwww

昔はPerlとか全然読めなかったんですけど
今、読んだら昔より理解出来る気がする
強くてニューゲームw

HSP kaijou

hiroi様のとこのサイトの階乗の処理をHSPで書いてみました

http://www.nct9.ne.jp/m_hiroi/light/ruby01.html

#const INT_MAX 256*256*256*128-1

mes INT_MAX
mes INT_MAX+1

mes INT_MAX / (128*256)
mes "kaijou"
repeat 15,1
mes ""+cnt+":"+ kaijou(cnt)
loop
stop

// p4mul_A(例えば10000)*p4mul_B(例えば10000)が
// over flowしないかcheck
#defcfunc over_INT_MAX int p4mul_A,int p4mul_B
	if p4mul_B==0:return 1
	if p4mul_A<(INT_MAX / p4mul_B){
		return 1
	}else{
		return -1
	}

#defcfunc kaijou int p
	m = 1
	max=p+1
	for i,1,max,1
		if over_INT_MAX(m,i)==-1:return -1
		m*=i
	next
	return m