Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
155 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
次のページ(過去)
返信[2]
親投稿
otta777 otta777a
>レインさん 1回ボタンを押しただけなのに入力は何回も押したように認識される 事をチャタリングと言います。 このプログラムではVSYNCやBUTTON(2)等の押された瞬間を検出 する命令は使用していませんがAボタンを押したら1回だけカウントを するようになっています。 WHILE BUTTON(0)!=0:WENDの行の頭にREMを記述して コメントアウトするとAボタンを押したときにもの凄い勢いで カウントをします。 WHILE BUTTON(0)!=0:WENDがボタンが押されていないことを 確認するオフチェックの機能をしています。
0そうだね
プレイ済み
返信[24]
親投稿
otta777 otta777a
>こうやまさん 昔のBASICは変数名の文字数が1~2文字という制限があったため 命令と変数名をくっつけて書いてもそんな長い変数名は処理 できない為命令と変数名と判別されるんですよね。 例 FORI=1TO5 FORIという変数は処理できない為FOR命令と変数Iと判別可能 変数の文字数の制限が緩くなって命令と変数名をくっつけて 記述した場合に全体が変数名と編別されるようなりました。 命令語を含む変数名を使用できない仕様ならくっつけて書いても 判別できますが変数名の命名の自由度が下がり可読性も落ちる ためメリットよりデメリットが大きくそのような仕様にならなかった のだと思います。
0そうだね
プレイ済み
投稿
otta777 otta777a
チャタリング防止機能付きボタン入力のサンプルプログラム
4そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
プログラムを実行した人が入力したコメントに反応して コンピューターがコメントを返してくれるプログラムってことで いいのでしょうか? この場合は入力したコメントをチェックしてコンピューターが返す コメントを選ぶ処理を延々と記述して選んだコメントを表示する 処理を繰り返す事で実現できそうです。 入力したコメントを単語単位で解析したり文法を解析すると より自然なコメントを返せるようになると思いますが 膨大な日本語の解析処理が必要になると思います。 特定の単語や文法に反応する程度ならもう少し簡単に 実装できるとは思います。
0そうだね
プレイ済み
返信[17]
親投稿
otta777 otta777a
他の方のプログラムを見てコロンが省略可能なことが分かりました。 【例】 FOR I=0TO 20A$=CHR$(32+I)NEXT 数字や記号の後に命令や変数名を記述する場合はスペースや コロンを省略しても判別が付くため省略できるようです。 20A$という変数が使用できるわけでは無いのでこのような 省略の仕方は人間が誤読する原因になることもあります。 プログラム作成者の考え方にもよりますがコロンはどうしても 省略したいという状況で無い限りは省略しない方がいいと 自分は考えます。
1そうだね
プレイ済み
返信[16]
親投稿
otta777 otta777a
>nobuさん 変数名の規則はアルファベット、数字とアンダーバーが使用可能で 数字から始まらない事となっています。 つまりPRINT2は変数名と判別されます。 スクリーンショットに貼った以外にもパラメーターを省略して 命令の直後にカンマを記述する場合はスペースを省略可能です。 【例】 LOCATE,5 関数の後に命令などを記述する場合はかっこで区切りが 分かるためスペースが省略可能です。 【例】 IF BUTTON(0)THEN END プチコン3号ではプログラム容量も十分ありますし横画面も広く 行の折り返し機能もあるので可読性を犠牲にしてスペースを 詰める必要はあまり感じません。
1そうだね
プレイ済み
返信[13]
親投稿
otta777 otta777a
>nobuさん スペースで区切らないと全体が変数名なのか命令と変数名なのか判別できません。変数名に使えない記号の(),@¨等を命令のあとに続けて書く場合はスペースを省略できます。
1そうだね
プレイ済み
返信[12]
親投稿
otta777 otta777a
>nobuさん 空白や改行はBASICがプログラムを解析するときに僅かですが 時間がかかるだけでプログラムの処理内容に影響はしません。 同じ内容の本を空きページが紛れ込んでいる本と空きページが無い 本を最初から最後まで読むのにどちらが早く読めるか考えれば 分かりやすいでしょうか?
1そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
スクリーンショットの方が分かりやすいかな?桁あわせをした方が見やすく感じませんか?
3そうだね
プレイ済み
返信[8]
親投稿
otta777 otta777a
途中にスペースが1個だったり2個だったりする場合があるとの ことですが位置合わせのためにあえて空白を入れている場合が 考えられます。 改行だけの行があるのは処理の区切りが分かりやすいように するために入れる方がいますね。 【1】桁合わせ無し LOCATE 3,2:COLOR 15:PRINT "AAA" LOCATE 15,21:COLOR 2:PRINT "BBB" 【2】桁合わせ有り LOCATE 3, 2:COLOR 15:PRINT "AAA" LOCATE 15,21:COLOR 2:PRINT "BBB" INPUT "COMMAND:";CMD
1そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
>nobuさん 複数のスペースがまとめて入っているのは対になる命令が複数 使用されていた場合にどの命令がどの命令の対なのかを 分かりやすくする目的があります。 CLS FOR I=1 TO 9 PRINT I;"のだん" FOR J=1 TO 9 PRINT I;"×";J;"=";I*J NEXT WHILE BUTTON(2)!=0:WEND PRINT NEXT END
1そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
プチコン3号の命令にはFOR~NEXT、WHILE~WEND、REPEAT~ UNTIL、IF~THEN~ELSE~ENDIFなど対で使う命令が有り どの命令がどの命令と対になっているかを分かりやすくすると プログラムが読みやすかったり、解析しやすかったりします。 REM文でコメントを付けてどことどこが対になっているかを記述する 方法もあります。それ以外にも字下げという命令の前に空白を 入れる方法があります。 どの命令とどの命令が対になっているかを見やすくするために 考えられた記述方法です。BASIC以外のプログラミング言語でも この方法は広く使われています。
1そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
A=RND(6) B=(A>3) ?B AはRND関数で0~5の整数が代入されます 0~5の整数のうち0~3は0、4か5の時は1ということは条件と してA>3が同等の条件となります。 プチコン3号では条件が成立すると1となるのでこれをBに 代入して表示します。 表示するだけでいいということなら変数Bへの代入もやめて A=RND(6) ?(A>3) と短くできます。
0そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
前のコメントの1行目のOSFXの記載はOFSXの間違いです。 ミスばっかりですいません。
0そうだね
プレイ済み
返信[8]
親投稿
otta777 otta777a
OSFX DIV 16としているのはBGOFSではドット単位、BGPUTでは BGチップ単位で座標を指定しているためです。 BGPUUTと記載してしまいましたがタイプミスです。 正しくはBGPUT 0,X+OFSX DIV 16,Y+OFY DIV 16,33
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
BGOFSでオフセットを掛けると画面左上がBG画面のオフセットを 掛けた位置になります。BGOFS 0,64,32とするとBGレイヤー0は X座標64,Y座標32が左上になります。この状態の時に画面の 中央にBGを表示させようとBGPUT 0,192,112,33とすると 左上にずれた位置にBGが表示されたと思います。 BGレイヤーにオフセットを掛けた分、表示位置をずらして指定 しないと画面上では劣った位置には表示できません。 実際にBGを表示したい座標をX,Y BGOFSで指定したオフセット位置:OFSX,OFSY とした場合BGPUUT 0,X+OFSX DIV 16,Y+OFY DIV 16,33 とすればオフセットが掛かった状態でも位置がずれません。
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
TOUCH命令で画面をタッチした時間、タッチした画面の座標が 取得できます。 タッチした位置がボタンの右上座標とのボタンの左下の座標の 間にある場合はそのボタンが押されたと判定できます。 この判定ボタンの数だけ行えばタッチ画面で数字や記号の 入力が行えます。
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
ACLSのヘルプを見ると解説されていますがLOAD命令でGRP4にSP GRP5にBGの初期データーを読み込むようになっています。 SMILETOOL等で作成したBGやSPはACLS命令で初期化されて しまうため保存を忘れずにしてくださいね。 せっかく時間を掛けて作ったキャラクターが消えたら悲しいですし。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
以前自分もこれでなんで押した瞬間の入力が何度も取得 されるのか悩みました。 BUTTON(2)で押した瞬間1回だけボタンを押した状態取得を するはずが連続でボタンを押した状態が取得されて期待通りの 動作をしません。 プチコンの仕様でボタンを押した瞬間を取得するように指定しても 1フレームの間は返り値が変更されないためVSYNCで同期を 取らないと同じ入力状態を取得します。 VSYNC 1を入れるとボタンを押した瞬間だけ押した状態が 取得できるのはこのためです。
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
>printfさん この現象を利用すると逆スクロールのレースゲームとか、 スキーゲームがSCROLL命令の無いBASICでも組めるので 重宝しました。
2そうだね
プレイ済み