Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
157 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
次のページ(過去)
返信[17]
親投稿
otta777 otta777a
Ans.2はINSTRという関数をサポートしているBASICで使用できる 方法です。文字列を左から見て指定位置以降から最初の指定 文字の位置を取得して表示する方法です。指定文字が無い 場合は-1が返ってきます。こちらも0が1文字目になるため+1を しています。そして次に検索を開始する位置を右に1つずらす 処理も兼ねていますこれをしないといつまでも同じ位置 ばかりを表示してプログラムは終了しません。 WHILE TRUE~WENDでループを組み、IF文で指定文字が無い ときにBREAKでループを抜ける仕様になっています。 メリットは一文字ずつ比較をするのでは無く検索対象の 文字の位置を調べるのでループの回数が少なくて済みます。
0そうだね
プレイ済み
返信[16]
親投稿
otta777 otta777a
Ans1は1番一般的な方法だと思います。MID$で一文字ずつ 左から文字を比較していってカンマだったら表示をします。 大抵のBASICではMID$をサポートしているのでこちらの方法が 一般的だと思いますが文字列が長くなった分処理時間が 掛かります。 I+1としているのはプチコンでは開始位置の指定が0からと なっているため開始位置0=1文字目となるからです。
0そうだね
プレイ済み
返信[14]
親投稿
otta777 otta777a
お待たせしてしまいましたが正解のプログラムを発表させていただきます。詳しい説明はPCから書き込むので以降のコメントにて。
0そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
たくさんのお答えありがとうございました。申し訳有りません。家庭の事情で回答とレスを書いている時間がとれません。後日書かせていただきます
3そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
残念ながらPROJECT命令はダイレクトモード専用のコマンドです。 プログラム中では使用できません。
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
>まーくんさん HELPの右側のスライドバーが下にスライドできる場合はスラスト パッドの上下でHELP全体が見渡せますよ。
0そうだね
プレイ済み
投稿
otta777 otta777a
私も一問フチコンクイズを出してみます。入力した文字列の中のカンマの位置を全て表示しなさい。ネタバレチェックを入れてくださいね。難易度は★★★★☆かな。
5そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
>まーくんさん GSAVEで使用する配列変数は事前に宣言が必要なので DIM GS%[0] として下さい。 %はこの変数が整数型という宣言です。この方が使用する メモリーが半分で済みます。
0そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
グラフィック系は苦手なんで試行錯誤してなんとか描けました。(^^;;;
1そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
表示する座標とキャラクター番号をREAD命令で読んで表示って ことでいいのかな? WHILE TRUE READ X,Y,CHR IF CHR<-1 THEN BREAK BGPUT 0,X,Y,CHR WEND DATA 0,0,167,0,1,199,0,2,231,0,0,-1
0そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
GSAVEで配列変数に取り込みできますよ。 使用する配列変数は整数型にした方がメモリが節約できます。
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
REPEAT PRINT ”えんのめんせきをけいさんします。” INPUT ”えんのはんけいをにゅうりょくしてください(mm) ",R IF R<=0 THEN PRINT ”はんけい0mmいかのえんのめんせきは、けいさんできません。” UNTIL R>0 A1=R*R:A=A1*PI() PRINT ”はんけい";R;"mmのえんのめんせきは” PRINT A;"へいほうmm (";A1;"πへいほうmm)です。” 半径と面積の単位を明示することと半径が0以下の場合に エラートラップをするのがこの問題の狙いだと感じましたが いかがですか? 製図とかですと単位がmmなんでこうしました。
0そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
ひねってみたその2 A=0 @LOOP INC A ON A==10 GOTO @LOOP 条件非成立の場合FALSE(数字は0)と評価されるのを 利用しました。 WHILE~WENDやREPEAT~UNTILはラベルを使わずに済むので シンプルに書けますよね。
2そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
>けいさん VSYNC 60で1秒の時間待ちは出来ますけどお題にFOR~ NEXTを使うとあったんでこんな形にしてみました。 あと昔のBASICだと簡単に時間を計る機能が無いBASICも あったんでFOR~NEXTのループ回数を調整して時間待ちの 処理をしてたってネタを語りたかっただけなんです^^;;;
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
FOR~NEXTを使ってという事だったんでこんな感じで。 WHILE TRUE PRINT ”こんにちは” FOR I=1 TO 60 VSYNC 1 NEXT WEND VSYNCやWAITが無いBASICだと1秒になるループ回数を調整 するんですけどプチコンではその必要はありませんね。
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
VSYNC 4ですと移動スピードは1秒間で15ドット程度なので かなり遅く感じると思います。VSYNC 1に変更すると今度は アニメーションの切替も早くなるためにアニメっぽく見えなくなって しまうと思います。 メインルーチン内に CT=CT+1:IF CT==4 THEN CT=0 を追加してCTが0の時にスプライトの番号を変更するとVSYNC 4で アニメさせていたときと同じくらいの速度でキャラクターが 切り替わるようになります。
0そうだね
プレイ済み
返信[14]
親投稿
otta777 otta777a
誤) FOR I=0 TO LEN(MES$)-1:CH=ASC(MID$(MES$,I,1):GOSUB @DSPCHR:NEXT:RETURN 正) FOR I=0 TO LEN(MES$)-1:CH=ASC(MID$(MES$,I,1)):GOSUB @DSPCHR:NEXT:RETURN かっことじが1つ抜けていました^^;;;
0そうだね
プレイ済み
返信[13]
親投稿
otta777 otta777a
投稿できる行数越えちゃったんで@DSPMESは詰めちゃいましたが こんな感じにしていました。プチコン自身の処理速度が速いんで 気になるほどでは無いかと思います。 自分がこれを使ったのは色情報込みの画面の部分スクロールを 実装したかったからです。 誤) IF CY>24 THEN CY=24:?  正) IF CY>29 THEN CY=29:?
0そうだね
プレイ済み
返信[12]
親投稿
otta777 otta777a
プチコンではその機能がありません。 自分がmkIIの時にやったのは仮想VRAMに書き込んで参照する 方法です。 DIM CHR[50,30],DIM ATR[50,30] MES$="HELLO WORLD":FC=15:BC=0:GOSUB @DSPMES @DSPCHR CHR[CX,CY]=CH:ATR[CX,CY]=FC+BC*16 LOCATE CX,CY:COLOR FC,BC:? CHR$(CH); CX=CX+1:IF CX>49 THEN CX=0:CY=CY+1 IF CY>24 THEN CY=24:? RETURN @DSPMES FOR I=0 TO LEN(MES$)-1:CH=ASC(MID$(MES$,I,1):GOSUB @DSPCHR:NEXT:RETURN
0そうだね
プレイ済み
返信[11]
親投稿
otta777 otta777a
1つめの数字を入力した後に WHILE BUTTON(0)!=0:WEND を入れてAボタンのオフチェックを取ると良いと思います。
0そうだね
プレイ済み