投稿
ASA fusuian
何をしたらいいのかわからない人は打ち込んでみようプログラムその2。 今度はゲームではなく、10匹のインベーダーが動きまわるデモプログラムです。
7そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
プログラムリスト。打ち込んだら、ダイレクトモードでSAVE"ASAINV"としてセーブして、RUNコマンドで実行します。デモなので操作はありません、終わるにはSTOPボタンかSTARTキー。
0そうだね
プレイ済み
返信[2]
親投稿
ASA fusuian
キモは10匹のインベーダーを把握するための、配列(リスト)変数X,Yと、FOR〜NEXT文です。 配列を使うために、2行目のDIM(ディム)文で名前とリストの数を宣言します。DIMはdimension ディメンジョンの略ですね。 二次元、三次元の2D,3DのDも同じdimensionですが、ここでは単純にサイズとか容積という意味です。
0そうだね
プレイ済み
返信[3]
親投稿
ASA fusuian
10匹のインベーダーに、それぞれの位置を決めるために4〜7行のFOR〜NEXT文を書いています。 FOR(フォー)文の最初で変数Iを0にセットするので、一回目はX[0]に0〜49の乱数を、Y[0]に0〜29の乱数をセットします。続いてNEXT(ネクスト)が実行されたときに、Iの値に1を足してFOR文の後から繰り返します。X[1]とY[1]に乱数をセットするわけです。10回めのNEXTで、Iが10になったら最初にセットしたTO 9の9を超えるので、ループを抜けて次のメインループに入ります。
0そうだね
プレイ済み
返信[4]
親投稿
ASA fusuian
FORは〜のためにとかいろんな意味がありますが、ここではfor two years(2年の間)とかfor ten miles(10マイルの間)のような、距離や時間の範囲を示す意味のようです。変数Iが0から9になる間、という感じでしょうかね? NEXTは次という意味。FOR文は必ずNEXTで受けなくちゃいけません。FOR文がないのにNEXTを実行するとNEXT without FOR(FOR抜きのNEXT)エラーが出ます。
0そうだね
プレイ済み
返信[5]
親投稿
ASA fusuian
その次のWHILEからがメインループになります。 WHILE 式〜WENDは、FOR文に似たループ構文で、式が真ならループを繰り返します。WHILE 1なら常に式が1、真なので無限ループになります。 WHILE(ホワイルまたはワイル)は〜の間ずっとという意味です。WENDはWHILEENDの略ですね。 IF文の終わりはENDIFで、WHILEの終わりはWENDで、DEF文の終わりはENDです。単なるEND文はプログラムの終了文でもあり、ちょっとややこしいですね!
0そうだね
プレイ済み
返信[6]
親投稿
ASA fusuian
メインループの内側に、再びFOR〜NEXTループがあります。 ここでインベーダー0番〜9番を一つ一つ移動させています。 RND関数はさっきも使いましたが、0〜カッコの数-1の間で、呼ぶたびに違う値になります。RANDOM(ランダム、乱数)の略ですね。 RND(2)は0か1を返します。1-RND(2)*2は、1-0か1-2になるので、結果は1か-1になるわけです。
0そうだね
プレイ済み
返信[7]
親投稿
ASA fusuian
TX,TYはX[I]のコピーです。これが画面からはみ出ると、LOCATE文がエラーになるので、うまく画面の反対側にワープさせます。
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
VSYNC 6、ここで1/10秒の待ちを入れます。これを1にするとインベーダーはめちゃくちゃ速くなり、60にするとノソノソします。 VSYNC(ブイシンク)はVertical synchronization 垂直同期の略で、これはザックリ説明すると、テレビゲームの処理サイクルが1/60秒単位だということです。 VSYNC 1なら1秒間に60回メインループを回すのでめちゃくちゃ速くなるし、VSYNC 60なら1秒間に1回しか回しません。 プチコンでは、このVSYNC命令とBUTTON関数が連動しているので、メインループには必ずVSYNCを入れます。
0そうだね
プレイ済み
返信[9]
親投稿
ASA fusuian
もちろん、VSYNCを書かなくたって壊れやしないから、一度コメントアウト(VSYNCの前に'とかREM をつける)してみるのも面白いね! さて、どうなるかな?
0そうだね
プレイ済み
返信[10]
親投稿
さきょう rosario40
細かく解説して頂き、ありがとうございます 少しずつ勉強していますが、分からないことばかりなのでサンプルプログラムと解説で本当に助かりますm(__)m 大切に勉強させて頂きます(^O^)
0そうだね
未プレイ
返信[11]
親投稿
これで実行しようとするとエラーになるのですが、間違っている所はありますか?
0そうだね
プレイ済み
返信[12]
親投稿
ASA fusuian
エラーが出たあと、下画面の上端に、LIST E…と書いてあるところをタッチするとカーソルがエラーのある行に飛びます。 その行をよく見比べるとタイプミスが見つかるかもしれません。
0そうだね
プレイ済み
返信[13]
親投稿
ASA fusuian
マネマネさん、あれからうまく行きましたか?
0そうだね
プレイ済み