定数(ていすう) |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
さっ、じゃあ、休憩はおしまい。
一気に見ていくぞ。
まずは定数(ていすう)だ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
定数(ていすう)は
値を変えられない変数だ。
作り方は簡単。変数の宣言時に、
型の前に
final
を付ければいい。
final
int DATA_X = 8; ってな。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
定数は、全部大文字と
アンダーバーで書くんだね。
変数の型の前に宣言するんだ。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
別に大文字で
書かないでも
できるけどね。
書くようにすること。
|
 |
|
 |
はいっ。
でも、ゲームに
どうやってこれを
使うんだろう。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
これで、初期化時の値が固定に
なって書き換え不可になる。
この場合
DATA_X は 8 になった
ってことだ。
つまり、値と同じだな。
定数はゲームでも
よく使われるから覚えておこう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
注意
読んでね。 |
 |
|
 |
ゲームに
使われるんだ。
あーあ、
早くゲーム
作りたいな・・・。 |
|
|
|
 |
|
 |
|
定数の注意点 |
|
|
|
定数名はすべて半角英数の大文字で書くのが慣例。
2単語以上で作る場合、「_」(アンダーバー)でつなげる。 |
|
|
|
 |
final int
DATA_X = 8; |
|
|
|
|
|
|
|
|
|
定数は値と同じように使える。読み取り専用の変数と言える。 |
|
|
|
 |
final int DATA_X = 8;//整数の8と同じ
System.out.println("DATA_X の値は"
+ DATA_X );
|
|
|
|
|
|
|
|
|
|
宣言時以外の値の変更は不可。値の代入はできない。 |
|
|
|
 |
final int DATA_X = 8;
DATA_X = 44; |
|
|
|
|
|
|
|
|
|
変数を途中から定数に変更は不可。その逆も不可。 |
|
|
|
 |
int DATA_X = 8;
final DATA_X = 99; |
|
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
んー、でも、
数字の 8 と同じ意味なら
普通に 8 って書けば
いいのに・・・。
なんかあんまり使い道
ないような・・・。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
ゲームにも
全然関係
ないよね・・・
ゲーム
作りたいな・・・。 |
|
やっぱ、
ちょっと
疲れてきてる? |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
ゲームでもよく使うって
言っただろ。すごい便利なんだぜ。
あー、例えば、ゲームでの
使われ方は・・・・
ほら、この例を見てくれ。
コードにゲームのマップのサイズを
書くとするだろ。
見てみろ、定数を使った場合と
どっちの方がいい?
これならマップサイズを
書いてある部分が一目瞭然だろ。
あくまでも「例」のコードだから
処理内容は気にしないでね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
サンプルコード 定数の使用例(定数使用) |
|
・・・ |
|
|
|
020 |
|
//マップサイズを定数で定義 |
|
021 |
|
final int
MAP_WIDTH = 100;//マップ幅 |
|
022 |
|
final int
MAP_HEIGHT = 40;//マップ高さ |
|
023 |
|
|
|
024 |
|
//******************************* |
|
025 |
|
//マップデータ初期化 |
|
026 |
|
//******************************* |
|
027 |
|
//イベントマップ作成 |
|
028 |
|
byte[][]
eventMap = new byte[MAP_HEIGHT][MAP_WIDTH]; |
|
029 |
|
//表示マップ作成 |
|
030 |
|
byte[][]
mainMap = new byte[MAP_HEIGHT][MAP_WIDTH]; |
|
031 |
|
|
|
032 |
|
//マップサイズを設定 |
|
033 |
|
String mapSizeWidth =
Integer.toString(MAP_WIDTH); |
|
034 |
|
String mapSizeHeight =
Integer.toString(MAP_HEIGHT); |
|
035 |
|
|
|
036 |
|
//ユーザーのマップサイズをセット |
|
037 |
|
setMapMinY(0); |
|
038 |
|
setMapMaxY(MAP_HEIGHT); |
|
039 |
|
|
|
040 |
|
//マップ変動用初期値セット |
|
041 |
|
int moveMapWidth =
MAP_WIDTH; |
|
043 |
|
int
moveMapHeight =
MAP_HEIGHT; |
|
・・・ |
|
|
|
|
このコードはサンプルです。入力しても動きません。 |
|
|
 |
|
 |
|
 |
|
 |
