トピック
Yamaneshi Gakuzirou

ゲーム作成の仕方

プチコン初めたんですが、まだ色々な事を知っていません。教えて下さい
9そうだね
プレイ済み
返信[1]
親投稿
イスターリャ arduinotexter
色々というと何処からなのか不明ですので、適当に説明しますと プログラムの入力画面にプログラムと呼ばれる特定の決まりを持った文章を書いていき、それを組み合わせてゲームを作ります まずは命令や関数の説明ですね 命令は決められた事を実行します 関数は決められた事をした結果を数値や文字列として返します ということで、初心者ならばPRINT命令を使ってしまいましょう PRINT "Hello!" この1行だけのプログラムは、Hello!という文字列を「コンソール」という表示方法で表示する、という意味です コンソール関係のプログラムはLOCATEやCOLOR等色々ありますので、ごゆっくりお試し下さい
4そうだね
プレイ済み
返信[2]
親投稿
Yamaneshi Gakuzirou
く、詳しいですね!分かりました。やってみます。(本人は13歳であまり知力が高くない)
3そうだね
プレイ済み
返信[3]
親投稿
ΖΕΧ ZEX256
プチコン3号を起動するとこんな画面になります。 3DSがネットに繋がるのであれば「webプチコン入門」を読んで下さい。 ネットに繋がらないなら、操作は説明書を読んでください、3DSの[HOME]ボタン押して下にあります。 「サンプルを見る」を選択すると、プチコン内蔵のサンプルプログラムが一覧表示され、選択すると実行できます。 「作品を見る」を選択すると、自分で作ったプログラムや、ダウンロードしたプログラムが一覧表示され、選択すると実行できます。
2そうだね
プレイ済み
返信[4]
親投稿
Yamaneshi Gakuzirou
ご説明ありがとうございます!まず一段階ファイルの扱いがわかりました。
0そうだね
プレイ済み
返信[5]
親投稿
Noroi0 Mii3150
初心者にはなんか絶対BIGsとZEXs いますね。(私も初心者です★)
4そうだね
プレイ済み
返信[6]
親投稿
ΖΕΧ ZEX256
「作品公開とダウンロード」を選択すると、こんな画面になります。 ここでは皆が作ったプログラムやデータファイルをダウンロードしたり、自分が作った物をアップロードしたりできます。 これはプチコンを作っているスマイルブームのサーバーにネットワーク接続するため、ネットに繋がらない3DSでは利用できません。 皆が作ったプログラムやデータファイルをダウンロードしたい場合、「公開キーを使ってダウンロード(受信)」を選択して下さい。
0そうだね
プレイ済み
返信[7]
親投稿
ΖΕΧ ZEX256
Miiverseやネット上には数多くの公開キーが存在しています。 例えば、作品「CHIRO」公開キー【J5343VAE】みたいな感じで書かれています。 この公開キーを画面に入力すればダウンロードできるのです。 ダウンロードしたプログラムは、最初の画面の「作品を見る」を選択すると、一覧に表示されますので、選択すると実行できます。
0そうだね
プレイ済み
返信[8]
親投稿
ΖΕΧ ZEX256
プログラムを作りたければ、最初の画面で「SmileBASICでプログラムを作る」を選択して下さい。 ゲームを作りたいなら、プログラム言語の基礎を知る必要があります。 それをこれから解説します。 プチコン3号のプログラム言語はSmileBASICという初心者向けの言語です。 BASICという言語は、レトロパソコンの時代から使われてきた言語で、現在第一線でプログラム開発をされている半数はBASIC経験者でしょう。 プログラムに慣れ親しむ入門言語としては適していると言えます。
2そうだね
プレイ済み
返信[9]
親投稿
ΖΕΧ ZEX256
左下の[DIRECT]を押せば、ダイレクトモードになります。 ダイレクトモードでは、命令を打つと、そのまま実行されます。 PRINT "HELLO WORLD" HELLO WORLD OK PRINT 命令は ? で代用できます。 ? 1+1 2 OK 掛け算は × の代わりに * (アスタリスク)を使います。 割り算は ÷ の代わりに / (スラッシュ)を使います。 ? 2*4/8 1 OK
3そうだね
プレイ済み
返信[10]
親投稿
ΖΕΧ ZEX256
変数は数字を記憶する箱です。 X=1 OK ? X 1 OK 変数名はアルファベットで始まる名前をつけて下さい。 変数は計算結果をいれたり、他の計算式に組み込んだりできます。 X=1+1 OK Y=X-2 OK ? X,Y 2 0 OK
3そうだね
プレイ済み
返信[11]
親投稿
ΖΕΧ ZEX256
1行に複数の命令を書くには : で繋げます、1命令ずつ左から右へと実行されます。 0から3までの数を表示してみる。 FOR X=0 TO 3 : ? X : NEXT 0 1 2 3 OK これは繰り返し命令で、変数 I に 0 を入れ、NEXTの前までの命令を実行した後、 変数 I に1つづ足して同じ処理を繰り返し行い、3まで処理したら終わります。
3そうだね
プレイ済み
返信[12]
親投稿
ΖΕΧ ZEX256
画面下の[EDIT]を押すとエディットモードになります。 エディットモードは複数行の長いプログラムを編集する画面です。 編集したプログラムを実行するには3DSの[START]ボタンを押します、上から下に向かって順に実行されます。 入力したプログラムをメモリカードに保存するには[L]か[R]ボタン押しながら左上の[SAVE]を押し、ファイル名を入力すれば保存できます。 キーボードの操作方法は説明書を読んでください、3DSの[HOME]ボタン押して下にあります。
3そうだね
プレイ済み
返信[13]
親投稿
ΖΕΧ ZEX256
画面の文字を消すには CLS (クリアスクリーン)命令を使います。 文字の表示位置を LOCATE 命令で指定できます。 CLS LOCATE 20,5 ? "Xは20、Yは5のいちです。"; PRINTの最後に ; を付けると改行しません。
2そうだね
プレイ済み
返信[14]
親投稿
ΖΕΧ ZEX256
プログラム中にコメント(実行されない文字)を書くことができます。 REM このプログラムは7/3に作成 REM(リマーク)は '(シングルクォーテーション)で代用できます。 ' 自分の長所を見つけるには、自分が楽にできることを探すこと 文字の色を指定するには COLOR 命令で 色番号 0から15の全16色が指定できます。 FOR C=0 TO 15 COLOR C '←文字色が0は透明、1は黒なので背景が黒いと見えない ? C, '←「,」(カンマ)はタブとして空白が空く NEXT 文字が見えない時は ACLS と打てば、全ての表示を元通りに戻してくれる。
3そうだね
プレイ済み
返信[15]
親投稿
ΖΕΧ ZEX256
GLINE 0,0,399,239,#RED '←グラフィック画面に線を引く命令 使い方は、命令にカーソルを合わせ、右上の[?]を押すと、その命令の説明が表示される。 FOR X=0 TO 399 STEP 16 'STEPを指定すると、この場合変数Xに16ずつ足す GLINE X,0,X,239,#GREEN '16ドット毎に縦線を引く WAIT 60 '←待つ命令、60で1秒 NEXT GCLS '←グラフィック画面を消す命令
3そうだね
プレイ済み
返信[16]
親投稿
ΖΕΧ ZEX256
FOR Y=240 TO 0 STEP -16 'STEPはマイナス値を指定することもできる GLINE 0,Y,399,Y,#BLUE '16ドット毎に横線を引く WAIT 60 NEXT FOR Y=0 TO 239 STEP 16 FOR X=0 TO 399 STEP 16 '←FOR文は重ねて使える、これをネストと呼ぶ GBOX X,Y,X+14,Y+14,RGB(0,X,Y) 'グラフィック画面に四角を描く WAIT '←WAITは待つ時間を省略できる、この場合1/60秒 NEXT NEXT
3そうだね
プレイ済み
返信[17]
親投稿
ΖΕΧ ZEX256
変わらない値(具体的な数字や、#REDなど)を定数と呼ぶ、 プログラム全般的に、定数を記述できる部分には、変数や計算式を記述することができる、また、関数を記述することもできる。 関数は大抵、括弧の中に値を引き渡すと、その値を基に計算した結果を返してくれる。 ? SQR(4) '←SQR(スクウェア・ルート)は平方根を返す関数で、この場合√4の計算結果が表示される RGB()も関数で、光の三原色(赤、緑、青)をそれぞれ 0~255で指定すると、色番号を計算して返してくれる。 COLOR_NO = RGB(R,G,B) '←変数 COLOR_NO には色番号が入る
3そうだね
プレイ済み
返信[18]
親投稿
ΖΕΧ ZEX256
FOR Y=0 TO 239 STEP 16 FOR X=0 TO 399 STEP 16 GFILL X+1,Y+1,X+13,Y+13,RGB(255-X,255-Y,0) '塗り潰しの四角を描く WAIT '←WAITを入れているのは描くところを見せるため NEXT '↑ループの内側は、インデント(字下げ)と言ってスペースを空けるとプログラムが見やすくなる NEXT グラフィック画面に描画命令は他にも、円(GCIRCLE)、塗り潰し三角形(GTRI)、点(GPSET)などがある、説明を見ながら使ってみるといい。
3そうだね
プレイ済み
返信[19]
親投稿
ΖΕΧ ZEX256
プログラム実行中にもう一度[START]ボタンを押したり、左下の[STOP]を押すと、プログラムを途中停止できる。 その時、画面に Break on 0:5 とか表示される、最後の数字は、実行停止した行番号 実行時の変数はそのまま見ることができる。 ? X;Y 64 2 OK うまくいかない時は、いきなり人に聞かず、変数の状態を確認するべきだ。
2そうだね
プレイ済み
返信[20]
親投稿
ΖΕΧ ZEX256
プログラムを使用する人をユーザーと言います。 ユーザーにキーボード操作をさせ、入力した値を変数に入れることができます。 INPUT "すうじをいれてね ",NUM ? "すうじは";NUM;"です。" これを実行すると 「すうじをいれてね 」←ここでキーボード入力を待っている。 [3]とか入力すると 「すうじは3です。」と表示される。
2そうだね
プレイ済み
返信[21]
親投稿
ΖΕΧ ZEX256
プログラムは、その時の何かの条件の違いにより別の動作をさせることができる、これを条件分岐という。 IF文 THEN文を使うと条件分岐できる。 INPUT "すうじをいれてね ",NUM IF NUM==0 THEN COLOR 3 '←変数 NUM が 0 だった場合、文字色を赤に切り替える ? "すうじは";NUM;"です。" 条件に合わなかった処理を一緒に記述できる。 これにはIF THEN文より後に ELSE文を書き、そこに条件に合わなかった処理を書く INPUT "すうじをいれてね ",NUM IF NUM==0 THEN COLOR 3 ELSE COLOR 5 '←変数 NUM が 0以外だった場合、文字色を緑に切り替える ? "すうじは";NUM;"です。"
2そうだね
プレイ済み
返信[22]
親投稿
ΖΕΧ ZEX256
IF THENの間に入る式を、条件式と言う、条件式は次の様に書くことができる。 ①定数、変数、関数、式を比較演算子で繋ぐ IF NUM==8 THEN '←NUMが8 IF NUM!=8 THEN '←NUMが8じゃない IF NUM<8 THEN '←NUMが8よりも小さい IF NUM>8 THEN '←NUMが8よりも大きい IF NUM<=8 THEN '←NUMが8以下(8を含む) IF NUM>=8 THEN '←NUMが8以上(8を含む) IF (R*R*PI())>100 THEN '円の面積を計算、100を超えていたら
2そうだね
プレイ済み
返信[23]
親投稿
ΖΕΧ ZEX256
実は、条件式は真偽値を判定しているだけです、真偽値の真とは 0以外 のこと、偽とは 0 のこと ②定数、変数、関数、式を1つ書く IF 1 THEN '←1が0以外なら IF 0 THEN '←0が0以外なら(ありえない) IF TRUE THEN '←TRUEが0以外なら IF FALSE THEN '←FALSEが0以外なら(ありえない) IF NUM THEN '←NUMが0以外なら IF NUM-8 THEN '←NUM-8が0以外なら (TRUE、FALSEはシステム変数であり、最初から値が入っている)
2そうだね
プレイ済み
返信[24]
親投稿
ΖΕΧ ZEX256
IF THEN ELSEを1行で書くのは狭いし見づらい、そこで複数行で書くことができる。 IF (条件式①) THEN '←THENの右には処理を書いてはいけない (①真の処理) ELSEIF (条件式②) THEN '←ELSEIFを使えば次の条件分岐が連続でできる (②真の処理) ELSE (偽の処理) ENDIF '←最後に必ずENDIFを付けること
2そうだね
プレイ済み
返信[25]
親投稿
ΖΕΧ ZEX256
INPUT "1:don't go 2:can't go",N1 INPUT "1:京都弁 2:大阪弁",N2 IF N1==1 THEN IF N2==1 THEN PRINT"「行かへん」(don't go)" ELSE PRINT"「行けへん」(don't go)" ENDIF ELSE IF N2==1 THEN PRINT"「行けへん」(can't go)" ELSE PRINT"「行かれへん」(can't go)" ENDIF ENDIF
3そうだね
プレイ済み
返信[26]
親投稿
ΖΕΧ ZEX256
↑こんな感じでIF文はネストできる。 プログラム中で文字を扱うには、"(ダブルクォーテーション)で文字の前後を囲むと文字データとなる、これを「文字列」と呼ぶ。 ? "「よう行かんねん」" 文字列も変数に入れることができる、文字列変数だ。 文字列変数は、BASICでは変数名の最後に $(ダラー)を付ける必要がある。 DESCRIPTION$="心情としては行きたいのはやまやまなんだけどまことに残念ながら行けない" これで文字列変数 DESCRIPTION$に文字列が入る。
3そうだね
プレイ済み
返信[27]
親投稿
Yamaneshi Gakuzirou
難しい、、、。あ、そうです。RPGを作りたいんですが、(ドラクエ的な)
1そうだね
プレイ済み
返信[28]
親投稿
ZEXさんのは機能一覧みたいな感じなので、「RPGを作るには、どの機能を選ぶ」ががポイントです。
2そうだね
プレイ済み
返信[29]
親投稿
かぶとん kabutomusi0220
間違えてやり直す場合は、
1そうだね
未プレイ
返信[30]
親投稿
Yamaneshi Gakuzirou
どうします?(例、間違えてOKにしたなど
1そうだね
プレイ済み
返信[31]
親投稿
間違えてやり直す、が分からなかったりする。 プログラムを打ち間違えたとか?
2そうだね
プレイ済み
返信[32]
親投稿
Yamaneshi Gakuzirou
はい。そうです
1そうだね
プレイ済み
返信[33]
親投稿
安藤…じゃなくてUNDOという機能がある。 打ったのを戻せる。
3そうだね
プレイ済み
返信[34]
親投稿
Yamaneshi Gakuzirou
ありがとうございます!
0そうだね
プレイ済み
返信[35]
親投稿
STiNGER STiNGER8901
エラーが出た場合は、エラーメッセージの内容を確かめて、それをヒントにコードを書き直せばいいのです。
1そうだね
プレイ済み
返信[36]
親投稿
nobu divine-creator
最近、ZEXさんが命令の使い方をまとめてコメントされていますけど、それをプログラムにして公開されていれば、初心者がそれをダウンロードして参照できますよね? ミバでのコメント数には制限がありますし、似たようなコメントを何度も入力するのは大変なのでは?
3そうだね
プレイ済み
返信[37]
親投稿
あきと SideBurnsM
ZEXさんがMiiverse上での書き込みにこだわるの分かる気がします。 画面付きの投稿は正しいソースコードが貼れるし、「実行するとこんな画面になります」というような結果表示も楽に行える。 もうひとつ公開キーでプログラムを落としたとしても、本人が自分で打ち込んで動かしてみる事をするのが一番理解が進むと思います。
1そうだね
プレイ済み
返信[38]
親投稿
Yamaneshi Gakuzirou
皆さんありがとうございます。できるだけやってみます!(本人の頭脳はすごくたいした事ないのに、このソフトに気合いを入れているw)
0そうだね
プレイ済み
返信[39]
親投稿
ツララ LongIceSword
>nobuさんへ 似た様なコメントを何度も書くのも、書いてる本人にしてみればプチコンの命令を使ってるうちに新しい使い方を思い付くみたいな感じで、案外無駄なことじゃなかったりすると思いますよ。 あきとさんの言われてる手打ち入力と同じような「理解が進む効果」が教えてる側にも発生するんじゃないかと。
1そうだね
プレイ済み
返信[40]
親投稿
nobu divine-creator
質問者が実際に自分で入力するのが良い! 教える側にも良い効果がある! どちらもそうだと思いますけど、それってパソコンなどと3DSの併用(または3DS×2台使用)という操作環境の人が可能な話ですよね? 3DS×1台だけの人なら、Miiverseを起動しながらプチコンの操作はできないので、ミバを見ながらの入力ってできませんよね? その点、プログラムなら空きスロットに入れて、参照しながら入力できるということから、そのほうが良いのかな?と思ったんですけど…。 ちなみに、そのプログラムをそのまま入力しても、理解できていないのなら正しく使うことができないので、理解しないで使えるようになるわけじゃないですよね?
0そうだね
プレイ済み
返信[41]
親投稿
ΖΕΧ ZEX256
文字列と文字列を結合できる。 A$="A" B$="B" C$=A$+B$ '←"A"+"B"で結合され、 ? C$ '←変数C$は"AB"となる。 SMILE BASICでは、文字列を掛け算すると、複数複製できる。 TALK A$*3 '←"A"を3回複製し"AAA"になる。 TALK命令は、引き渡した文字列を、プチコンが話してくれるので「エエエー」と喋る。
0そうだね
プレイ済み
返信[42]
親投稿
ΖΕΧ ZEX256
ループ命令でFOR~NEXTは、最初に決まった数だけループするには良いのですが、 ループ回数が判らない場合には、どうすれば良いのでしょうか。 その場合、WHILE~WENDや、REPEAT~UNTILを使うと良いでしょう。 それぞれ使用に適した使い方があります。 WHILE~WENDの特徴は前判定型のループであるため、ループ処理の最低実行回数は0回、つまり条件に依っては1度もループ内に入らず次の処理に抜ける場合もあるということです。 REPEAT~UNTILの特徴は後判定型のループであるため、必ず1度はループに入ります。
0そうだね
プレイ済み
返信[43]
親投稿
ΖΕΧ ZEX256
WHILE 条件式 ループ処理 WEND WHILE~WENDは前判定型のループで、ループに入る前に条件式が判定され、条件が真である間ループします。 WENDまで処理が進むと再びWHILEの条件式の評価に戻ります、条件が偽になるとループの中は処理されずWENDの次に進みます。 A$="はい、マイケル" WHILE A$!="" '←文字列も比較できる、A$が空でなければループ処理に入る TALK A$:? A$ '←A$を喋らせ、表示する INPUT A$ '←ユーザーに喋らせる言葉をキーボード入力させる WEND
0そうだね
プレイ済み
返信[44]
親投稿
ΖΕΧ ZEX256
REPEAT ループ処理 UNTIL 条件式 REPEAT~UNTILは後判定型のループで、UNTILまで処理が進むと条件式が評価され、条件が偽である間ループします。 ループするとREPEATに戻り、ループ処理を行います。 注意しなければならないのは、UNTILのループする条件がWHILEとは真偽逆であることです。 REPEAT INPUT A$ '←ユーザーに喋らせる言葉をキーボード入力させる TALK A$:? A$ '←A$を喋らせ、表示する UNTIL A$=="" 'A$が空ならループを抜ける
0そうだね
プレイ済み
返信[45]
親投稿
ΖΕΧ ZEX256
これらループはネストできる。 ループ内でCONTINUE命令により、すぐループの条件式評価に戻る。 (FOR~NEXTの場合は、変数がカウントアップ/ダウンされた後、ループを抜けるか評価される) ループ内でBREAK命令により、すぐさまループを抜ける。
0そうだね
プレイ済み
返信[46]
親投稿
ΖΕΧ ZEX256
REPEAT VSYNC '←処理が速過ぎるので1/60秒の表示更新まで待つ B = BUTTON() '←ユーザーの押したボタン情報を変数Bに取得 IF B==0 THEN CONTINUE '←何も押されて無ければループ評価に戻る IF B==#UP THEN ?"↑" '←上が押されたら「↑」を表示 IF B==#DOWN THEN ?"↓" '←下が押されたら「↓」を表示 IF B==#LEFT THEN ?"←" '←左が押されたら「←」を表示 IF B==#RIGHT THEN ?"→" '←右が押されたら「→」を表示 UNTIL B==#A '(A)ボタンが押されたらループを抜ける
0そうだね
プレイ済み
返信[47]
親投稿
ΖΕΧ ZEX256
GOTO命令で実行位置をジャンプできる。 GOTOを使うには、ジャンプ先にラベルを記述する必要がある。 ラベルは@(アットマーク)で始まる英数字と_(アンダーバー)で記述できる。 ラベル自体は何も処理されない、場所を示すだけ。 @LOOP '←ジャンプ先のラベル INPUT A$ '←ユーザーに喋らせる言葉をキーボード入力させる TALK A$:? A$ '←A$を喋らせ、表示する IF A$!="" THEN @LOOP '←A$が空じゃなければ@LOOPにジャンプする ↑THENとGOTOが連続する場合どちらかを省略できる。
0そうだね
プレイ済み
返信[48]
親投稿
ΖΕΧ ZEX256
GOTO命令は多用すると、処理が複雑になり理解し難いプログラムとなる、 それをスパゲティーコードと呼び嫌われている、GOTO命令は最小限に留めるべきだ。 使うのは、例えばメインループの繰り返しや、ネストしたループ処理の内側から一気にループ外に飛び出すときくらいだ。
0そうだね
プレイ済み
返信[49]
親投稿
ΖΕΧ ZEX256
特定の決まった処理(ルーチン)を、プログラムの複数箇所から呼び出せると便利なことがある。 そんな時はサブルーチンを使う。 サブルーチンはGOSUB命令で呼び出し、サブルーチンの最後に書くRETURN命令で、呼び出し元の次の命令に戻ってくる。 X=10:Y=5:P$="こうげき":GOSUB @LPRINT X=10:Y=6:P$="にげなきゃだめだ":GOSUB @LPRINT X=10:Y=7:P$="おかねだいじに":GOSUB @LPRINT END '←プログラム終了 @LPRINT LOCATE X,Y:? P$ RETURN
0そうだね
プレイ済み
返信[50]
親投稿
ΖΕΧ ZEX256
↑このサブルーチンを使うには、事前に変数をセットしないといけないので面倒だ。 そんな時は、自作の命令があれば便利だ。 自作命令はDEF~ENDの組み合わせで書く 命令に引き渡す引数がある場合は、命令名の後ろに書く DEF 命令名 [引数1][,引数2][,引数3]・・・ 命令の処理 END
0そうだね
プレイ済み
返信[51]
親投稿
ΖΕΧ ZEX256
LPRINT 10,5,"まほっ" '←自作命令LPRINT LPRINT 10,6,"プログラミング言語全てわかるマン" LPRINT 10,7,"舛添要一の朝までファミコン" END '←プログラムの終了 DEF LPRINT X,Y,P$ '自作命令 LOCATE X,Y:? P$ END '←自作命令の終わりで、コール元に戻る
0そうだね
プレイ済み
返信[52]
親投稿
ΖΕΧ ZEX256
命令を自作できるなら関数も自作できる。 DEF~ENDの組み合わせで、関数名の後ろに括弧を書き、引数がある場合、括弧の中に書く。 関数は戻り値があるのでRETURNの戻り値を書く DEF IS_ODD(VALUE) '自作関数 奇数判定 RETURN VALUE AND 1 '←引数が奇数なら1、偶数なら0を返す END '↑自作関数、自作命令は処理の前に書くこともできる、この場合、呼び出すまで中身は実行されない ? IS_ODD(5) '自作関数の戻り値を表示している ? IS_ODD(10)
0そうだね
プレイ済み
返信[53]
親投稿
ΖΕΧ ZEX256
自作命令・関数内で独自に変数を使った場合、偶然呼び出し元で使っている変数と名前が被ってしまいバグになることがある。 例えばこんな場合だ。 X=10:Y=5 '←呼び出し元では変数X,Yを使っている ICHIGO_GO '←自作命令を呼ぶ LOCATE X,Y:? "できるかな?" DEF ICHIGO_GO '←自作命令 SPSET 0,0 '←スプライト0番に苺を設定・表示 FOR Y=0 TO 240 STEP 16 '←変数Yを使った FOR X=0 TO 400 '←変数Xを使った SPOFS 0,X,Y '←苺のスプライトの表示位置を変更する NEXT NEXT END
0そうだね
プレイ済み
返信[54]
親投稿
ΖΕΧ ZEX256
この場合、自作命令を呼んだとき変数X,Yが書き換わってしまい LOCATE X,Yが正しく実行できずエラーになってしまう。 こんなことにならないために、自作命令・関数内で変数を使う場合はローカル変数を作り、それを使う。 A=1:B=2 SETA:SETB ? A,B DEF SETA A=10 '←呼び出し元の変数Aを壊してしまう END DEF SETB VAR B '←ローカル変数Bを宣言 B=20 '←ローカル変数Bを変更しても呼び出し元の変数Bは変わらない END これを実行すると 10 2 と表示される
0そうだね
プレイ済み
返信[55]
親投稿
ΖΕΧ ZEX256
自作命令・関数からネストして自作命令・関数を呼び出すこともできる。 自作命令から、自分自身の関数を呼び出すことも当然できる。 これを再帰呼び出し(リカーシブコール)と呼ぶ。 COUNT_DOWN 10 '自作命令呼び出し DEF COUNT_DOWN CNT '←カウントダウン表示命令 VSYNC 60 '←1秒くらい待つ ? CNT '←カウント表示 IF CNT>0 THEN '←カウントが0より大きければ CNT = CNT -1 '←カウンデウン COUNT_DOWN CNT '←再帰呼び出し ENDIF END
0そうだね
プレイ済み
返信[56]
親投稿
ΖΕΧ ZEX256
再帰呼び出しでは、終了条件を正しく判定しないと無限に再帰呼び出ししてしまい、メモリが不足してエラーになる。 (命令・関数・サブルーチン呼び出しはメモリを消費するため、帰ってこないとメモリが開放されないためメモリが不足になる。) 次回は配列変数から
0そうだね
プレイ済み
返信[57]
親投稿
Yamaneshi Gakuzirou
頭がなかなか入らん...。
1そうだね
プレイ済み
返信[58]
親投稿
STiNGER STiNGER8901
プログラミングは「習うより慣れろ」。 実習、実践を通して身につけるのです。 とにかく試しまくってください。
1そうだね
プレイ済み
返信[59]
親投稿
ここと、wikiを言ったり来たりしてますわw
2そうだね
プレイ済み
返信[60]
親投稿
Yamaneshi Gakuzirou
たしかに対応できます。「習うより、慣れろ」
0そうだね
プレイ済み