忍者ブログ
ゲームと工作と勉強と雑記のページ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 今日は、玉をキーボードで動かしてみようと思います。

 キー情報は、getkey命令で取得します。getkey命令は、ある指定したキーが、押されている状態か押されていない状態かを取得する命令で、
getkey 変数, キーコード
と言う風に使います。
 キーコードとは、キーボードのキー一つ一つに割り振られた番号のことで、次のようになっています。

  キーコード : 実際のキー
 ------------------------------------------
        1    : マウスの左ボタン
        2    : マウスの右ボタン
        3    : キャンセル([CTRL]+[BREAK])
        4    : 3ボタンマウスのまん中のボタン
        8    : [BACKSPACE](PC98の[BS])
        9    : [TAB]
       13    : [ENTER]
       16    : [SHIFT]
       17    : [CTRL]
       18    : [ALT](PC98の[GRPH])
       20    : [CAPSLOCK]
       27    : [ESC]
       32    : スペースキー
       33    : [PAGEUP](PC98の[ROLLDOWN])
       34    : [PAGEDOWN](PC98の[ROLLUP])
       35    : [END](PC98の[HELP])
       36    : [HOME](PC98の[HOMECLR])
       37    : カーソルキー[←]
       38    : カーソルキー[↑]
       39    : カーソルキー[→]
       40    : カーソルキー[↓]
   48~57    : [0]~[9](メインキーボード)
   65~90    : [A]~[Z]
  96~105    : [0]~[9](テンキー)
 112~121    : ファンクションキー [F1]~[F10]

(「HSP HELP Browser Ⅱ」 から引用)

 この数値をgetkey命令に指定すると、押されている状態であれば変数に1が、押されていない状態であれば変数に0が代入されます

 実際に使えば分かると思います。ちょっと長いですが次のプログラムを実行してみてください。

 // 初期位置
 x = 100
 y = 100

 // 移動スピード
 sp = 10

 // 半径
 r = 10

 repeat

  // キー情報取得
  getkey hidari, 37
  getkey ue, 38
  getkey migi, 39
  getkey sita, 40

  // 移動
  if (hidari == 1) {
   x -= sp
  }
  if (ue == 1) {
   y -= sp
  }
  if (migi == 1) {
   x += sp
  }
  if (sita == 1) {
   y += sp
  }

  // 描画始め ++++++++++++++++++
  redraw 0
 
  // 背景
  color 0, 0, 0
  boxf

  // 玉
  color 255, 255, 255
  circle x - r, y - r, x + r, y + r

  redraw 1
 
// 描画終わり ++++++++++++++++

  wait 3

 loop

 カーソルキー(十字キー)を押すと、その方向に玉が動くと思います。

 最初に
  x -= sp
 という書き方に触れておきますが、これは今まで使ってきた、
  x = x - sp 
 と同じことです。つまり、xの値をspの値だけ減らす、と言う意味です。スマートに見えるので書き換えました。
 今まではspの部分は定数を用いてきましたが、変数にすることで、「アイテム取得でスピードアップ!」と言うような処理が出来ます。今回はしていませんが、今後ゲームを作る際に、こういう書き方が必要になると思うので、こうしておきました。他に、spの代入する値を変更するだけで、spの部分の値を一括変更できるというメリットもあります。

 キーの情報の取得はこの部分です。
  getkey hidari, 37
  getkey ue, 38
  getkey migi, 39
  getkey sita, 40

 37,38,39,40と言うキーコードは、上の表で見ると、カーソルキーの左、上、右、下であることが分かると思います。
 つまり、カーソルキーが押されているか押されていないかの情報が、それぞれ、hidari、ue、migi、sitaと言う変数に代入されることになります。

 そして、その変数の値を利用しているところがここです。
  if (hidari == 1) {
   x -= sp
  }
  if (ue == 1) {
   y -= sp
  }
  if (migi == 1) {
   x += sp
  }
  if (sita == 1) {
   y += sp
  }

 ここで、if (なんたら) { かんたら } という文が出てきました。この文をif文と言います。ifと言うのは英語で「もしも~ならば」という意味を持ちますが、プログラム上のif文もそうです。もし()内の条件が満たされていれば、{}内の処理をします。逆に()内の条件が満たされていなければ、{}内の処理を行いません。
 ここで==は左辺と右辺が等しい場合、という条件を示します。つまり、それぞれ、hidari、ue、migi、sitaの値が1、つまりキーが押されている状態であれば{}内の処理を行うというものです。{}内の処理はそれぞれ、x座標、あるいはy座標を変化させる処理となっているので、カーソルキーを押すと、円が移動する、ということになります。
 xを増やすか減らすかという符合の問題は、x座標の正方向が右、y座標の正方向が下、と言うことを考えれば分かると思います。

 

 なんだかゲームっぽくなってきたと思いませんか?次はマウスでも触ってみるかもしれません。

 あと、HSP HELP Browser Ⅱは、スクリプトエディタのメニューのヘルプ>HSP命令リファレンスを開く、から起動することが出来ますので、命令の詳細が知りたい時や、どんな命令や関数があるか知りたい時は開いてみてください。

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
リンク
フリーエリア
最新CM
[08/30 masaya]
[06/17 Yu]
最新TB
プロフィール
HN:
ぴんかび
性別:
男性
趣味:
プログラミング、工作、囲碁
自己紹介:
_m_s_k_あっとまあくmail.goo.ne.jp
バーコード
ブログ内検索
最古記事
(06/15)
(06/16)
(06/17)
(06/18)
(06/20)
カウンター
アクセス解析

Copyright © [ PinCurve ] All rights reserved.
Special Template : 忍者ブログ de テンプレート
Special Thanks : 忍者ブログ
Commercial message : [PR]