Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
152 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
次のページ(過去)
返信[8]
親投稿
otta777 otta777a
あわわ、間違えていました。 IN$=INKEY$():IF IN$!=“” && ASC(IN$)==13 THEN BEEP になります。 比較演算子を間違えて記述していました。
0そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
IF INKEY$()=="" && ASC(INKEY$())==13 THEN BEEP と記述するとオートリピートするまでの間は押しっぱなしでも キー入力が無いのでエラーになってしまいます。 IN$=INKEY$():IF IN$==“” && ASC(IN$)=13 THEN BEEP として一度変数に保存をして比較して下さい。
0そうだね
プレイ済み
返信[66]
親投稿
otta777 otta777a
表示している文字を消すということは空白で上書きをすれば OKです。簡単に消すなら空白の文字列を文字を表示している 位置に表示します。CLSをしたときと同じように消す場合は CHR$(0)の文字列を表示して下さい。 見た目は同じなんですがCHKCHR関数で調べたときに空白だと 32が返ってきます。
1そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
一番簡単だと思われる方法は配列変数に通路か壁かの情報を 保存し、移動するときに移動先の情報を参照する方法です。 0なら通路、1なら壁とすると分かりやすいと思います。 迷路の表示もその情報を参照し、壁があるときにキャラクターや BGを表示すればOKです。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
WHILE 1 OBU=BU:BU=BUTTON(0) IF (OBU AND 48)!=48 AND (BU AND 48)==48 AND (BU AND 15)==0 THEN BEEP VSYNC 3 WEND 押しっぱなしにした場合になりっぱなしにならないため前回の ボタン情報をチェックしていますが==0にしようか!=48にするか 迷いました。ANDでチェックするボタン情報を抜き出して 比較しています。
0そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
画面に文字を表示する場合はPRINT命令を使用します。 タイトルやメッセージを表示する場合はその内容を”(数字キーの 2と3の間の上側にある紫色の記号でダブルクォーテーション と呼びます)で挟んで下さい。 例 PRINT "Aボタンをおすとゲームスタート”
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
自分がASC(INKEY$)を使う時はASC(INKEY$+CHR$(0)) としてエラーを回避しています。ASC関数は文字列の 1文字目のアスキーコードを返すのでこの場合、何らかの 入力があればその文字のアスキーコードを、入力が無い場合は 0を返します。 CHR$(0)はキーボードから入力できない文字なので0が返って きた場合は入力が無いと判断できます。
1そうだね
プレイ済み
返信[61]
親投稿
otta777 otta777a
方法はいくつかあります。一番簡単なのがINPUT命令で文字列に 対応する数字を入力させる方法です。 PRINT "1.こくご 2.さんすう 3.りか 4.しゃかい" INPUT ”きょうかめいは”;A 他にはドラクエのように十字ボタンで矢印を上下してAボタンで する方法です。(続く)
1そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
まげさんが最初に提示したプログラムはAボタンが押されるまで ボタン入力の監視を続けるプログラムだったため、その後に 記述したPRINT命令の内容はプログラムを実行しただけでは 表示されなくなってしまいました。 その時にAボタンを押せば表示されていたと思います。
0そうだね
プレイ済み
返信[59]
親投稿
otta777 otta777a
もし文字列変数が使えず文字列定数しか扱えないとすると 名称などを扱おうとしたときに非常に煩雑なプログラムが 必要になります。 A$に教科名を代入してPRINT A$で表示する部分も Aに教科名に対応する数字を代入して IF A==1 THEN PRINT "こくご ” IF A==2 THEN PRINT ”さんすう” IF A==3 THEN PRINT "りか  ” IF A==4 THEN PRINT "しゃかい" としなくては表示できなくなります。 文字を扱う必要がある場合に簡潔に表記するためには 文字列変数は必要な機能でした。
1そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
分かりやすく記述するならA←A+1がいいかなと思いますが 昔のパソコンには標準では←の記号はありませんでした。 どのパソコンでも共通で使える文字はアルファベット、数字 一部の記号だったのですが←の記号はグラフィックキャラとして 一部のパソコンで使える程度だったんで採用されなかった のだと思います。
1そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
>ゆうたんさん スプライトの色はSPCOLORで明るさが操作できるので そういう方法も良さそうですね。 思いつきでGSAVEした配列の中身をいじったら明るさを変えて GLOADできるかなって気になってプログラムを作ってました。
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
SAVE命令でGRPリソースをセーブすると1ドット辺り2バイト必要 ですが整数配列変数を使用すると1ドット辺り4バイト必要なので サイズが大きいとかえってファイルサイズが大きくなってしまいます。 記録するサイズがある程度小さくないと整数配列を経由する 方法は旨みが無いですね。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
画面全体をSAVEすると512KBとなり上記の方法で 512ドット×256ドットを記録した場合とほぼ同等のファイル 容量になります。上記の方法で512KB以上のファイルに なるようでしたらグラフィック画面を直接SAVEしてください。
0そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
スプライトやBGの一部しか設定していないのでしたら容量 節約の方法としては使用しているスプライトやBGを矩形範囲 指定でGSAVEで配列変数に取り込みSAVE命令でその配列 変数をセーブするようにすればファイルの容量は減ります。 DIM PTN%[0] GSAVE 4,0,0,512,16,PTN%,1 SAVE "DAT:TEST.GRP",PTN% でセーブしておいて ACLSをした後に LOAD "DAT:TEST.GRP",PTN%,FALES GPAGE 0,4 GLOAD 0,0,512,16,PTN%,1,TRUE でセーブしたスプライトを呼び出せます。
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
分かりやすい方でいいと思いますよ。標準的なBASICですと INC/DECが使えないためA=A+1と記述します。 他の言語でINC/DECを使ってる方はこちらの方が馴染みが あるので好んで使われるのかも知れませんね。
2そうだね
プレイ済み
返信[56]
親投稿
otta777 otta777a
自分もPRINTは?で代用可能と教えられた世代なので詳しい理由は 分かりません。 昔のコンピュータはスプライト、BG、グラッフィックも搭載されて おらず画面表示はPRINT位しか手段がありませんでした。 そのためPRINT命令は頻繁に使う命令だったので入力文字数を 減らすために一文字の記号の?に置き換えたのだと思います。 プチコン以外のBASICですと?を入力してもLISTを表示すると PRINTに書き直されるものが多いです。
1そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
プログラムからプロジェクトを切り替えると書かれていましたので ユーザー定義命令だと判断し、プログラムの1行目にPRJ_TESTを 挿入してダイレクトモードからプログラムを実行しました。 ダイレクトモードでユーザー定義命令を呼び出した場合は プログラム実行中と判断されてないのですかね。 これは知りませんでした。
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
動作チェックはされましたか? 5行目のPROJECT P$でCan't use in program で停止します。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
まずAボタンを押したらTALKが作動するコマンドはありません。 Aボタンが押されるまでボタンのチェックを繰り返し Aボタンを押されたことを確認出来たらTALK命令を実行する プログラムを作る必要があります。 @A IF BUTTON()!=16 THEN GOTO @A TALK "こんにちわ” これだけのプログラムが必要です。
0そうだね
プレイ済み