オープニング、エンディングを作る つづき |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
メンバ変数のエンディングフラグを
関数の引数と戻り値を
使ったやり方に書き直したよ。
写しながら理解するように
読んでね。
説明するから、今はなんとなく
でいいよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
「理解するように読む」ね!
うーん、どうやって
エンディング処理モードに
してるのかな? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
こっち側で
解説久しぶりー。
なんか
落ち着くわあ。 |
 |
|
 |
うーんと、
なにが
違うのかな。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
よし、じゃあ、
まずはやり方を
ざっと見て行こう。
やり方の概要を
説明するよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
 |
まずは概要ね。
難しそうに見えるけど
じっくり読めば
そうでもないから。
何回かゆっくり
読んでね。 |
|
|
|
やり方の
例を作って
みたよ。
イメージね。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
関数の戻り値は
処理の分岐に使える。
関数の処理の成功、失敗・・・
関数の結果を真偽値の
戻り値で返すことで
呼び出し元は、その値で
処理を分岐できる。
つまり、
関数をフラグのように
使えるんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
関数の戻り値をフラグのように使う例(真偽値) |
|
1、関数を定義する。 |
関数 checkEnding |
エンディングチェック関数。引数の魔法石の数でエンディングかチェックする。
結果をboolean型の戻り値で返す。
引数の値が10以上なら成功、それ以外は失敗になる。 |
戻り値 |
boolean型 |
処理に成功した場合の戻り値
(引数 count が 10以上) |
true |
それ以外の場合の戻り値
(引数 count が 10以上以外。つまり10未満) |
false |
|
・・・ |
|
|
|
|
//***************** |
| |
//関数の定義例 |
| |
//***************** |
| |
|
| |
//エンディングかチェックする関数:魔法石の数をチェック |
| |
static private boolean
checkEnding(int
count) { |
| |
//魔法石の数が10個以上集まっていたら |
| |
if(count >= 10){ |
| |
return true;//成功:エンディングへ |
| |
} |
| |
|
| |
return false;//それ以外はfalse |
| |
} |
・・・ |
|
|
|
|
2、呼び出し元は、関数の戻り値を受け取って判定。trueならモード変更。 |
関数 checkEnding を使う(呼び出し元で戻り値を判定) |
もしtrueの場合 |
モード変更 |
もしfalseの場合 |
今のモードを継続 |
|
・・・ |
|
|
|
|
//***************** |
| |
//関数の呼び出し例 |
| |
//***************** |
| |
|
| |
//変数を宣言 |
| |
int nowMode =
MODE_GAME;//ゲームモードで初期化 |
| |
int nowStoneCount = 999;//魔法石の数 |
| |
|
| |
//判定結果を戻り値で受け取る:魔法石の判定結果 |
| |
boolean resultFlg =
checkEnding(nowStoneCount); |
| |
|
| |
//モード切替処理:関数の結果が成功か判定する |
| |
if(resultFlg){ |
| |
//モードを変更する。魔法石が集まった!エンディングモードへ |
|
|
nowMode = MODE_ENDING; |
| |
} |
・・・ |
|
|
※MODE_GAME、MODE_ENDINGはint型のメンバ変数(定数)とします |
|
|
このコードはサンプルです。入力しても動きません。 |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そうか!
関数の処理が
成功したらtrueで
それ以外はfalse。
関数の処理の結果を
フラグみたいに使う
んだね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
魔法石の数を
チェックする
関数なんだ。 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これを応用すれば、
関数の結果で
複数の処理に分岐
させることも出来るね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
数値の戻り値を使って
直接モード変更してる!
if文で戻り値を判定しないでも
モードが変えられるんだ。
戻り値は、計算結果を
返すだけじゃないんだね! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
例だってば。
|
 |
|
 |
このゲーム
遊びたーい!
次作るの
魔法石
使いたいね!
|
|
|
|
 |
|
 |
|
関数の戻り値をフラグのように使う例(数値) |
|
1、関数を定義する。 |
関数 checkEndingEX |
エンディングチェック関数。引数の魔法石の数でエンディングかチェックする。
結果をint型定数の戻り値で返す。
引数の値が
・10以上なら、バッドエンディングモード
・100以上なら、グッドエンディングモード
・それ以外は、ゲームモードでゲーム継続 |
戻り値 |
int型定数 |
魔法石が10以上の場合 |
MODE_ENDING_BAD |
魔法石が100以上の場合 |
MODE_ENDING_GOOD |
それ以外の場合 |
MODE_GAME |
|
・・・ |
|
|
|
|
//***************** |
| |
//関数の定義例 |
| |
//***************** |
| |
|
| |
//エンディングかチェックする関数:魔法石の数をチェック |
| |
static private int
checkEndingEX(int
count){ |
| |
//魔法石の数が100以上ならグッドエンディングへ |
| |
if(count >= 100){ |
| |
return
MODE_ENDING_GOOD; |
| |
|
| |
//魔法石の数が10以上ならバッドエンディングへ |
| |
}else(count >= 10){ |
| |
return
MODE_ENDING_BAD; |
|
|
} |
|
|
|
|
|
return
MODE_GAME;//それ以外はゲームモード |
| |
} |
・・・ |
|
|
※MODE_GAME、MODE_ENDING_GOOD、MODE_ENDING_BADは、
int型のメンバ変数(定数)とします |
|
2、呼び出し元は、関数の戻り値を直接モード変数に代入。モード変更する。 |
関数
checkEndingEXを使う(戻り値を代入して直接分岐) |
戻り値を直接 nowMode に代入 |
分岐の判定をしないでモード変更できる
フラグも不要 |
|
・・・ |
|
|
|
|
//***************** |
| |
//関数の呼び出し例 |
| |
//***************** |
|
|
|
| |
//変数を宣言 |
| |
int nowMode =
MODE_GAME;//ゲームモードで初期化 |
| |
int nowStoneCount = 999;//魔法石の数 |
| |
|
| |
//結果の戻り値でモードを変更する。 |
| |
//直接代入するので、モード切替処理とフラグは不要。 |
| |
nowMode =
checkEndingEX(nowStoneCount); |
・・・ |
|
|
|
|
|
このコードはサンプルです。入力しても動きません。 |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
やり方の概要は
こんな感じ。
戻り値の使い方の
1つとして覚えてくれ。
|
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
今は
なんとなく
でいいよ。
これから普通に
使ってくから
慣れるよ。 |
|
はいっ。
まだなんとなく
だけど。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
ほんとに
いろいろな書き方が
できるんだね。
うーん・・・
でも、実際にどんな風に
使うのかな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
改変したコードを
実行して動作を確認
して見てくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
はいっ。
えーと・・・
動作は前と変わりません。
ちゃんとモード変更も
出来てます。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
おっけーね? |
 |
|
 |
同じです! |
|
実行して動作が変わらないのを確認して下さい
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
OK。
じゃあ、
コードがどう変わったか、
内容を説明していこう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
お願い
しますっ。 |
|
|