このWikiは古くなりました:新しいWikiへ移動

参考

Tonyu基礎練習練習:変数:没練習:グローバル変数 Tonyu基礎練習練習:変数:没練習:オブジェクト変数 Tonyu基礎練習練習:変数:没.の使い方?

実際にはどのようになっているのか

次のプログラムを見てみましょう。

Jiki.tonyu

  
extends SpriteChar;
while(1) {
  if (getkey(39)>0) x=x+3;
  if (getkey(37)>0) x=x-3;
  if (getkey(40)>0) y=y+3;
  if (getkey(38)>0) y=y-3;
  update();
}

 Tonyuではxyはオブジェクトの位置を表す特別な変数です。ウィンドウの左上から右にx、左にyだけ移動した場所にそのオブジェクトが表示されます。

 上の例では、xとyの最初の値が与えられていません。つまりは、xは最初の状態ではどこにいるのかわからないと言うことになります。
 しかし、オブジェクトを生成したときに、オブジェクトインスペクタウィンドウに「x」と書かれた行があるのに気付かれたと思います。

 これがxの最初の値(初期値)です。

 x=100,y=100

 が初期値だったと仮定します。

getkeyで右カーソルキーが押された場合には、 x=x+3;
x=100+3;
x=103;

 のようになり、自機は右に3だけ移動します。

同様にして、左カーソルの場合
x=97
となり、左に3だけ移動し、

下カーソルでy=103となり下に3移動
上カーソルでy=97となり上に3移動

することになります。

以下のプログラムを考えてみましょう。

Jiki.tonyu

  
extends SpriteChar;
while(1) {
  if (getkey(39)>0) x=3;
  if (getkey(37)>0) x=3;
  if (getkey(40)>0) y=3;
  if (getkey(38)>0) y=3;
  update();
}

このプログラムではどのような移動を行うでしょうか?

右カーソルでx=3となりウィンドウの左から3の地点
左カーソルでx=3となりウィンドウの左から3の地点
下カーソルでy=3となりウィンドウの下から3の地点
上カーソルでy=3となりウィンドウの上から3の地点

となり、結果的にx=3,y=3の地点から移動していないということに気が付かれると思います。

 このように変数を利用することにより、<font color=Red>ゲームを遊ぶ人がその人の意思にしたがって、それぞれ異なる動きを行ってもらう</font>事が可能になります。

おまけ

オブジェクトの位置をプログラム上で初期化してあげることも可能です。

  • 良い例

Jiki.tonyu

  
extends SpriteChar;
x=100;
y=100;
while(1) {
  if (getkey(39)>0) x=x+3;
  if (getkey(37)>0) x=x-3;
  if (getkey(40)>0) y=y+3;
  if (getkey(38)>0) y=y-3;
  update();
}

これは、オブジェクトの最初の位置がどこにあったとしても、かならずx=100,y=100の地点に設定されます。

  • 悪い例

Jiki.tonyu

  
extends SpriteChar;
while(1) {
  x=100;
  y=100;
  if (getkey(39)>0) x=x+3;
  if (getkey(37)>0) x=x-3;
  if (getkey(40)>0) y=y+3;
  if (getkey(38)>0) y=y-3;
  update();
}

「Jikiがまったく動いてくれません」
という質問を受けそうですが、それは

pre> while(1) {

 x=100;
 y=100;

/pre> のように、whileループの中でxとyの初期化を行っているからです。

これでは、オブジェクトは
97<x<103,97<y<103
の地点から動いてくれないわけですね。

Tonyu基礎練習練習:変数:没練習:グローバル変数 Tonyu基礎練習練習:変数:没練習:オブジェクト変数 Tonyu基礎練習練習:変数:没.の使い方?


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-14 (火) 21:24:37 (2355d)