Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
123 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4378
次のページ(過去)
返信[12]
親投稿
MIKI★さんへ それは、MIKI★さんが大きな配列をよく使うためで、実数型で500個、文字列で2000文字程度なら気にしなくても良いのではありませんか? 理由:以前、メモリリークが4Kバイト単位で発生していたので、メモリ管理の最小単位が2Kか4Kと推測しました。(それ以上の大きさの場合のメモリ管理方法はわかりませんが・・・)
0そうだね
プレイ済み
返信[3]
親投稿
悪い点 1)自分の手に負えないほど、難しい課題に挑戦すると挫折することが多いです。 2)人によって、なれるまでの時間が違うので、他の人と比較するとつらくなることがあります。(マイペースでやるのが良いかと思います。) 3)なれてくると、面白くてやめられなくなり、まわりの人に怒られることがあります。(プチコンは時間泥棒だという人もいます。)
1そうだね
プレイ済み
返信[2]
親投稿
良い点 1)作ったプログラムが、自分の思った通りに動いたとき楽しいです。  数行の短いプログラムでも、けっこう楽しいです。そして、難しいプログラムの場合、出来上がるまでかなりつらい思いをしますが、その分うれしさも大きいです。ただし、途中で挫折することも多いです。 2)作る途中で、いろいろ調べたり、考えたりしたことが自分のかてになります。また、学校の勉強がむだでは無いことがわかります。 3)作ったプログラムを誰かに使ってもらえると、なんだかうれしい気持ちになります。 4)実用プログラムの場合、それを使って楽ができます。 つづく
0そうだね
プレイ済み
返信[7]
親投稿
これが出来ないとどんな「不便」があるのでしょうか。 教えてもらえると助かります。(不勉強で済みません。) ちなみに、ローカル変数にはならないようです。(サブルーチン定義の順番を入れ替えればエラーにならないためです。)また、名前の解決を1パスで行うための仕様だと思います。(実行開始が遅くなるのを避けるために、1パスになっていると思われます。)インタプリタ設計者の自由の範囲内かと思います。
0そうだね
プレイ済み
返信[20]
親投稿
別の例です。こんな書き方もあります。 例1)計算で曲番号を変える。 BGMSETD 128,0のラベル:BGMSETD 129,1のラベル:BGMSETD 130,2のラベル BGMPLAY RND(3)+128 例2)IF命令で曲番号に設定する曲を変える。 A=RND(3) IF A==0 THEN BGMSETD 128,0のラベル ELSEIF A==1 THEN BGMSETD 128,1のラベル ELSEIF A==1 THEN BGMSETD 128,2のラベル ENDIF BGMPLAY 128
0そうだね
プレイ済み
返信[16]
親投稿
前の曲が流れるのは、一瞬です。このプログラムの場合は、約1/60秒です。書き方によっては、一瞬すら鳴らないこともあります。
1そうだね
プレイ済み
返信[13]
親投稿
間違っていないと思います。 BGMPLAYは、同じトラック番号(省略時はトラック0)を指定すると、前の演奏を停止して、新しく指定された曲の演奏を始めます。 そのため、このプログラムの場合、0のときは0,1,2の曲を演奏しています。同様に、1のときは、1,2の曲を、3のときは3の曲を演奏しています。 この点を考慮して、やりたいことに合わせて、プログラムを修正すれば良いです。
0そうだね
プレイ済み
返信[4]
親投稿
FILLのヘルプを見ていたらオフセットと要素数の引数がありました。低次の配列要素を初期化するには、これを使えば良いですね。
2そうだね
プレイ済み
返信[2]
親投稿
もし、特定の次元(以下「N次」と呼ぶこととします)の要素番号を指定して、その他の要素番号全ての配列要素に特定の値に設定するという問題でしたら、(以下ユーザ定義命令作成を想定します。) N次を指定した引数にして、N次以外の次元についてFORループで特定の値を1つ1つ設定すれば出来ると思います。(時間はかかります。) もし、N次が最も大きな次元(最も左側に記述する配列要素番号)の場合には、低次の配列と同じ構造のローカル配列変数を作りFILLで値を設定し、それを、コピー先の位置を計算してCOPYすると単純に出来ると思います。 やりたいことと、違っていたらすみません。
1そうだね
プレイ済み
返信[4]
親投稿
最初は、 上画面に描くときは DISPLAY 0 下画面に描くときは DISPLAY 1 を実行した後で、描く処理を実行すれば、間に合うと思います。 みむさんの方法は、応用編ですね。
1そうだね
プレイ済み
返信[20]
親投稿
U,V,W,Hと言う名前は、グラフィック座標を指定するときに使うことが多いので、名前をそれらしい名前に出来れば間違えずに済んだかもしれませんね。名前の付け方が下手ですみません。
0そうだね
プレイ済み
返信[16]
親投稿
範囲外のエラーになるのは、10行目と13行目だと思います。 3つの場合が考えられます。 BGPUTの前に、DISPLAY 1でBGSCREENの指定しているでしょうか。 あるいは、レイヤー番号をXSCREENで指定したレイヤー数の範囲内になっているでしょうか。 サンプルのU,V,W,H,X,Yは、BGの個数を想定しています。U,V,W,Hにグラフィック座標としての値を指定したい場合は、ループに入る前にそれぞれ1/16すればうまくいくと思います。
0そうだね
プレイ済み
返信[13]
親投稿
BGを表示するユーザ定義命令を作って見ました。用途に合いそうでしたら、改造するなどして使って見てください。ネーミングセンスに問題があると思うので、命令名を適当な名前に変更してください。不明な点があれば、質問してください。
0そうだね
プレイ済み
返信[12]
親投稿
すみません。32×32と思い込んでいました。30×20用に修正しました。
0そうだね
プレイ済み
返信[10]
親投稿
Iをループ変数とする場合は、X,Yを計算で求め、X,Yをループ変数とする(入れ子)場合は、Iを+1ずつ増やせばいいです。
0そうだね
プレイ済み
返信[9]
親投稿
マギーさんの方法が、まっとうな方法だと思いますが、こんな方法もあります。
0そうだね
プレイ済み
返信[4]
親投稿
「一枚絵のように並べてあるBGをそのままの位置で表示する」が、何を意味するのかがわかりません。 クリッピングや移動をしなければそのままの位置で表示されているのでは?
0そうだね
プレイ済み
返信[2]
親投稿
考え方には、問題がないと思います。 試したところ、それなりに表示されました。
0そうだね
プレイ済み
返信[17]
親投稿
BGで描いた絵を、グラフィクでかくしてから、見える様にする例です。
1そうだね
プレイ済み
返信[16]
親投稿
VSYNC 1の前に DIALOG "I="+STR$(I)+CHR$(10)+"X0="+STR$(X0)+” ”+"Y0="+STR$(Y0)+CHR$(10)+"X1="+STR$(X1)+" "+"Y1="+STR$(Y1)+CHR$(10) の1行を入れて実行すると、ダイアログで表示する変数の変化と上画面の変化の対応が分かりやすくなるかもしれません。
1そうだね
プレイ済み