Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
156 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
次のページ(過去)
返信[1]
親投稿
otta777 otta777a
BGMCHKという関数がありBGM演奏中はTRUE、演奏が止まって いるとFALSEを返します。 BGMPLAYで演奏したトラック番号を指定するとそのトラックの演奏が 終わっているか確認出来ます。
0そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
44行のSPANIMがメインルーチンの外に記述されているため 実行されてません。ラベル@1の前の行に移動してみて下さい。
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
一つ提案なんですが「PUSH A BUTTON"を点滅表示する部分は READ命令で読み込んだデータを表示した後に個別で表示しては いかがでしょう? Aボタンが押されるまで点滅させる方法は色々ありますが 自分はループの中でカウンターを使ってメッセージの表示、消去を する方法を提案します。 ループの中で値を0~59までカウントしたら0に戻るという カウンター変数を設けてカウンター変数の値が0の時に表示、 カウンター変数の値が40の時に消去とすると点滅しているように 見えると思います。 ループの中にはVSYNC 1を入れてください。
0そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
昔アクションゲームのレバーとボタン操作を全部音声だけで行う ネタを思い出しました。 「右、右、右、上、左、下、下、下っ!撃て、撃て、撃て、撃て」 みたいな感じで。 波形で上、下、右、左が判別できればこういうゲームが作れるかも しれませんね。
1そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
エラーが出るプログラムでもセーブは出来ますよ。 その日は原因が分からなくても気分転換をしたら原因が 見つかることもあるんで途中でもセーブすることをお勧めします。 EDITモードではSAVEコマンドが実行されないのでDIRCTモードで SAVEコマンドを入力してセーブして下さいね。
1そうだね
プレイ済み
返信[34]
親投稿
otta777 otta777a
>けいさん 内部的なお話になってしまいますが、INSTR関数の場合は 目的の文字列が見つかるまでINSTR関数用のワークエリアを 使用して検索をしてると考えています。 FOR~NEXTでループを組んだ場合は中で使用している変数を 参照する場合に変数名から変数格納アドレスを検索して 参照するため、専用のワークエリアで計算するより遙かに 時間が掛かると思います。
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
85行目と95行目と98行目の表示命令の行の最後に セミコロンを付けます。 セミコロンを付けずにコンソール画面の一番下の行で表示をすると 強制スクロールするため表示が崩れます。 SX,SYの値が大きすぎるとエラーになってしまうんで 14行目の次に IF SX+W>50 OR SY+H>30 THEN ? "SX,SYのしょきちをかくにんしてください。”:END ENDIF も有った方がいいかな? ついでに14行目の後に IF SX>W>40 OR SY+H>20
0そうだね
プレイ済み
返信[29]
親投稿
otta777 otta777a
>IF J==LEN(SE$) THEN ? I;”もじめ” >I=I+LEN(SE$) は IF J==LEN(SE$) THEN ? I;”もじめ”: I=I+LEN(SE$) に読み替えて下さい。 うっかりしていました。
0そうだね
プレイ済み
返信[28]
親投稿
otta777 otta777a
FOR~NEXTで一文字ずつ調べていると文字数分オーバーヘッドが あるためINSTR関数が時間が掛かるような仕様で無ければ INSTR関数を使った方が処理時間は早いと考えます。 2文字以上の検索はMID$のみで処理をする場は二重ループで 検索する文字列を左から1文字ずつチェックして 途中で不一致だったらBREAKしてループを抜けたときに ループで使っている変数がループ回数と同じなら一致と判断 すればいいと思います。時間は掛かりそうですけど^^;;; @ANS_4 FOR I=0 TO LEN(S$)-1 FOR J=0 TO LEN(SE$)-1 IF MID$(S$,I,1)!=MID$(SE$,J,1) THEN BREAK NEXT IF J==LEN(SE$) THEN ? I;”もじめ” I=I+LEN(SE$) NEXT
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
表示位置はASAさんと同じくSPOFSで指定します。 自分の場合は配列変数にY座標の変化量を入れておいて ジャンプ中はその配列変数の内容をY座標に加算して 表示位置を変えます。配列変数の数値を最後まで加算した ときにジャンプ前と同じY座標になるように数値を決めます。 ジャンプ中は方向入力は無視してジャンプが終わるまでは ジャンプ前と違う方向に移動しないようにしたほうがいいですね。
1そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
文字列と変数を続けて表示する場合は記号が必要です。 文字列のすぐ隣に表示する場合は;(セミコロン)を付けて下さい。 あと最後の"(ダブルクォーテーションは不要です。これも変数と 文字列を連続表示するための記号が無いためにSyntax errorの 原因となっていますが何も表示する内容が記述されていないので 不要と判断しました。 ?"|";A で目的の表示をすると思います。
0そうだね
プレイ済み
返信[13]
親投稿
otta777 otta777a
>MGウッディー3さん プチコンではべき乗を求めるPOW関数があります。 A=5^2 は、プチコンでは A=POW(5,2) と表記します。
1そうだね
プレイ済み
返信[25]
親投稿
otta777 otta777a
>次に検索を始める位置は検索する文字列の文字数を >プラスしたい力行えばOKです。 は 次に検索を始める位置は検索する文字列の文字数を プラスした位置から行えばOKです。 に読み替えて下さい。
1そうだね
プレイ済み
返信[24]
親投稿
otta777 otta777a
今回のポイントはINPUT命令ではカンマは入力出来ないので どう入力をするかという事とカンマの位置をどのように解析 するかということでした。プチコンではINSTR関数という 便利な命令のおかげで一文字ずつ調べなくても目的の 文字の位置を取得できます。更にこの関数を使うと 2文字以上の文字列も検索が出来ます。 ユーザーが入力したコマンドの解析や入力項目数が 不定の複数のパラメーターを一度に入力させて処理が 出来るので便利な使い方が考えられると思います。 今回は皆様にお付き合い頂きまして嬉しく思いました。 つたない説明ではありますが皆様のお役に立てれば 嬉しいです。また機会がありましたらこのような クイズを出させて頂きます。 ありがとうございました。
3そうだね
プレイ済み
返信[23]
親投稿
otta777 otta777a
>pinfuさん 苦労された後がうかがえます。この問題は見方を変えると 入力した文字の中にカンマがあるかどうか1文字ずつ チェックをしてカンマが有ったらその位置を表示する と言う処理を入力した文字列の文字数分繰り返せば OKでした。コメントアウトしたMID$を使った方法は かなり正解に近かったですよ。INSTR関数を使う場合は カンマを見つけた位置以降の検索方法だと思います。 次に検索を始める位置は検索する文字列の文字数を プラスしたい力行えばOKです。 再投稿して頂いた方ではループ回数をLEN(A$)として 全文字検索文字列だった場合でも文字数分ループ するようになっています。この場合のFOR命令の指定は I=1 TO LでOKですよ。
1そうだね
プレイ済み
返信[22]
親投稿
otta777 otta777a
>でんぺんさん プチコン3号では文字列変数と文字配列変数に密接な 関係があることと変数と同名の配列変数が使えない のは詳しく説明はされていませんが仕様だと思います。 自分もAns.3では取説やヘルプには記載されていない 文字列変数にSHIFT関数を使って処理をしています。 解析部分はAns.1のパターンですね。
0そうだね
プレイ済み
返信[21]
親投稿
otta777 otta777a
>けいさん 最後の改行が無いと表示結果とプロンプトがくっついて 見辛かったんで1行空白行を入れました。 こちらも解析部分はAns.2と同じですね。 お見事です。プチコンにはINSTR関数という指定文字が 何文字目に有るかを返してくれる関数が有るためこのように 効率よく検索をすることが出来ます。
1そうだね
プレイ済み
返信[20]
親投稿
otta777 otta777a
>おかっぺさん INPUT命令ではカンマを入力出来ないのでINKEY$で文字入力の 処理を書いて下さいましたね。今回はLINPUT命令でカンマを 入力出来るのでここまでしなくてもOKでしたが、特定の文字 のみ入力を受け付けるようにしたい場合はこのような処理で 入力出来る文字を制限できます。 A$=A$+B$の前にB$の内容をチェックして入力出来ない文字の 場合はB$=INKEY$の前まで処理を戻します。 解析部分はAns.2のパターンですね。
1そうだね
プレイ済み
返信[19]
親投稿
otta777 otta777a
>ねこはちさん IF文を使わずに論理式を利用してカンマが有った時だけ 表示をするようにするテクは自分も思いつきませんでした。 1行でシンプルに収まっていてさすがですね。 一つ気になった点はFOR文のLEN(A$)はLEN(A$)-1としないと ASC関数を使うような場合はエラーになってしまいます。 ASC("")はプチコンではエラーとなってしまうためです。
1そうだね
プレイ済み
返信[18]
親投稿
otta777 otta777a
Ans.3はAns.1の変則技でSHIFT関数を文字列に使用すると 左の一文字を戻り値とした上に指定した文字列の左一文字を 削除してくれるという隠れ仕様があるのを見つけたため 使ってみました。 C$=SHIFT(S$) は C$=LEFT$(S$,1):S$=RIGHT$(S$,LEN(S$)-1) と同等の処理をします。 隠れ仕様という理由はHELPには配列に対しての説明しか 書かれていないためです。
0そうだね
プレイ済み