約 36,801 件
https://w.atwiki.jp/fsharpmaster/pages/14.html
Add/Subtract/Multiply/Divide展開編 これらの関数は四つありますが、見て分かるように中の演算子が違うだけで内容的にはほぼ同じものです。なので、代表としてAddを展開し、その結果を見て他の三つも展開することにしましょう。 関数展開の基本は、内側から、前からの順番に行います。ただ、どの順でやってもできないということはなく、途中の分かりやすさが若干違うだけのことも多いので、あまり展開順にこだわらず、どこからやっても展開できるような基礎体力をつけておくことも重要です。 というわけで、まな板の上にAdd関数の定義を載せます。VisualStudioを使っている人は、StateBuilderやGetState、SetState、StatefulFunc、Runなどの定義と一緒にソース上に貼り付け、コンパイルエラーが出ない状態にしてください。。 let Add x = state { let! currentTotal, history = GetState do! SetState (currentTotal + x, (sprintf "%dを加算" x) history) } 1.まず、GetStateとSetStateが関数であるためその定義と置き換える。 二つの関数の定義は以下のとおり。 let GetState = StatefulFunc (fun state - state, state) let SetState newState = StatefulFunc(fun prevState - () , newState) GetStateは引数がないためそのまま置き換えるだけ。 SetStateは、引数に与えられている「(currentTotal + x, (sprintf "%dを加算" x) history)」を、関数定義の右辺のnewStateと置き換えます。 置き換えたのが以下のような状態です。 let Add x = state { let! currentTotal, history = StatefulFunc(fun state - state, state) do! StatefulFunc (fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)) } これで、Addしか使わないならもうGetStateやSetStateの定義は不要になりますが、置き換えたAddは、これまでと同じように動くはずです。Alt+Enterで試して、これまでと実行結果が変わってないことを確認してください。 今後このような置き換えによる式の展開、変形を延々と繰り返していくことになりますが、一つ作業をしてコンパイラがエラーを出さなくなったら、その都度Alt+Enterで動作が変わってないことを確認してください。 2.return()の補完 プログラミングF#のどこにも書いていないのですが、計算式がdoのような値を返さない式で終わった場合は、コンパイラによってreturn ()が補完されてから解釈されます。僕はこれに気づくまで数日苦しみましたが、分かってしまえば当たり前のことといえます。 let Add x = state { let! currentTotal, history = StatefulFunc(fun state - state, state) do! StatefulFunc (fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)) return () } 3.returnの置き換え(ワークフロー展開1) いよいよワークフローの糖衣構文を解いていきます。 この作業は、途中コンパイルが通らず、うまくできているのか分からない状態になりますが、大気圏に突入するつもりで頑張ってください。 最初は簡単なreturnの展開から始めます。 困ったことにプログラミングF#には載ってないのですが、コンパイラがワークフローの糖衣構文を展開する際の置き換えルールがあります。幸い「実践F#関数型プログラミング入門」には載っているので、ここから引用します。 return exp ⇒ b.Return(exp) expはreturnの引数に与えられた何らかの式です。ここでは()になります。 bはワークフロービルダのオブジェクトで、ここではstateがそれにあたります。 これだけあれば最初の展開は可能です。 let Add x = state { let! currentTotal, history = StatefulFunc(fun state - state, state) do! StatefulFunc (fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)) state.Return () } ここからしばらくは前半最初のヤマ場となります。VisualStudio上で作業をしている場合はコンパイルエラーを表す赤い波線が出たままになっていると思いますが、次のステップが終わるまで我慢して下さい。 4.do!の置き換え(ワークフロー展開2) return同様、do!の糖衣構文の展開ルールも「実践F#関数型プログラミング入門」から引用します。 do! expr in expr2 ⇒ b.Bind(expr, fun() - expr2) なにやら怪しげなルールですが、これ(とlet!の展開ルール)こそがワークフローを形成している最も重要な変換ルールですので毎日暗唱するぐらいのつもりでいてください。ちなみに上のdo!についているinはソース上では省略されています。 まず、二行目のdo!から展開します。なぜ2行目から展開するのかと言いますと、展開すると2行目のdo!のほうが「内側」になるからです。やってみれば分かります。 上記の変換ルールでexprにあたるのは、do!の右にある式全部です。expr2にあたるのは次の行以降、stateの閉じ括弧までの式全部になります。この、「閉じ括弧までの式全部」を、「残りの計算」と言う意味で「継続」と呼びます。末尾再帰で出てきた「継続」と内部的には同じものですが捉え方はかなり違うので注意してください。 2行目のdo!から見ると継続は3行目だけになりますが、1行目のlet!から見ると2行目と3行目の両方を結合した処理が継続となります。 それでは、2行目のdo!を展開してみましょう。 let Add x = state { let! currentTotal, history = StatefulFunc(fun state - state, state) state.Bind( StatefulFunc(fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)), (fun () - state.Return ()) ) } do! → state.Bind( do!の右にあった式 → state.Bindの最初の引数 do!の次行以降の式 → state.Bindのに番目の引数 になっていることを確認してください。 この変換は、F#のコンパイラが行っていることで、定義したり変更したりすることはできません。 5.let!の置き換え(ワークフロー展開3) さらに最初のlet!を置き換えます。let!の展開ルールは以下のようなものです。 let! pat = expr in expr2 ⇒ b.Bind(expr, fun pat - expr2) ちなみに上のlet!についているinもソース上では省略されています。 これをよく見ながら、半ば機械的にソースを書き換えていきます。 let Add x = state { state.Bind( StatefulFunc(fun state - state, state), (fun (currentTotal, history) - state.Bind( StatefulFunc(fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)), (fun () - state.Return ()) ) ) ) } patとなっているcurrentTotal, historyと、二つ目の引数の前後に括弧を補いました。 最後に、不要となった一番外側のstate{}を削除すると、コンパイルが通るようになっているはずです。 let Add x = state.Bind( StatefulFunc(fun state - state, state), (fun (currentTotal, history) - state.Bind( StatefulFunc (fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)), (fun () - state.Return ()) ) ) ) ここで一旦Alt+Enterで実行してみて、プログラムの動きが変わっていないことを確認してください。 元のプログラムの面影はほとんど無くなってしまいましたが、これは元の式と同じ式なのです。 6.Returnを定義に置換する(ワークフロー定義展開1) まだまだ続きます。 これからの作業は、state.Returnやstate.Bindの記述を、StatefulFuncのmemberとして定義された関数と置き換えていく作業です。 Returnメンバ関数は以下のように定義されています。 member this.Return(x a) = StatefulFunc(fun initialState - x, initialState) 式の中でReturnには()が引数になっていますので、この定義のxを()に置き換えて、中ほどのstate.Returnを以下のようにします。 let Add x = state.Bind( StatefulFunc(fun state - state, state), (fun (currentTotal, history) - state.Bind( StatefulFunc(fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history)), (fun () - StatefulFunc(fun initialState - (), initialState)) ) ) ) 7.内側のBindを定義に置換する(ワークフロー定義展開2) 続いてBindの展開です。 Bindは以下のように定義されています。ちょっと悪夢のようですが、これに慣れないとしょうがありません。 member this.Bind( result StatefulFunc state, a , restOfComputation a - StatefulFunc state, b ) = StatefulFunc(fun initialState - let result, updatedState = Run result initialState Run (restOfComputation result) updatedState ) 引数は二つ。resultとrestOfComputationですが、今Bindに与えられている二つの式を、= 以降の式のresult、restOfComputationと置き換えてしまうのです。 ただし注意があります。Bindの定義にある let result, updatedState = Run result initialState の、=の左にあるresultは、引数にわたってきたresultとは型も値も全くの別物で、Runの実行結果に同じ名前を付けているだけです。次の行のresultもそうです。置き換えるのは、この行の=の右にあるresultだけですので間違えないで下さい。このあたりこのサンプルは初学者に配慮が足りないなぁと思ってしまいます。 ぼやいていても仕方がないので、元々do!だった内側のBindからやってみましょう。 let Add x = state.Bind( StatefulFunc (fun state - state, state), (fun (currentTotal, history) - StatefulFunc(fun initialState - let result, updatedState = Run (StatefulFunc(fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history))) initialState Run ((fun () - StatefulFunc(fun initialState - (), initialState)) result) updatedState ) ) ) BindのあったところがStatefulFuncになり、二つの引数がresultとrestOfComputationと置き換わっているのが分かるでしょうか。 resultの置き換えには括弧を補っています。 8.外側のBindを定義に置換する(ワークフロー定義展開3) ちょっと大変なことになってきた感じがしなくもないですが、機械の体を手に入れたつもりで外側のBindも展開します。 restOfComputationにあたるものが、5行にわたる式であることに気をつけてください。 let Add x = StatefulFunc(fun initialState - let result, updatedState = Run (StatefulFunc(fun state - state, state)) initialState Run ( (fun (currentTotal, history) - StatefulFunc(fun initialState - let result, updatedState = Run (StatefulFunc(fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history))) initialState Run ((fun () - StatefulFunc(fun initialState - (), initialState)) result) updatedState ) ) result) updatedState ) これで、ワークフローの展開ができました。すでにStateBuilderクラスもそのオブジェクトstateもこの式からは無くなっているので、この時点でこれらのクラスがなくてもコンパイルが通るようになっているはずです。 このように、ワークフローの展開は以下のような2段階の構成になっています。 do!やlet!、returnを、state.Bindやstate.Returnを使った式に置き換える。(糖衣構文の展開) state.Bindやstate.Returnを、StateBuilderの定義に従って置き換える。 この作業を経ることで、ワークフローがどのような式を作成するかを知ることができます。 知ることができます、と言われても、上でできている式はかなりのものです。パッと見て意図が分かればたいしたものですが、僕は分からないので、これからは上の式を簡約していきます。ここから式は小さくなっていく一方ですのでご安心を。 9.RunでStatefulFuncの皮をむく まず、内側のStatefulFuncの1行目にあるRunを簡約してみます。Runの定義は以下のようなものです。 let Run (StatefulFunc f) initialState = f initialState これを見ると、関数fという中身をもつStatefulFuncとinitialStateの二つを引数にとり、initialStateに関数fを適用した結果を返す機能を持っていることがわかります。つまり、 Run (StatefulFunc(fun a - a * a) c という式があったら、StatefulFuncから関数(fun a - a * a)を取り出し、その引数aにcを代入して「c*c」としていいということです。 Run (StatefulFunc(fun a - a * a) c = c * c この二つの式は等価なのです。 これを念頭に置くと、、 Run (StatefulFunc (fun prevState - () , (currentTotal + x, (sprintf "%dを加算" x) history))) initialState は、 () , (currentTotal + x, (sprintf "%dを加算" x) history) と同じであることがわかります。 ちょっと引っかかるのが、Runの二番目の引数になっているinitialStateが消滅してしまっていることです。 これは、StatefulFuncの中にある関数の仮引数prevStateが関数の中で使われていないためなのですが、どこか釈然としませんね。 こういうちょっとバカにされているような気分になることが、StatefulFuncの簡約にはたびたび出てきます。あまり気にしないようにしましょう。 と言うわけで、式全体は以下のようになります。 let Add x = StatefulFunc(fun initialState - let result, updatedState = Run (StatefulFunc(fun state - state, state)) initialState Run ( (fun (currentTotal, history) - StatefulFunc(fun initialState - let result, updatedState = () , (currentTotal + x, (sprintf "%dを加算" x) history) Run ((fun () - StatefulFunc(fun initialState - (), initialState)) result) updatedState ) ) result) updatedState ) 式の真ん中へんで右に尖がっていたところが落ち着きましたね。 ところで、その行を改めてみていると、let束縛の左右にタプルが来ていて、以下のように束縛されていることが分かります。 let result = () let updatedState = (currentTotal + x, (sprintf "%dを加算" x) history) これを、次の式のresult、updateStateと置き換えてしまうと、この行は不要になります。 let Add x = StatefulFunc(fun initialState - let result, updatedState = Run (StatefulFunc(fun state - state, state)) initialState Run ( (fun (currentTotal, history) - StatefulFunc(fun initialState - Run ((fun () - StatefulFunc(fun initialState - (), initialState)) ()) (currentTotal + x, (sprintf "%dを加算" x) history) ) ) result) updatedState ) 1行減りましたね。 10.fun () に()を与える。 今しがた変形して1行にまとめた行を見ると、Runの最初の引数になっている式が、以下のような形をしていることに気がつきます。 (fun () - StatefulFunc(fun initialState - (), initialState)) () これは、unitを引数にとる関数にunitを与えているわけですから、直ちに関数から取り出すことができます。 StatefulFunc(fun initialState - (), initialState) このように、unitを引数にとる関数にunitを渡す行為は一見無駄なように思えますが、関数型言語の世界では「遅延評価」というものを形作る重要な考え方になります。頭の隅に置いといてください。 さて、行全体としては Run (StatefulFunc(fun initialState - (), initialState)) (currentTotal + x, (sprintf "%dを加算" x) history) のようになりました。 この式は、先ほどのRunの展開と同じように変形できますので、 (), (currentTotal + x, (sprintf "%dを加算" x) history) と簡約できます。 ずいぶん短くなってしまったので、前後の括弧を取り込んで行をまとめて見ると、全体として以下のようになります。 let Add x = StatefulFunc(fun initialState - let result, updatedState = Run (StatefulFunc(fun state - state, state)) initialState Run ( (fun (currentTotal, history) - StatefulFunc(fun initialState - (), (currentTotal + x, (sprintf "%dを加算" x) history)) ) result) updatedState ) 11.initialStateの正体 少し目先を変えて、外側のStatefulFuncの1行目に出てくるRunを先に簡約することにしましょう。 let result, updatedState = Run (StatefulFunc(fun state - state, state)) initialState まずRunでStatefulFuncの中身を取り出して、initialStateに適用します。するとこんな式になります。 let result, updatedState = initialState, initialState というわけで、result, updatedStateはともに同じ値initialStateになりました。これを下のresult, updatedStateと置き換えると以下のようになります。 let Add x = StatefulFunc(fun initialState - Run ( (fun (currentTotal, history) - StatefulFunc(fun initialState - (), (currentTotal + x, (sprintf "%dを加算" x) history)) ) initialState) initialState ) ここでRunに続く関数に注目してください。引数は(currentTotal, history)というタプルになっています。ところがその関数が適用しようとしている値はinitialStateという一つの束縛変数です。これはどうしたことでしょう。 実は簡単なことなのです。initialStateはひとつの変数ですがその型は何かのタプルなのです。どうせ(currentTotal, history)に適用されるのですから、initialStateは(currentTotal, history)という名前の2変数のタプルとしてしまいましょう。 let Add x = StatefulFunc(fun (currentTotal, history) - Run ( (fun (currentTotal, history) - StatefulFunc(fun initialState - (), (currentTotal + x, (sprintf "%dを加算" x) history)) ) (currentTotal, history) ) (currentTotal, history) ) こうすることで、2行目の関数の引数が(currentTotal, history) となり、その内側の関数が適用する変数と同じになるので、内側の関数に(currentTotal, history) を適用する際に名前を変える必要がなくなります。 ちょっと変な感じですが、この簡約に問題ないことが納得できるまでよく考えて下さい。 let Add x = StatefulFunc(fun (currentTotal, history) - Run ( StatefulFunc(fun initialState - (), (currentTotal + x, (sprintf "%dを加算" x) history)) ) (currentTotal, history) ) 12.あと少し 最後にRunをはずして中身をまた(currentTotal, history) に適用します。 let Add x = StatefulFunc(fun (currentTotal, history) - (fun initialState - (), (currentTotal + x, (sprintf "%dを加算" x) history)) (currentTotal, history) ) この関数もinitialStateが中の式で使われていないため引数は捨てられます。なんだかなぁ。 let Add x = StatefulFunc(fun (currentTotal, history) - (), (currentTotal + x, (sprintf "%dを加算" x) history)) というわけで、たったこれだけの式になってしまいました。なんだかバカにされている気がしてきませんか? この式をじっと見ると、なるほどRunをかませて(0, [])を与えると()と、加算値と文字列のリストのタプルが返るだろうということが読み取れます。これがAddの正体だったのです。 同様にSubtract、Multiply、Divideも定義できます。 let Subtract x = StatefulFunc(fun (currentTotal, history) - (), (currentTotal - x, (sprintf "%dを減算" x) history)) let Multiply x = StatefulFunc(fun (currentTotal, history) - (), (currentTotal * x, (sprintf "%dを積算" x) history)) let Divide x = StatefulFunc(fun (currentTotal, history) - (), (currentTotal / x, (sprintf "%dを除算" x) history)) calculatorActions展開編 (文責:片山 功士 2011/12/29) 今日: - 人 昨日: - 人 トータル: - 人
https://w.atwiki.jp/unique_games/pages/19.html
使い方 stage1.csv(一面の敵登録パターン) eMPattern.cpp(敵移動パターン) eSEPattern.cpp(敵射撃登録パターン) eSMPattern.cpp(敵射撃移動パターン) の四つをいじってステージを作ってください。その四つ以外をいじるとバグるので注意。 eSEPatternについて 三つの関数の使い方がわかれば行けると思います。MPattern系よりは簡単です。 EnemyShot shotJudge(int n, int quantity, int interval) n番の敵がintervalの間隔でquantity回発砲するとき、発砲可能かの判定を返します EnemyShot enter(int n, int angle, int nWay, int interval) n番の敵がangleの角度に間隔intervalのnWay弾を発砲します PLY- pToAngle(ENM[n].OBJ.x(), ENM[n].OBJ.y()) 敵から見た自機の角度の値を返します この二つも覚えればさらに複雑な弾幕が作れます。 stageCount()現在のステージカウントの値を返します ENM[n].shotCount()射撃を開始するカウントの値を返します MPattern(行動パターン)系について 軌道制御には、クラスObjectの関数を使います。敵も敵弾もこれで制御可能です。自弾もアイテムこれで制御しています。 下の長文がObjectの関数のリストです。多くて面倒ですね。行動パターン系の記述は難しいから慣れてからの方がいいかもしれません。 OBJ.count()登場or発射してからのカウントの値を返します OBJ.x()座標Xの値を返します OBJ.xAdd(int addValue)座標Xの値にaddValueの値を加算します OBJ.xSet(int setValue)座標Xの値にsetValueの値を代入します OBJ.y()座標Yの値を返します OBJ.yAdd(int addValue)座標Yの値にaddValueの値を加算します OBJ.ySet(int setValue)座標Yの値にsetValueの値を代入します OBJ.speed()速度の値を返します OBJ.speedAdd(double addValue)速度の値にaddValueの値を加算します OBJ.speedSet(double setValue)速度の値にsetValueの値を代入します OBJ.angle()角度の値を返します OBJ.angleAdd(int addValue)角度の値にaddValueの値を加算します OBJ.angleSet(int setValue)角度の値にsetValueの値を代入します Q A Q.とりあえず作りたいんだけど、どうすればいいの? A.初めから書いてあるサンプルパターンを書き換えてください パターン名は書き換えるとバグるので、そこだけは変えないでください 具体的な書き方は、サンプルパターンを参考にしてください Q.作ったパターンを試してみたい A.エクセルの○○パターンの数値を、作ったパターンの数値に書き換えてください Q.FMX、FMYって何? A.それぞれ画面端ィ!の座標です Q.角度関係の関数がバグってない? A.プログラムでは、y座標は↓がプラスになるので、角度は時計回りに増えるので注意してください Q.加算だけじゃなくて減算する関数も使いたいんだけど A.Add系やSet系にはマイナスの数値も渡せますのでそれを使ってください Q.パターン作りすぎて10個じゃ足りなくなった A.制作者に報告してくれれば対処します Q.こんな関数欲しいんだけど A.制作者に報告してくれれば検討します Q.他にも聞きたいことがあるんだけど A.このページに載ってなければツイッターで質問してください
https://w.atwiki.jp/tenj/pages/151.html
王大侠 陝西省 華山派 5,000 世界地図 陝西 華山 20,000 徒歩 陝西省 北西 0 蓮華洞 (名声701以上) 桃林塞 (名声1001以上) 玉女地 (名声1101以上) 特記事項 コメント 蓮華洞 (名声701以上) 泰山五岳 名声 体力 攻撃力 耐性 銀銭 行動 分類 1380 35825 7074 2931 690 S - 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣(上)(下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 衡山五岳 名声 体力 攻撃力 耐性 銀銭 行動 分類 1400 36325 7146 2973 700 S - 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣(上)(下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 嵩山五岳 名声 体力 攻撃力 耐性 銀銭 行動 分類 1420 36825 6587 3175 710 S - 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣(上)(下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 崋山五岳 名声 体力 攻撃力 耐性 銀銭 行動 分類 1440 37325 6677 3219 720 S - 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣(上)(下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 崋山五岳 名声 体力 攻撃力 耐性 銀銭 行動 分類 1500 38825 11001 3521 1500 A ボス 鬼魂剣 夜明刀 金赤短玉戟 金剛の手袋 喪紋鬼の鎧 赤龍天衣 (上)(下) 朱雀の外套 白猫の牙 喪紋の具足 斬魔龍の靴 恒山五岳は5分置きに北東地域 石室に沸きます。 上へ 桃林塞 (名声1001以上) 梅花斧手 名声 体力 攻撃力 耐性 銀銭 行動 分類 2090 53575 11098 4373 1347 S - 梅花証票(斧) 金瘡薬(中) 氷流剣 黄金宝刀 氷血鉄戟 火炎の爪 龍妝紋の鎧 護天神衣(上)(下) 白虎の外套 天魔死靈勢 龍粧の具足 超熱鉀靴 梅花掌手 名声 体力 攻撃力 耐性 銀銭 行動 分類 2120 54325 11098 4373 1347 S - 梅花証票(掌) 金瘡薬(中) 氷流剣 黄金宝刀 氷血鉄戟 火炎の爪 龍妝紋の鎧 護天神衣(上)(下) 白虎の外套 天魔死靈勢 龍粧の具足 超熱鉀靴 梅花爪手 名声 体力 攻撃力 耐性 銀銭 行動 分類 2300 58825 16884 4436 - A ボス 梅花証票(爪) 金瘡薬(中) 氷流剣 黄金宝刀 氷血鉄戟 火炎の爪 龍妝紋の鎧 護天神衣(上)(下) 白虎の外套 天魔死靈勢 龍粧の具足 超熱鉀靴 梅花爪手は5分おきに桃林塞 中央に沸きます。 上へ 玉女地 (名声1101以上) 伏虎拳帥 名声 体力 攻撃力 耐性 銀銭 行動 分類 討伐 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧 渾霊道着(上(下) 流霞の外套 帝魔死鈴 血線の具足 虎龍鱗の靴 破玉拳帥 名声 体力 攻撃力 耐性 銀銭 行動 分類 6140 N 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧 渾霊道着(上(下) 流霞の外套 帝魔死鈴 紅壇石の具足 虎龍鱗の靴 劈石拳帥 名声 体力 攻撃力 耐性 銀銭 行動 分類 5876 N 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧 渾霊道着(上(下) 流霞の外套 帝魔死鈴 血線の具足 虎龍鱗の靴 花形拳帥 名声 体力 攻撃力 耐性 銀銭 行動 分類 6272 S 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧 渾霊道着(上(下) 流霞の外套 帝魔死鈴 血線の具足 虎龍鱗の靴 ※ドロップリストは台湾仕様なので日本と違う物が落ちるかも 上へ 特記事項 名声について敵の名声と自分の名声の差によって ドロップ率、薬草取得率が変化します。 行動についてN=Normal(被動) S=Support(救援 他の敵を画面内で叩くと寄ってきます) A=Active(主動 プレイヤーを見つけると寄ってきます) 分類について ●; color(crimson){狩り}; 狩りモンスターを倒すと名声経験値にボーナスがつきます。 ●; color(crimson){修練}; 修練モンスターを倒すとその時上昇するステータス経験値にボーナスがつきます。 ●; color(crimson){属性}; 属性モンスターを倒すと属性別によってステータス経験値にボーナスがつきます,またドロップ率は2倍通常の2倍です。 ●; color(crimson){ボス}; 一度に1匹しか出現せず湧き方に特徴があります、特殊なアイテムや装備を落とす物は修練3~4を出します。 属性について color(crimson){鈍化武功}; プレイヤーのF4武技を禁止します 武技タイプ 遠距離武技 持続時間 7秒間 color(crimson){状態異常}; プレイヤーに設定されている自動回復ゲージバー設定を0にする 武技タイプ 近距離武技 color(crimson){毒}; プレイヤーの体力を3秒あたり5%ずつ減少させる 武技タイプ 近距離武技 持続時間 240秒間 color(crimson){散功毒}; プレイヤーの全ての武技を120秒間禁止する。 武技タイプ 近距離武技+遠距離攻撃 持続時間 120秒間 属性(火水木金土)の違い 自分の武器の属性によってダメージが変化します。 叩いている時にステータスに固定ボーナスが追加されます。30武器では熟練は上がりません。 火属性(紅色)攻撃力が特化されている 火属性武器 ダメージ70%-80% 水属性武器 ダメージ120% その他武器 ダメージ90% 敏捷に2P加算 耐性に1P加算 水属性(藍色)気力が特化されている(武技を多く使ってくる) 水属性武器 ダメージ70%-80% 土属性武器 ダメージ120% その他武器 ダメージ90% 名声に2P加算 木属性(紅色)攻撃力が特化されている 木属性武器 ダメージ70%-80% 金属性武器 ダメージ120% その他武器 ダメージ90% 耐性に2P加算 敏捷に1P加算 金属性(黄色)攻撃耐性が特化されている 金属性武器 ダメージ70%-80% 火属性武器 ダメージ120% その他武器 ダメージ90% 力に2P加算 熟練度に1P加算 土属性(褐色)敏捷性が特化されている 土属性武器 ダメージ70%-80% 木属性武器 ダメージ120% その他武器 ダメージ90% 熟練度に2P加算 力に1P加算 コメント 名前 コメント 上へ
https://w.atwiki.jp/l_ten/pages/93.html
トップページ モンスターDATA(華山派) モンスターDATA(華山派) [#cdcb5624] 蓮華洞(名声701以上) [#renge] 桃林塞(名声1001以上) [#tourin] 玉女地(名声1101以上)[#gyoku] 蓮華洞(名声701以上) 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 泰山五岳 1380 35825 7074 2931 690 S - ドロップリスト 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣 (上) (下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 衡山五岳 1400 36325 7146 2973 700 S - ドロップリスト 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣(上) (下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 嵩山五岳 1420 36825 6587 3175 710 S - ドロップリスト 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧飛輪褐衣(上)(下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 崋山五岳 1440 37325 6677 3219 720 S - ドロップリスト 毒鱗剣 九流刀 白虎銀槍 青龍の爪 紅玉輪の鎧 飛輪褐衣(上)(下) 鳳凰の外套 還魂鈴 紅玉の具足 白虎風の唐鞋 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 恒山五岳 1500 38825 11001 3521 1500 A ボス ドロップリスト 鬼魂剣 夜明刀 金赤短玉戟 金剛の手袋 喪紋鬼の鎧赤龍天衣 (上)(下) 朱雀の外套 白猫の牙 喪紋の具足 斬魔龍の靴 恒山五岳は5分置きに北東地域 石室に沸きます。 桃林塞(名声1001以上) 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 梅花斧手 2090 53575 11098 4373 1347 S - ドロップリスト 梅花証票(斧) 金瘡薬(中)氷流剣 黄金宝刀 氷血鉄戟 火炎の爪 龍妝紋の鎧護天神衣(上)(下) 白虎の外套 天魔死靈勢 龍粧の具足 超熱鉀靴 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 梅花掌手 2120 54325 11098 4373 1347 S - ドロップリスト 梅花証票(掌) 金瘡薬(中)氷流剣 黄金宝刀 氷血鉄戟 火炎の爪 龍妝紋の鎧 護天神衣(上)(下) 白虎の外套 天魔死靈勢 龍粧の具足 超熱鉀靴 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 梅花爪手 2300 58825 16884 4436 - A ボス ドロップリスト 梅花証票(爪) 金瘡薬(中)氷流剣 黄金宝刀 氷血鉄戟 火炎の爪 龍妝紋の鎧 護天神衣(上)(下) 白虎の外套 天魔死靈勢 龍粧の具足 超熱鉀靴 梅花爪手は5分おきに桃林塞 中央に沸きます。 玉女地(名声1101以上) 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 伏虎拳帥 討伐 ドロップリスト 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧渾霊道着(上(下) 流霞の外套 帝魔死鈴 血線の具足 虎龍鱗の靴 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 破玉拳帥 6140 N ドロップリスト 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧渾霊道着(上(下) 流霞の外套 帝魔死鈴 紅壇石の具足 虎龍鱗の靴 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 劈石拳帥 5876 N ドロップリスト 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧渾霊道着(上(下) 流霞の外套 帝魔死鈴 血線の具足 虎龍鱗の靴 名称 名声 体力 攻撃力 耐性 銀銭 行動 分類 花形拳帥 6272 S ドロップリスト 聖虎剣 金冠雙龍刀 千毒魔戟 神魔の爪 血線の鎧渾霊道着(上(下) 流霞の外套 帝魔死鈴 血線の具足 虎龍鱗の靴 ※ドロップリストは台湾仕様なので日本と違う物が落ちるかも 名声について 敵の名声と自分の名声の差によって ドロップ率、薬草取得率が変化します。 行動について N=Normal(被動) S=Support(救援 他の敵を画面内で叩くと寄ってきます) A=Active(主動 プレイヤーを見つけると寄ってきます) 分類について ● 狩り 狩りモンスターを倒すと名声経験値にボーナスがつきます。 ● 修練 修練モンスターを倒すとその時上昇するステータス経験値にボーナスがつきます。 ● 属性 属性モンスターを倒すと属性別によってステータス経験値にボーナスがつきます,またドロップ率は2倍通常の2倍です。 ● ボス 一度に1匹しか出現せず湧き方に特徴があります、特殊なアイテムや装備を落とす物は修練3~4を出します。 属性について 鈍化武功 プレイヤーのF4武技を禁止します 武技タイプ 遠距離武技 持続時間 7秒間 状態異常 プレイヤーに設定されている自動回復ゲージバー設定を0にする 武技タイプ 近距離武技 毒 プレイヤーの体力を3秒あたり5%ずつ減少させる 武技タイプ 近距離武技 持続時間 240秒間 散功毒 プレイヤーの全ての武技を120秒間禁止する。 武技タイプ 近距離武技+遠距離攻撃 持続時間 120秒間 属性(火水木金土)の違い 自分の武器の属性によってダメージが変化します。 叩いている時にステータスに固定ボーナスが追加されます。 +30武器では熟練は上がりません。 火属性(紅色)攻撃力が特化されている 火属性武器 ダメージ70%-80% 水属性武器 ダメージ120% その他武器 ダメージ90% 敏捷に2P加算 耐性に1P加算 水属性(藍色)気力が特化されている(武技を多く使ってくる) 水属性武器 ダメージ70%-80% 土属性武器 ダメージ120% その他武器 ダメージ90% 名声に2P加算 木属性(紅色)攻撃力が特化されている 木属性武器 ダメージ70%-80% 金属性武器 ダメージ120% その他武器 ダメージ90% 耐性に2P加算 敏捷に1P加算 金属性(黄色)攻撃耐性が特化されている 金属性武器 ダメージ70%-80% 火属性武器 ダメージ120% その他武器 ダメージ90% 力に2P加算 熟練度に1P加算 土属性(褐色)敏捷性が特化されている 土属性武器 ダメージ70%-80% 木属性武器 ダメージ120% その他武器 ダメージ90% 熟練度に2P加算 力に1P加算 総アクセス数 -
https://w.atwiki.jp/talesoftherays0228/pages/223.html
生きている理由 blankimgプラグインエラー:画像URLまたは画像ファイル名を指定してください。 インサブステンシャル -... 説明:自身から十二の球体を生みだし空間を切り裂く魔鏡技 特殊効果 なし 属性 闇 MG 100 ステータス -... 最大CC 13 最大威力 1290 最大物攻 328 最大術攻 582 強化内容 -... 強化1 ミラージュレシオが追加で5%加算 強化2 自身のHPが10%回復する 強化3 敵ののけぞり時間+0.1秒 強化4 自身のHPが10%回復する 強化5 ミラージュレシオが追加で5%加算 魔鏡技動画 -...
https://w.atwiki.jp/hape/pages/27.html
武器の名前の後ろの+の分だけ攻撃力が加算される 戦闘時にクリティカルが発生すると+1される時がある 川で釣りをすると稀に+1武器が手に入る 装備している武器と同じ+1以上の武器を選択して使うと武器を合成できる(名前つき×) 使った武器はなくなり装備している武器の+が加算される ただし限界があり+9を超える事はできない 石碑で+9の武器を名前つきの武器にできる 名前が付くと+0になりもう一度名前を付けるには+9にしないといけない
https://w.atwiki.jp/talesoftherays0228/pages/148.html
パスカル フェンデルの術士 インフィニ・バレット 説明:たくさんのミサイルを射出し激しい爆発に敵を巻き込む魔鏡技 特殊効果 なし 属性 火 MG 100 ステータス 最大CC 5 最大威力 750 最大物攻 52 最大術攻 48 強化内容 強化1 ミラージュレシオが追加で5%加算 強化2 自身のHPが10%回復する 強化3 敵ののけぞり時間+0.1秒 強化4 自身のHPが10%回復する 強化5 ミラージュレシオが追加で5%加算 魔鏡技動画 videoプラグインエラー 正しいURLを入力してください。
https://w.atwiki.jp/ebi_xyz/pages/23.html
最初に、DBでplpgsqlが使用できるか確認する。 DBにログインして以下のsqlを実行する。 select * from pg_language; このsqlでストアドプロシージャで使用できる言語の一覧が取得できる。 plpgsqlがない場合は、以下のコマンドを実行してインストールを行う。コマンドはpostgresユーザ等の管理者ユーザで行う。 createlang -d [DB名] plpgsql コマンドの成功時は何も表示されない。 尚、plpgsqlが使用できない状態でplpgsql関数を定義しようとすると以下のエラーが発生する。 ERROR language "plpgsql" does not exist 以下はplpgsqlのサンプル。 引数で渡された2つの値を加算して返す。 CREATE FUNCTION add( integer, integer ) RETURNS integer AS -- "DECLARE"内で変数を定義する DECLARE -- 以下はinteger型の変数sumを定義する sum integer; -- "BEGIN"~"END"間で処理を記述する BEGIN -- sum変数に加算した結果を代入する) sum = $1+$2; -- RETURNで値を返す RETURN sum; END ; LANGUAGE plpgsql ; sum変数に加算した結果を代入する部分は以下の様にSELECT文で記述することもできる SELECT INTO sum $1+$2; 以下は参考URL。 http //homepage2.nifty.com/sak/w_sak3/doc/sysbrd/psql_k19.htm 2010-07-26
https://w.atwiki.jp/zenmainext/pages/47.html
091913版 目標に対してクリティカル・ヒットを命中させたとき、その攻撃はその最大ダメージを目標に与える。君はその攻撃のダメージ・ダイスをロールしないことを意味する;代わりに、各ダイスが取りうる最大値を取り、それにあらゆる修正値を適用した結果を取るのである。 加えて、目標は追加ダメージを受ける。その攻撃のダメージ・ダイスを1つロールし、それをダメージに加算する。たとえば、君の攻撃が通常は2d6+2の[刺突]ダメージを与えるのであれば、クリティカル・ヒットしたときにはd6を1回だけロールし、それをダメージに加算するのである。 もしその攻撃に複数の異なるダイスを用いるのであれば、君はロールするダイスを選ぶこと。たとえば、その攻撃が1d6の[刺突]ダメージと1d8の[殴打]ダメージを与えるのであれば、君は1つのd6かd8のどちらか1つをロールできる。 ▼060713版 もし攻撃がクリティカル・ヒットになったなら、その目標は追加のダメージを受ける。その攻撃のダメージ・ダイスの1個を取り、それを2回ロールし、目標に与えるダメージに加算する。たとえば、君の攻撃が通常は2d6+2の[刺突]ダメージを与えるのであれば、クリティカル・ヒットでは3d6+2の[刺突]ダメージを与える。 もしその攻撃に複数のダメージ・ダイスがあるなら、どのダイスをロールするのか君が選択する。たとえば、1d6の[刺突]ダメージと1d8の[殴打]ダメージを与える攻撃であれば、君はd6かd8のどちらかを追加1個ロールできる。
https://w.atwiki.jp/matsuno_cup/pages/49.html
第1条 対戦における環境 作戦時間は240秒とする。対戦ステージはサイド7。BGMに指定はない。本大会中はパイロットネームで呼び合う。 第2条 僚機・トーナメントの決定 対戦前に籤引き、阿弥陀籤などの公平な方法でそれぞれ決定される。 第3条 対戦の勝敗及び得点 2on2で対戦を行い、撃破した機体のコストに応じて敵戦力ゲージが減少する。 先に敵戦力ゲージをゼロにすると勝利となる。 作戦時間切れになった場合、対戦終了後に表示されるリザルトでスコア4位のいるチームが敗北となる。 各試合終了後にポイントが付き、結果により称号が与えられる。 第4条 対戦後の得点振り分け 対戦を行い勝利したチームの各パイロットに2ポイント、敗北したチームに-1ポイントをずつを加算する。 また、対戦開始から90秒以内に勝敗が決まった場合はタイムボーナスとして、勝利チームの各パイロットに 1ポイント、敗北チームに-1ポイントをさらに加算する。 さらに、エース機撃墜ボーナスとして、前トーナメント優勝者を含むチームに勝利した場合、 勝利チームの各パイロットはその優勝者から1ポイント奪うことができる。 パーフェクト勝ち(戦力ゲージが6000GP残っている状態での勝利)した場合、勝利チームの各パイロット に1ポイント、敗北チームに-1ポイントを加算する。