#------------------------------------------------ # サーバ用辞書 #------------------------------------------------ #------------------------------------------------ # 設定するパラメータとか @Janken.Version Janken/4.0 @Janken.待機時間 2 #------------------------------------------------ # メイン *Janken.Start (call,Janken.Raiseother,__SYSTEM_ALL_GHOST__,OnRequestParameters)φ (call,Janken.Raiseother,(FMO0name),OnRequestParameters) *OnJanken >Janken_(R0)_(R2) *Janken_Version=Janken/4.0_Event=OnGetParameters 1<=(R3)&&(R3)<=3 $Janken.list(zen2han,(R3)) ((if,(変数「Janken.list(zen2han,(R3))」の存在),Janken.list(zen2han,(R3)),nop、))(バイト値,1)(Sender) $Janken.(if,(変数「Janken.あいこフラグ」の存在),あいこで,最初はグー)タイマ=((if,(count,(Janken.list1)(Janken.list2)(Janken.list3),(バイト値,1))>=2,Janken.待機時間,nop、)) (call,Janken.存在追加,(R3)) *Janken.最初はグー $Janken.じゃんけんタイマ=(Janken.待機時間) (call,Janken.Raiseother,__SYSTEM_ALL_GHOST__,OnTurn,セリフ_最初はグー)φ (call,Janken.Raiseother,(FMO0name),OnTurn,セリフ_最初はグー) *Janken.じゃんけん $Janken.ポンタイマ=(Janken.待機時間) (call,Janken.Raiseother,__SYSTEM_ALL_GHOST__,OnTurn,セリフ_じゃんけん)φ (call,Janken.Raiseother,(FMO0name),OnTurn,セリフ_じゃんけん) *Janken.ポン $Janken.じゃんけん結果通知タイマ=(Janken.待機時間) (call,Janken.Raiseother,__SYSTEM_ALL_GHOST__,OnTurn,セリフ_ポン)φ (call,Janken.Raiseother,(FMO0name),OnTurn,セリフ_ポン) *Janken.じゃんけん結果通知 >Janken.あいこ (Janken.勝敗判定)==0 (call,Janken.勝敗通知関数,1)φ (call,Janken.勝敗通知関数,2)φ (call,Janken.勝敗通知関数,3)φ (call,Janken.勝敗自己通知)φ (call,Janken.初期化) *Janken.あいこ $Janken.あいこフラグ=1 >Janken.選択肢 *Janken.あいこで $Janken.あいこフラグ $Janken.しょタイマ=(Janken.待機時間) (call,Janken.Raiseother,__SYSTEM_ALL_GHOST__,OnTurn,セリフ_あいこで)φ (call,Janken.Raiseother,(FMO0name),OnTurn,セリフ_あいこで) *Janken.しょ $Janken.じゃんけん結果通知タイマ=(Janken.待機時間) (call,Janken.Raiseother,__SYSTEM_ALL_GHOST__,OnTurn,セリフ_しょ)φ (call,Janken.Raiseother,(FMO0name),OnTurn,セリフ_しょ) #------------------------------------------------ # じゃんけん用raiseother送信関数 @Janken.Raiseother \![raiseother,(A0),OnJanken,Version=(Janken.Version),From=(FMO0name),Event=(A1),(A2)] #------------------------------------------------ # じゃんけん用勝敗結果通知関数 #A0:1/グー,2/チョキ,3/パー,を出した相手に勝敗結果を通知 @Janken.勝敗通知関数 ((if、(変数「Janken.list(A0)」の存在)、 loop,Janken.勝敗通知ループ,0,(calc,(split,(erase,(Janken.list(A0)),(バイト値,1)(FMO0name)),(バイト値,1))-1)、nop, )) @Janken.勝敗通知ループ (call,Janken.Raiseother,(S(Janken.勝敗通知ループカウンタ)),OnTurn,(if,(Janken.勝敗判定)==(A0),セリフ_勝った時,セリフ_負けた時)) @Janken.勝敗自己通知 (call,Janken.Raiseother,(FMO0name),OnTurn, ( iflist ,0< ,(count,(Janken.list1)(バイト値,1),(バイト値,1)(FMO0name)(バイト値,1)) ,(if,(Janken.勝敗判定)==1,セリフ_勝った時,セリフ_負けた時) ,(count,(Janken.list2)(バイト値,1),(バイト値,1)(FMO0name)(バイト値,1)) ,(if,(Janken.勝敗判定)==2,セリフ_勝った時,セリフ_負けた時) ,(count,(Janken.list3)(バイト値,1),(バイト値,1)(FMO0name)(バイト値,1)) ,(if,(Janken.勝敗判定)==3,セリフ_勝った時,セリフ_負けた時) ,エラー ) ) #------------------------------------------------ # 変数の初期化 @Janken.初期化 (set,Janken.list1,)φ (set,Janken.list2,)φ (set,Janken.list3,)φ (set,Janken.グーの存在,)φ (set,Janken.チョキの存在,)φ (set,Janken.パーの存在,) #------------------------------------------------ # 場に出された手を追加 @Janken.存在追加 ( ( iflist ,(A0)== ,1 ,set、Janken.グーの存在、1 ,2 ,set、Janken.チョキの存在、1 ,3 ,set、Janken.パーの存在、1 ,nop、 ) ) #------------------------------------------------ # 返り値 → 1:グーの勝ち 2:チョキの勝ち 3:パーの勝ち 0:あいこ @Janken.勝敗判定 ( iflist ,(変数「Janken.グーの存在」の存在)(変数「Janken.チョキの存在」の存在)(変数「Janken.パーの存在」の存在)== ,110 ,1 ,011 ,2 ,101 ,3 ,0 )