Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
18 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2872
次のページ(過去)
返信[13]
親投稿
otta777 otta777a
CH=CHKCHR(X,Y) IF CH!=0 THEN X=OX:Y=OY LOCATE OX,OY:PRINT CHR$(0); LOCATE X,Y:PRINT A$; VSYNC GOTO @LOOP あ、BUTTON関数の前に@LOOPのラベルを付けるのを忘れてたんで 追加してくださいね。 キャラクターを消す場合は” ”(空白)ではなくCHR$(0)を使いましょう。 ACLSやCLS命令を実行すると画面はCHR$(0)で埋め尽くされます。 表示してたキャラクタを消すのに" "(空白)を使うとCHKCHR関数で キャラクタコード取得した場合に見えない障害物があることになってしまいます。
2そうだね
プレイ済み
返信[12]
親投稿
otta777 otta777a
少しずつ直していきましょうか。 まず、BUTTON関数で取得した情報で移動方向と車の向きを決めるところですが 移動をする前に今のプレイヤーのX,Y座標を記憶しましょう。 A=BUTTON(1):OX=X:OY=Y IF A==1 THEN Y=Yー1:A$="↑":IF Y<0 THEN Y=OY IF A==2 THEN Y=Y+1:A$="↓":IF Y>29 THEN Y=OY IF A==4 THEN X=Xー1:A$="←":IF X<0 THEN X=OX IF A==8 THEN X=X+1:A$="→":IF X>49 THEN X=OX 座標が画面の外に出てしまう場合は移動前の位置に戻しましょう。 矢印↑↓←→は車の向きだと思って下さい。
1そうだね
プレイ済み
返信[8]
親投稿
otta777 otta777a
○の部分を配列変数にするのはどうでしょうか? '段取り部分 DIM X0[n],X1[n],Y0[n],Y1[n] FOR I=0 TO n-1 READ X0[I],X1[I],Y0[I],Y1[I] NEXT DATA 5,0,3,0,… '判定部分 FOR I=0 TO n-1 IF XX+X0[I]==X+X1[I] && Y+Y0[I]==YY+Y1[I] THEN ~ NEXT
0そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
ボタン入力時にX,Yの座標を記憶しておいて移動先に障害物があるか どうかをCHKCHR関数で調べて障害物があった場合はX、Yの座標を 記憶していた座標に戻すようにするのはどうでしょうか?
2そうだね
プレイ済み
返信[11]
親投稿
otta777 otta777a
2番線発引き込み線経由1番線到着でも良ければ…
1そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
ボタンを押した場合にGOSUBした後にBREAKでWHILE~WENDを 抜けているためVSYNCを経由していないのが気になりますが ループを抜けた後のGOTO @ECCの飛び先でどんな処理をしているのかが 分からないんでこれが影響しているかどうかは分かりません。 またボタンの同時押しをした場合BREAKでループを抜けているため 上、右、下、左、L、Rの順で優先されます。
1そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
SPCOL命令でマスクを0にすればどのスプライトとも衝突したとは みなされなくなります。
2そうだね
プレイ済み
返信[16]
親投稿
otta777 otta777a
整数型を使うメリットの一つにDAT形式で配列変数をセーブしたときに ファイル容量を半分に出来る事っていうのがありますね。 32ビット符号付き整数で収まるデータなら実数型配列変数の半分の ファイルサイズになります。 GSAVEで画像を配列変数にコピーしてファイルにセーブする場合は お勧めの方法です。
1そうだね
プレイ済み
返信[44]
親投稿
otta777 otta777a
740行目のSPSET 0,X,Y,-255とあるけどSPOFSの間違えでは?
3そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
コンソール文字で表示するのでしたらこんなのはどうですか? WINDOWS 開始X,開始Y,ウインドウ幅,ウインドウ高さ,枠のタイプ,枠の色,中の文字を消去フラグ (開始X,開始Y)の位置から幅、高さの大きさのウインドウを表示する。 枠のタイプに0を指定すると枠が消去される。 中の文字を消去フラグをTRUEにするとウインドウの中の文字は 消去されるが、FALSEにすると枠だけ表示する。
0そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
STARTボタンやSELECTボタンをプログラム実行中に押すと STOPキーを押したのと同じ扱いになり、プログラムの実行が中断します。 プログラムの実行を中断する事を「ブレイクする」と表現するため 「Break on スロット番号:行番号」と言う表示でどこを実行中だったか 表示しています。
2そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
1)無限ループとなっているWHILE~WEND間で変数B1に BUTTON関数の戻り値を代入してAボタンを押したときに ラベル@AにGOTOする。 2)ループ処理を継続する条件をB2==BUTTON(2)としているが 変数B2は0のままなのでBUTTON関数で0以外の戻り値が返った 場合にループを抜けそれ以降のプログラムを処理する。 変数B2に代入する処理が無いため15行目の条件は成立する事はありません。
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
ACLSはスプライトやBGの画像データをSYSプロジェクトから読み込むため 時間の掛かる処理です。ループの外に記述しないと画面がちかちか 点滅してしまいます。ラベルの前にACLSを記述しましょう。 DATE$,TIME$の表示桁数は固定なのでループ内に記述されている ACLSをLOCATE 0,0に変更して文字を上書きをするように変更して PRINT命令の後にVSYNCを追加して同期を取るようにしましょう。
3そうだね
プレイ済み
返信[31]
親投稿
otta777 otta777a
ユーザー定義関数内で使う配列変数を整数型で宣言するとファイルの サイズが半分に抑えられますよ。 特に指定をしない場合は実数型の変数となって1ドットあたり8バイトの データになってしまいます。 整数型の場合は1ドット当たり4バイトで済みます。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
このプログラムを実行すると十字ボタンで操作した方向にスプライトが 移動して見えるようにBGがスクロールするようになっていますが これを具体的にどうしたいのでしょうか?
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
あと688行目の条件は684行目の処理のため成立しないので 削除して良いと思います。 またMEM1$[SYS_TSK_NOW]はFOR命令の前で文字列変数に 代入してFOR~NEXT間はその文字列変数を参照すると良いかと 思います。
1そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
685行目でMID$関数を使って1行分を取り出ししようとしていますが MID$関数では取り出す開始位置と文字数を指定する必要があります。 変数TSK_NPD_ENCLにはCHR$(13)の改行コードがあった位置が 格納されているのでこれを文字数として使用すると2行目以降は それ以降の文字も含まれてしまいます。 MID$関数の第3引数を TSK_NPD_ENCL+1-TSK_NPD_STT としてみて下さい。
1そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
設定で選べるようにしてしまうのはどうでしょうか?
4そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
今エラーが発生しているプログラムはそれより前にあるデータを 読み込むためのプログラムで間違いなさそうです。 貼ったスクリーンショットより更に前にこの形式のデータが続いていると 思うのでこのデータの頭の部分にラベルを付けてRESTORE命令で そのラベルを指定すればエラーは出なくなると思います。
1そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
RESTOREで指定するラベルに間違いは無いですか? 112行より前にこのREAD命令で指定した内容のデータがあるのでは 無いかと推測されますが、その部分のスクリーンショットは貼れますか?
1そうだね
プレイ済み