|
|
2013/12/20(Fri) 20:06:28|NO.58816
現在、名前作成ソフトを作ろうと考えています。
姓
「山田」「田中」「佐藤」
名
「一男」「二男」「三男」
でランダムに名前を作成(例:山田三男 田中一男)して、ダイアログで表示するにはどうすればいいでしょうか?
|
|
2013/12/20(Fri) 20:45:02|NO.58817
配列を使えば簡単に出来ます
randomize
sdim myoji,64,5//苗字を5人分確保
sdim mei,64,5//名を5人分確保
myoji(0) = "鹿目","暁美","巴","美樹","佐倉" //配列変数に、0から順番に""で囲った文字を代入
mei(0) = "まどか","ほむら","マミ","さやか","杏子"
pos 50,50
objsize 150,30
button gosub "名前をランダム作成!",*namae
stop
*namae
dialog strf("%s %s",myoji(rnd(5)),mei(rnd(5)))//strfはF1で調べて下さい myoji(rnd(5))は配列の0〜4をランダムに取り出す
return
わからないことがあったら聞いて下さい
|
|
2013/12/21(Sat) 18:58:36|NO.58829
strfを使わなくてもできますよね?
randomize
sdim myoji,64,5//苗字を5人分確保
sdim mei,64,5//名を5人分確保
myoji(0) = "山田","唐澤","田中","吉田"
mei(0) = "太郎","博史","高志","貴洋"
pos 50,50
objsize 150,30
button gosub "名前をランダム作成!",*namae
stop
*namae
dialog myoji(rnd(4)) + "" + mei(rnd(4))
return
|
|
2013/12/21(Sat) 22:08:28|NO.58831
はい別にstrfを使う必要はありません(´・ω・`)
|
|
2013/12/25(Wed) 07:39:21|NO.58872
ありがとうございます。10人にするときは
sdim myoji,64,10//苗字を10人分確保
sdim mei,64,10//名を10人分確保
でいいのですか?
|
|
2013/12/25(Wed) 11:18:15|NO.58873
配列の自動拡張機能とlengthを使えば、候補数に応じた処理に出来ます。
randomize
; 配列は自動で確保されるので下の書き方でもOK
myoji = "山田","唐澤","田中","吉田","鈴木","伊藤"
mei = "太郎","博史","高志","貴洋"
pos 80,50
objsize 150,30
button gosub "名前をランダム作成!",*namae
pos 0,0
; lengthで配列の要素数を取得できます
mes "苗字候補数= " + length(myoji)
mes "名前候補数= " + length(mei)
mes
stop
*namae
mes myoji(rnd(length(myoji))) + " " + mei(rnd(length(mei)))
return
|
|
2013/12/25(Wed) 18:06:48|NO.58875
ありがとうございます。
もう1つ聞きたいことがあるのですが、ふりがなってどうすればいいですか?
ありさんのスクリプトでお願いします。
例えば
あさひ たろう
朝日 太郎
みたいな感じでお願いします。
|
|
2013/12/25(Wed) 21:38:16|NO.58876
とりあえず質問通りの仕様で作ってみましたが
あくまで考え方のヒント程度の構成なので
これをそのまま他のプログラムに使おうとはしないように。
また、これをこういう風に改造して下さいと言われても
(少なくとも私は)対応しませんので。
後は自分で基礎を学習し、処理を理解して組み立てていって下さい。
buffer 1 ; 文字位置取得用バッファ
randomize
; 配列は自動で確保されるので下の書き方でもOK
myoji = "山田","唐澤","田中","鈴木","伊藤","東海林","八月朔日"
myoji_ruby = "やまだ","からさわ","たなか","すずき","いとう","しょうじ","ほづみ"
mei = "太郎","博史","高志","貴洋"
mei_ruby = "たろう","ひろし","たかし","たかひろ"
gsel 0, 1
pos 200,50
objsize 150,30
button gosub "名前をランダム作成!",*namae
pos 0,0
; lengthで配列の要素数を取得できます
mes "名字候補数= " + length(myoji)
mes "名前候補数= " + length(mei)
mes
title "" + ginfo_cx + " " + ginfo_cy
stop
*namae
; 名字(ルビ含む)を決定
myoji_no = rnd(length(myoji))
myoji_now = myoji(myoji_no)
myoji_ruby_now = myoji_ruby(myoji_no)
; 名前(ルビ含む)を決定
mei_no = rnd(length(mei))
mei_now = mei(mei_no)
mei_ruby_now = mei_ruby(mei_no)
; バッファに名字とそのルビを書いて文字の横幅を取得
gsel 1
mes myoji_now
myoji_x = ginfo_mesx
pos 0 : mes myoji_ruby_now
ruby_x = ginfo_mesx
; 横幅の広い方を基準に表示位置を決める
if myoji_x < ruby_x {
myoji_offset = ruby_x - myoji_x
ruby_offset = 0
} else {
myoji_offset = 0
ruby_offset = myoji_x - ruby_x
}
gsel 0
pos ruby_offset : mes myoji_ruby_now + " " + mei_ruby_now
pos myoji_offset : mes myoji_now + " " + mei_now
return
| |
|
2013/12/26(Thu) 17:01:00|NO.58883
みなさん、ありがとうございました。無事、作成できました。
|
|