練習問題。サイコロみたいなrnd

練習問題。サイコロみたいなrnd

乱数でサイコロみたいな処理のメソッドを
記述しなさいみたいな問題でした

# encoding: UTF-8
 def dice
   r = Random.rand(6)
   r+=1
   return r
 end
 print ("rnd sample\n")
 ch=gets
 for i in 1 .. 8
   tmp_r = dice
   print ("#{i}:#{tmp_r}\n")
 end
 ch=gets

サイコロを10回振って合計を計算しなさいみたいな問題でした

# encoding: UTF-8
 def dice10
   sum=0
   for i in 1 .. 10
     r = Random.rand(6)
     r+=1
     sum+=r
     print ("#{i}:#{r}\n")
   end
   return sum
 end
 print ("rnd sample\n")
 ch=gets
 tmp_sum = dice10
 print ("sum:#{tmp_sum}\n")
 ch=gets

たのしいRubyの練習問題

せっかく解いたからUPしよーかなとw

# encoding: UTF-8
# 摂氏→華氏
 print("Please input 摂氏(int)\n")
 input=gets
 input=input.chomp!
 my=input.to_f
 you=(my*9)/5+32
 print ("result(華氏): #{you}")
 ch=gets
# encoding: UTF-8
#  華氏→摂氏
 print("Please input 華氏(int)\n")
 input=gets
 input=input.chomp!
 my=input.to_f
 you=((my-32)*5)/9
 print ("result(摂氏): #{you}")
 ch=gets

数字の組み合わせ

repeat版の組み合わせの方が変更楽っぽいっすね
数字の組み合わせも書いてみました

sdim _4note,10000
 notesel _4note
 sdim youso,5,8
 youso.0="1"
 youso.1="2"
 youso.2="3"
 youso.3="4"
 youso.4="5"
 repeat 5
   tmp1=youso.cnt
   repeat 5
     tmp2=youso.cnt
     repeat 5
       tmp3=youso.cnt
       repeat 5
         tmp4=youso.cnt
         repeat 5
           tmp5=youso.cnt
           tmp=""+tmp1+tmp2+tmp3+tmp4+tmp5
           noteadd tmp,-1,0
         loop
       loop
     loop
   loop
 loop
 notesave "stn5_c.txt"
 sdim ar_stn5,8,notemax
 repeat notemax
 tmp_get=""
 noteget tmp_get,cnt
 ar_stn5.cnt=tmp_get
 loop

文字の組み合わせ(repeat版)

sdim _4note,10000
 notesel _4note
 sdim youso,5,5
 youso.0="s"
 youso.1="t"
 youso.2="n"
 repeat 3
   tmp1=youso.cnt
   repeat 3
     tmp2=youso.cnt
     repeat 3
       tmp3=youso.cnt
       repeat 3
         tmp4=youso.cnt
         repeat 3
           tmp5=youso.cnt
           tmp=""+tmp1+tmp2+tmp3+tmp4+tmp5
           noteadd tmp,-1,0
         loop
       loop
     loop
   loop
 loop
 notesave "stn5_b.txt"
 sdim ar_stn5,8,notemax
 repeat notemax
 tmp_get=""
 noteget tmp_get,cnt
 ar_stn5.cnt=tmp_get
 loop

文字の組み合わせ

高校一年くらいで習うのかな
数字の組み合わせだったような
いやいや
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
最近の子はあたしって言わないんすかね
あと宇多田ヒカルさんの「あなた」
ってタイトルをもじってる疑惑
それではどうぞ

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