|
サンプルコード 定数の使用例(定数未使用) |
|
・・・ |
|
|
|
020 |
|
//マップサイズを定数で定義 |
|
021 |
|
//final int
MAP_WIDTH = 100;//マップ幅 |
|
022 |
|
//final int MAP_HEIGHT = 40;//マップ高さ |
|
023 |
|
|
|
024 |
|
//******************************* |
|
025 |
|
//マップデータ初期化 |
|
026 |
|
//******************************* |
|
027 |
|
//イベントマップ作成 |
|
028 |
|
byte[][]
eventMap = new byte[40][100]; |
|
029 |
|
//表示マップ作成 |
|
030 |
|
byte[][]
mainMap = new byte[40][100]; |
|
031 |
|
|
|
032 |
|
//マップサイズを設定 |
|
033 |
|
String mapSizeWidth =
Integer.toString(100); |
|
034 |
|
String mapSizeHeight =
Integer.toString(40); |
|
035 |
|
|
|
036 |
|
//ユーザーのマップサイズをセット |
|
037 |
|
setMapMinY(0); |
|
038 |
|
setMapMaxY(40); |
|
039 |
|
|
|
040 |
|
//マップ変動用初期値セット |
|
041 |
|
int moveMapWidth =
100; |
|
043 |
|
int
moveMapHeight = 40; |
|
・・・ |
|
|
|
|
このコードはサンプルです。入力しても動きません。 |
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
しかも、初期化の値を一つ書き換える
だけで、一斉に全部の場所のサイズを
変えることができる。
こうしなかったら、マップサイズに変更が
ある度に、全部の場所を探して、
書き換えてかないとだめなんだぜ。
おまけに、入力間違いも減らせる。
それに、定数にしておけば、
間違って途中で値が書き換えられる
心配もなくなる。
な、いいこと尽くめだろ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
なっなっ |
 |
|
|
|
 |
|
 |
|
サンプルコード 定数の使用例(定数値書き換え) |
|
・・・ |
|
|
|
020 |
|
//マップサイズを定数で定義 |
|
021 |
|
final int
MAP_WIDTH = 999;//マップ幅 |
値を999に変更 |
022 |
|
final int
MAP_HEIGHT = 999;//マップ高さ |
値を999に変更 |
023 |
|
|
|
024 |
|
//******************************* |
|
025 |
|
//マップデータ初期化 |
|
026 |
|
//******************************* |
|
027 |
|
//イベントマップ作成 |
|
028 |
|
byte[][]
eventMap = new byte[MAP_HEIGHT][MAP_WIDTH]; |
|
029 |
|
//表示マップ作成 |
|
030 |
|
byte[][]
mainMap = new byte[MAP_HEIGHT][MAP_WIDTH]; |
|
031 |
|
|
|
032 |
|
//マップサイズを設定 |
|
033 |
|
String mapSizeWidth =
Integer.toString(MAP_WIDTH); |
|
034 |
|
String mapSizeHeight =
Integer.toString(MAP_HEIGHT); |
|
035 |
|
|
|
036 |
|
//ユーザーのマップサイズをセット |
|
037 |
|
setMapMinY(0); |
|
038 |
|
setMapMaxY(MAP_HEIGHT); |
|
039 |
|
|
|
040 |
|
//マップ変動用初期値セット |
|
041 |
|
int moveMapWidth =
MAP_WIDTH; |
|
043 |
|
int
moveMapHeight =
MAP_HEIGHT; |
|
・・・ |
|
|
|
|
定数一箇所の変更で、すべての値が書き換えられる。
このコードはサンプルです。入力しても動きません。 |
|
|
 |
|
 |
|
|
別にすごい
テクニックって
わけじゃ・・・ |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
例えば、
変数と定数の使い分けだと、 |
|
勇者の
エネルギー |
変数 |
変動するから |
マップの
サイズ |
定数 |
どの面も同じ
サイズだから |
|
|
みたいな使い分けをするんだよ。 |
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
す、すごいね、すごいね!
なんか、ものすっごく
ゲームっぽい!!!
ゲームっぽくなってきた気がする!
そっかー、定数も重要なんだね!
なんか、すごく楽しくなってきた。。。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
うーんとね-、
えーと、
マップサイズ
どれぐらいに
しようかな・・・。
勇者の
エネルギーはねー。 |
 |
|
|
はあ・・・
ガキのお守り
は大変だ。 |
|
|