さばとたんとあそぼう_6
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[さばとたんと遊ぼうIndex]]
6.さばとと関数
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
テストドライブの結果はどうだったかの?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
当たり前やけどなんも無かったで?性能も今までのBasic.txtと...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
!?もしやアレだけやって性能は変わっておらんのか?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
当然やがな。今までKeyでやっとったことをLuaに移しただけや...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
あれだけやってそんなものかの。Luaらしいことはいつになれば...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
Luaらしい言うたら_Gとかやなぁ。今回の関数と次のテーブル押...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
Gじゃと?不吉な名前を口にするでない。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
黒いアレとは別物や。_がついとる。まぁ詳しいことは次回説明...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
関数とな?前やった変数とはどう違うのじゃ?
鯖「どう違うゆうて・・ほとんど同じところあらへんがな。
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
むぅ、それなら紛らわしい名前をつけるでない。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
日本語やから紛らわしいんやって。英語やったら『variable』...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
主はそうまでして妾に英語を使わせたいのか?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
いや別に日本語のままでええで?それより関数の解説や解説。...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
すでに使っておるとな?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
毎度おなじみの『out』とか『_KEY』とかがそうやな。
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ふむ、ならば使っているというのはout(0, "さばとたんかわい...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ご名答や。ここからはいくつか今までにない用語の説明はいる...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
まず、out(・・・・)の形が『関数呼び出し』や。英語やと『fu...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
いつぞみたattempt to call a nil valueのcallはもしかしてこ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
!?神さんの記憶力は不思議やな。callについてはその通りな...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ほんで、次の用語は『引数(ひきすう)』や。out(0, "さばと...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ヒキスウか、なんか気持ちの悪い読み方じゃの。関数に情報を...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
そやな。次は例に_KEY(4)を使うで。この場合、_KEYの関数呼び...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
昨日も散々漬かったの。0と1が切り替わるんじゃったな。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
この場合の_KEY(4)が意味してる0とか1とかの数字を『返り値』...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
返り血とな。あれはレインコートとかビニールのジャンパーと...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
とりあえずそれは変換が間違っとるで。ボケとらんで返り値の...
さばと「関数呼び出しを数字として使うときの値のことじゃな...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ほなここで関数を1つ作ってみましょか。例によって例のごとく...
#clear
#codeprettify{{
VAL{}KEY{}BODY{CORE(){} }
Lua
{
function OnFrame()
out(0, add(1, 2));
end
function add(a, b)
return a + b;
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
今日はまたずいぶんとシンプルじゃな。この様子だとfunction ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
それやけどまた細かい説明や。『function 作りたい関数の名前...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
引数の名前というのはなんじゃ?この場合だとa,bのようじゃが...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
先ほど話ましたんは関数を呼び出すときの話や。関数の中で引...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
それで引数に名前がつくのじゃな。これは呼び出すときに書い...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
そうやな。上でadd(1,2)とやってよびだしとるから、addの最初...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
して、次のreturnはなんじゃろうか。『戻る』のだろうがどこ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
あえてどこに戻るかいうたら関数を呼び出したところへやけど...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ということはadd(1,2)の値は1+2=3ということじゃな。おお、確...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
渡そうとしてる引数の中に又関数呼び出しがあったら、内側の...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
なるほど、よくできておるの。しかし足し算ぐらい別に関数を...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
これくらいの例やとわかり辛いのは確かや。けどな、何度も出...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ENGINEとHANDLEとHBRAKEじゃな。確かにどれもおなじようなif...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
そこで、や。それを関数にまとめてしまうんや。こんな感じや...
#clear
#codeprettify{{
function limit_value(val, min, max)
if val < min then
return min;
elseif val > max then
return max;
else
return val;
end
end
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
こんなかんじかの。
#clear
#codeprettify{{
Lua
{
function OnFrame()
if _KEY(0) > 0 then
ENGINE = ENGINE - 500;
elseif _KEY(1) > 0 then
ENGINE = ENGINE + 500
else
ENGINE = 0;
end
if ENGINE > 2500 then
ENGINE = 2500;
elseif ENGINE < -2500 then
ENGINE = 2500;
end
HANDLE = HANDLE + (_KEY(2)-_KEY(3)) * -0.5;
if _KEY(2) == 0 and _KEY(3) == 0 then
if HANDLE >= 5 then
HANDLE = HANDLE - 5;
elseif 5 > HANDLE and HANDLE > 0 then
HANDLE = 0;
elseif 0 > HANDLE and HANDLE > -5 then
HANDLE = 0;
elseif -5 >= HANDLE then
HANDLE = HANDLE + 5;
end
end
if HANDLE > 20 then
HANDLE = 20;
elseif HANDLE < -20 then
HANDLE = -20;
end
BRAKE = _KEY(7) * 30;
HBRAKE = _KEY(7)*20 + _KEY(8)*20;
if HBRAKE > 20 then
HBRAKE = 20;
end
end
function limit_value(val, min, max)
if val < min then
return min;
elseif val > max then
return max;
else
return val;
end
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
OKや。そしたら同じ処理の部分をlimit_valueつこうて書きかえ...
#clear
#codeprettify{{
Lua
{
function OnFrame()
if _KEY(0) > 0 then
ENGINE = ENGINE - 500;
elseif _KEY(1) > 0 then
ENGINE = ENGINE + 500
else
ENGINE = 0;
end
ENGINE = limit_value(ENGINE, -2500, 2500);
HANDLE = HANDLE + (_KEY(2)-_KEY(3)) * -0.5;
if _KEY(2) == 0 and _KEY(3) == 0 then
if HANDLE >= 5 then
HANDLE = HANDLE - 5;
elseif 5 > HANDLE and HANDLE > 0 then
HANDLE = 0;
elseif 0 > HANDLE and HANDLE > -5 then
HANDLE = 0;
elseif -5 >= HANDLE then
HANDLE = HANDLE + 5;
end
end
HANDLE = limit_value(HANDLE, -20, 20);
BRAKE = _KEY(7) * 30;
HBRAKE = _KEY(7)*20 + _KEY(8)*20;
HBRAKE = limit_value(HBRAKE, 0, 20);
end
function limit_value(val, min, max)
if val < min then
return min;
elseif val > max then
return max;
else
return val;
end
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
一応主のいう通りに書き変えてはみたが何故これでENGINEやら...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
走りに行かせる前に仕組みを考えてくださいな。1つやれば他は...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
それくらいはわかっておる。問題はlimit_valueがどうなっとる...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ほなlimit_valueが呼び出されるとどうなるか見ましょか。まず...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
渡された引数は関数を作るときに書いた順番どおりに名前がつ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
さて、ここでval、つまりENGINEがmin、つまり-2500より小さか...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
最初のif文が条件を満たすの。そうするとreturn minになっと...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
はっきりと言うてなかったんは某のミスやけど、return なにか...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
するとここでreturn minじゃから、limit_valueの値は-2500と...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
2500より大きい場合も同じやな。elseifのところの条件に引っ...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
確かによくできておるが、これではダメかの?いちいち返り値...
#clear
#codeprettify{{
function limit_value(val, min, max)
if val < min then
val = min
elseif val > max then
val = max
else
val = val;
end
end
}}
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
よーあるミスやけどそれは無理や。関数呼び出しのときに同じ...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ということは引数に渡したら勝手に値が変わってしまう心配は...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
まぁ例外はあるけどな。そっちは明日やるとして神さんのいう...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
難しいの、この間から妾のないすなアイディアがどうもうまく...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ところで、すごくきになるんじゃが、function OnFrame() とい...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ええとこに気づきはったな。神さんの気づいた通り、OnFrameっ...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ふむ、それならどこから呼び出しとるのじゃ?OnFrameの中身が...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
どこから、というとRigidChips本体からやな。RigidChipsの本...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
さて、2回目くらいの講座のときに、後で説明してくれると言っ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
アレが出る理由はずばりOnFrameがないからや。OnFrameをつく...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
それじゃったら、まったく関係のないところでつくってもいな...
#clear
#codeprettify{{
VAL{}KEY{}BODY{CORE(){} }
Lua{
function OnFrame()
out(0, sabato(1, 2));
end
function add(a, b)
return a + b;
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
うむ、見事にエラーが出たの。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
自分でLua組んどってattempt to call a nil value〜が出たと...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
今日もずいぶんと進んだの。やったことをまとめるとこんな感...
#clear
関数を使うのが"関数呼び出し"、そのとき渡す情報が"引数"。
式の中で関数呼び出しを値として使うときの値が関数の"返り...
"function 関数名(引数名1,引数名2,...)〜end"で関数が作れ...
返り値は関数の中で"return 値"の形で設定できる。
但しreturnを通ると関数の実行はそこで終わり。
なにも設定しないと返り値はnil
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
神さんグッジョブや。次回はちょっと予定を変更してRCの関数...
#clear
[[前:さばととモデル>さばとたんとあそぼう_5]]:[[次:さばと...
終了行:
[[さばとたんと遊ぼうIndex]]
6.さばとと関数
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
テストドライブの結果はどうだったかの?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
当たり前やけどなんも無かったで?性能も今までのBasic.txtと...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
!?もしやアレだけやって性能は変わっておらんのか?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
当然やがな。今までKeyでやっとったことをLuaに移しただけや...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
あれだけやってそんなものかの。Luaらしいことはいつになれば...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
Luaらしい言うたら_Gとかやなぁ。今回の関数と次のテーブル押...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
Gじゃと?不吉な名前を口にするでない。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
黒いアレとは別物や。_がついとる。まぁ詳しいことは次回説明...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
関数とな?前やった変数とはどう違うのじゃ?
鯖「どう違うゆうて・・ほとんど同じところあらへんがな。
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
むぅ、それなら紛らわしい名前をつけるでない。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
日本語やから紛らわしいんやって。英語やったら『variable』...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
主はそうまでして妾に英語を使わせたいのか?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
いや別に日本語のままでええで?それより関数の解説や解説。...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
すでに使っておるとな?
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
毎度おなじみの『out』とか『_KEY』とかがそうやな。
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ふむ、ならば使っているというのはout(0, "さばとたんかわい...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ご名答や。ここからはいくつか今までにない用語の説明はいる...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
まず、out(・・・・)の形が『関数呼び出し』や。英語やと『fu...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
いつぞみたattempt to call a nil valueのcallはもしかしてこ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
!?神さんの記憶力は不思議やな。callについてはその通りな...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ほんで、次の用語は『引数(ひきすう)』や。out(0, "さばと...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ヒキスウか、なんか気持ちの悪い読み方じゃの。関数に情報を...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
そやな。次は例に_KEY(4)を使うで。この場合、_KEYの関数呼び...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
昨日も散々漬かったの。0と1が切り替わるんじゃったな。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
この場合の_KEY(4)が意味してる0とか1とかの数字を『返り値』...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
返り血とな。あれはレインコートとかビニールのジャンパーと...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
とりあえずそれは変換が間違っとるで。ボケとらんで返り値の...
さばと「関数呼び出しを数字として使うときの値のことじゃな...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ほなここで関数を1つ作ってみましょか。例によって例のごとく...
#clear
#codeprettify{{
VAL{}KEY{}BODY{CORE(){} }
Lua
{
function OnFrame()
out(0, add(1, 2));
end
function add(a, b)
return a + b;
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
今日はまたずいぶんとシンプルじゃな。この様子だとfunction ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
それやけどまた細かい説明や。『function 作りたい関数の名前...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
引数の名前というのはなんじゃ?この場合だとa,bのようじゃが...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
先ほど話ましたんは関数を呼び出すときの話や。関数の中で引...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
それで引数に名前がつくのじゃな。これは呼び出すときに書い...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
そうやな。上でadd(1,2)とやってよびだしとるから、addの最初...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
して、次のreturnはなんじゃろうか。『戻る』のだろうがどこ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
あえてどこに戻るかいうたら関数を呼び出したところへやけど...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ということはadd(1,2)の値は1+2=3ということじゃな。おお、確...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
渡そうとしてる引数の中に又関数呼び出しがあったら、内側の...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
なるほど、よくできておるの。しかし足し算ぐらい別に関数を...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
これくらいの例やとわかり辛いのは確かや。けどな、何度も出...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ENGINEとHANDLEとHBRAKEじゃな。確かにどれもおなじようなif...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
そこで、や。それを関数にまとめてしまうんや。こんな感じや...
#clear
#codeprettify{{
function limit_value(val, min, max)
if val < min then
return min;
elseif val > max then
return max;
else
return val;
end
end
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
こんなかんじかの。
#clear
#codeprettify{{
Lua
{
function OnFrame()
if _KEY(0) > 0 then
ENGINE = ENGINE - 500;
elseif _KEY(1) > 0 then
ENGINE = ENGINE + 500
else
ENGINE = 0;
end
if ENGINE > 2500 then
ENGINE = 2500;
elseif ENGINE < -2500 then
ENGINE = 2500;
end
HANDLE = HANDLE + (_KEY(2)-_KEY(3)) * -0.5;
if _KEY(2) == 0 and _KEY(3) == 0 then
if HANDLE >= 5 then
HANDLE = HANDLE - 5;
elseif 5 > HANDLE and HANDLE > 0 then
HANDLE = 0;
elseif 0 > HANDLE and HANDLE > -5 then
HANDLE = 0;
elseif -5 >= HANDLE then
HANDLE = HANDLE + 5;
end
end
if HANDLE > 20 then
HANDLE = 20;
elseif HANDLE < -20 then
HANDLE = -20;
end
BRAKE = _KEY(7) * 30;
HBRAKE = _KEY(7)*20 + _KEY(8)*20;
if HBRAKE > 20 then
HBRAKE = 20;
end
end
function limit_value(val, min, max)
if val < min then
return min;
elseif val > max then
return max;
else
return val;
end
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
OKや。そしたら同じ処理の部分をlimit_valueつこうて書きかえ...
#clear
#codeprettify{{
Lua
{
function OnFrame()
if _KEY(0) > 0 then
ENGINE = ENGINE - 500;
elseif _KEY(1) > 0 then
ENGINE = ENGINE + 500
else
ENGINE = 0;
end
ENGINE = limit_value(ENGINE, -2500, 2500);
HANDLE = HANDLE + (_KEY(2)-_KEY(3)) * -0.5;
if _KEY(2) == 0 and _KEY(3) == 0 then
if HANDLE >= 5 then
HANDLE = HANDLE - 5;
elseif 5 > HANDLE and HANDLE > 0 then
HANDLE = 0;
elseif 0 > HANDLE and HANDLE > -5 then
HANDLE = 0;
elseif -5 >= HANDLE then
HANDLE = HANDLE + 5;
end
end
HANDLE = limit_value(HANDLE, -20, 20);
BRAKE = _KEY(7) * 30;
HBRAKE = _KEY(7)*20 + _KEY(8)*20;
HBRAKE = limit_value(HBRAKE, 0, 20);
end
function limit_value(val, min, max)
if val < min then
return min;
elseif val > max then
return max;
else
return val;
end
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
一応主のいう通りに書き変えてはみたが何故これでENGINEやら...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
走りに行かせる前に仕組みを考えてくださいな。1つやれば他は...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
それくらいはわかっておる。問題はlimit_valueがどうなっとる...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ほなlimit_valueが呼び出されるとどうなるか見ましょか。まず...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
渡された引数は関数を作るときに書いた順番どおりに名前がつ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
さて、ここでval、つまりENGINEがmin、つまり-2500より小さか...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
最初のif文が条件を満たすの。そうするとreturn minになっと...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
はっきりと言うてなかったんは某のミスやけど、return なにか...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
するとここでreturn minじゃから、limit_valueの値は-2500と...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
2500より大きい場合も同じやな。elseifのところの条件に引っ...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
確かによくできておるが、これではダメかの?いちいち返り値...
#clear
#codeprettify{{
function limit_value(val, min, max)
if val < min then
val = min
elseif val > max then
val = max
else
val = val;
end
end
}}
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
よーあるミスやけどそれは無理や。関数呼び出しのときに同じ...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ということは引数に渡したら勝手に値が変わってしまう心配は...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
まぁ例外はあるけどな。そっちは明日やるとして神さんのいう...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
難しいの、この間から妾のないすなアイディアがどうもうまく...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ところで、すごくきになるんじゃが、function OnFrame() とい...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
ええとこに気づきはったな。神さんの気づいた通り、OnFrameっ...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
ふむ、それならどこから呼び出しとるのじゃ?OnFrameの中身が...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
どこから、というとRigidChips本体からやな。RigidChipsの本...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
さて、2回目くらいの講座のときに、後で説明してくれると言っ...
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
アレが出る理由はずばりOnFrameがないからや。OnFrameをつく...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
それじゃったら、まったく関係のないところでつくってもいな...
#clear
#codeprettify{{
VAL{}KEY{}BODY{CORE(){} }
Lua{
function OnFrame()
out(0, sabato(1, 2));
end
function add(a, b)
return a + b;
end
}
}}
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
うむ、見事にエラーが出たの。
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
自分でLua組んどってattempt to call a nil value〜が出たと...
#clear
#ref(さばとたんと遊ぼうIndex/sabato_icon_1.png,around,left)
今日もずいぶんと進んだの。やったことをまとめるとこんな感...
#clear
関数を使うのが"関数呼び出し"、そのとき渡す情報が"引数"。
式の中で関数呼び出しを値として使うときの値が関数の"返り...
"function 関数名(引数名1,引数名2,...)〜end"で関数が作れ...
返り値は関数の中で"return 値"の形で設定できる。
但しreturnを通ると関数の実行はそこで終わり。
なにも設定しないと返り値はnil
#clear
#ref(さばとたんと遊ぼうIndex/so_icon.png,around,left)
神さんグッジョブや。次回はちょっと予定を変更してRCの関数...
#clear
[[前:さばととモデル>さばとたんとあそぼう_5]]:[[次:さばと...
ページ名: