色々な関数を作ってみた

投稿者:Material 7186 1 mini ikosami 投稿日:2012/12/29 16:35

ID作成関数
def ID(k)
 a = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm!#$%&1234567890"
 a = splitString(a, "") 
 ID = "";i = 0 
 while i < k
  ID = ID + a[rand(getArrayLength(a))]
  i = i + 1
 end
return ID
end

解説
1行目 関数の設定。
2行目 IDに使うローマ字記号数字を設定する
3行目 2行目の変数aを、配列に分解する
4行目 変数IDの元を作っておく;繰り返しをするために変数iを作っておく
5行目 ループ毎に増えていく変数i(現状のID行数)が、変数k(予定のID行数)より小さければループを続ける
6行目 変数IDに2,3行目で作ったローマ字などの中からランダムで追加する
7行目 6行目で1文字追加したので現状のID行数を+1する
8行目 ループの終わり
9行目 関数を使った時にIDの変数が読み込めるようにする
10行目 関数終了

2つの数字の間からランダムに選ぶ関数
def interval(a,b)
 if a > b then c = a;a = b;b = c;end
 i = b-a;a=a+rand(i+1)
return a
end

1行目 関数の設定
2行目 aがbより大きければ、入れ替える
3行目 iにaとbの差を設定する;小さい数a+差の数以下のランダムの数字(rand関数では-1されるので+1)
4行目 関数を使った時にaの変数が読み込めるようにする
5行目 関数終了
(たとえば9,5なら、まず5,9に入れ替え、i=9-5 i=4、5+{4以下のランダムの数字(0,1,2,3,4)} 結果5,6,7,8,9)


数字に±α
def pom(a,b)
 a=a-b+rand(b*2+1)
return a
end

1行目 関数の設定
2行目 aからbを引いてbの2倍以下の数を足す
3行目 関数を使った時にaの変数が読み込めるようにする
4行目 関数終了
(たとえば、10,3なら、10-3=7 7+(2*3)以下のランダムの数字(0,1,2,3,4,5,6) 結果7,8,9,10,11,12,13)



サンプル

8~10桁でIDを発行
r = interval(8,10)#8~10
ID = ID(r)#r桁のIDを発行
speak(ID)#表示


敵のステータスを微妙にランダムに①(こちらのほうが細かい設定が可能)
HP = interval(80,85)
AT = interval(32,37)


敵のステータスを微妙にランダムに②(こちらのほうが処理は早い)
HP = pom(80,5)#80±5
AT = pom(30,2)#30±2


一定範囲内に敵を出現させる
x = interval(300,600)
y = interval(200,400)





お試し
loop = true
while loop
r = interval(8,10)#8~10
ID = ID(r)#r桁のIDを発行
speak(ID)#表示
end


コメントする

コメントするには、ログインする必要があります。

コメント一覧

User icon mini 退会したユーザー(投稿日:2012/12/29 18:51, 履歴)
すげぇぇ...
もうなにがなんだかわからない...
Material 7186 1 mini ikosami(投稿日:2012/12/29 21:00, 履歴)
解説もつけてみますね。
User icon mini 退会したユーザー(投稿日:2012/12/30 08:29, 履歴)
おおお、さらにすげぇぇ
ありがとうございます^^
000 3  mini meika(投稿日:2012/12/29 19:04, 履歴)
今作成中のRPGに取り入れてみようφ(・。・ )メモメモ

interval関数の2行目「when」→「then」では?
Material 7186 1 mini ikosami(投稿日:2012/12/29 21:00, 履歴)
あっ!
報告ありがとうございます!
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2012/12/29 18:12, 履歴)
これはすごい

特にinterval関数はRPGにとっても便利
Material 7186 1 mini ikosami(投稿日:2012/12/29 20:59, 履歴)
ぜひご活用くださいo(^ ^)o
Material 86479 3 mini qhqh123(投稿日:2012/12/29 18:00, 履歴)
なるほど、わからない
Material 7186 1 mini ikosami(投稿日:2012/12/29 20:59, 履歴)
使えさえすれば問題ないかと(^^;)
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/12/29 17:10, 履歴)
wikiにしても良いぐらい
使い勝手が良さそうな関数ですね
Material 7186 1 mini ikosami(投稿日:2012/12/29 20:58, 履歴)
ありがとうございます(^^)

Wikiにも書いときました。