メインループの始めか終わりかで現在の時刻を取得して(TIME$)、前回取得時から1秒経過していたら表示を更新すればいいと思います。
0そうだね プレイ済み
BASIC を作るのは難しいので、ちゃんと説明書を読まないとダメです。
……と、これだけで1コメ消費するのも勿体ないので大サービスしますが、リンクさんが聞きたいのは、"BASICの組み方"ではなく、"プログラムの組み方"ですよね?
"BASICの組み方"なんて質問をすると、「ああ、この人は説明書読まないんだな」と思われても仕方ありません。
そして最初のうちは、プログラム作業の半分くらいの時間は説明書やリファレンスとのにらめっこになりますので……
まずはちゃんと説明書を読んでみてください。
2そうだね プレイ済み
ファンミーティング以外の予定、何にも考えてないなぁ。
やっぱり早めにいってスカイツリーに行ってみるべきなんだろか。
1そうだね プレイ済み
DLしようとしましたが、キーが誤っているといわれました
0そうだね プレイ済み
おめでとうです!
でも公開キーがないからどういう内容かあんまり分からないかも。
0そうだね プレイ済み
せっかくだから参加登録してきました。
普通にチケットが発行されたから、抽選じゃなくて先着順なのかな。
2そうだね プレイ済み
DLしました! すごい。
でも、何だかオプションでのキー設定に不具合があるような……
JUMP をBに設定して、ダッシュをL、インベントリをR、ブロック破壊をX、設置をA、に変更したのですが、何かよく分からない動きをする……
0そうだね プレイ済み
GOSUB したらRETURN しないといけません。
今回は、@CHOOSE 内でGOTO してしまっているので、そこでRETURN がされなくなってしまいます。
対処方法は色々とありますが……
1.GOTO @A する代わりに、GOSUB @A として、@A をサブルーチン化する(@A のところには、RETURN を加えてください)
2.GOTO @A する代わりに、「上下キーが押された」事を示すフラグ変数を準備して、それにチェックを入れる。
メインループ内で、そのフラグ変数をチェックし、もし上下キーが押されていたら、@A を呼び出す
などでしょうか。
0そうだね プレイ済み
どういう動きをさせたいのかにもよりますが……
とりあえず、まっさらな状態で、以下の命令を打ってみてください。
複数のスプライトを同時に動かすサンプルです。
ACLS
SPSET 0,378
SPSET 1,386
SPOFS 0,20,100
SPOFS 1,20,120
SPANIM 0,"XY",-300,200,100
SPANIM 1,"XY",-300,200,180
詳しいプログラムの説明をするには、余白とコメント残り数に問題があるので……
ヘルプを良く読んでみて、それでも分からなかったら聞いてください。
0そうだね プレイ済み
SPANIM を使ってはどうでしょう?
これは一度設定すると、後は勝手に目標地点までスプライトが移動します。
0そうだね プレイ済み
すみません、それなら話は簡単だと思うのですが、一体何が分からないのですか?
「ミス時にMAPの値を-1する」
「MYCNTを0にする」
この二つの作業をすれば大丈夫だと思うのですが……
0そうだね プレイ済み
>黒にする手段
まさに直近に行われるファンミーティングで、物品販売があって、それがおっさんほいほいで黒になる……?
0そうだね プレイ済み
ん、そのパターンなら問題はないですが、通常はOR と + は、やはり別にして扱った方がいいですね。
ボタン操作だと上手い例は思いつかないのですが……
試しに、
? 5==(2 OR 3)
? 5==(2+3)
をやってみると、OR と + が違う事が分かると思います。
0そうだね プレイ済み
うーん。えーと、まず確認なのですが、プログラムの流れは追えていますか?
つまり、「タイトル」→「マップ選択」→「ゲーム開始」→「クリア or ミス」→「マップ選択に戻る」
が、プログラム上ではどこの部分か? という事が分からないと厳しいと思います。
0そうだね プレイ済み
あ、分かりました。
このソフトの流れですが、
1.TITLE 表示命令(ユーザー定義命令)実行。2~5はユーザー定義命令の中で実行。
2.ループ開始
3.マップ選択待機( → ゲーム開始 → クリア or ミス)
4.MYCNT==0 になったらマップ表示
5.2に戻る
となっています。
なので、
・ミス時にMAP の値を1減らす
・MYCNT を 0 にする
を行えば大丈夫だと思います。
0そうだね プレイ済み
基本的には、MAP 変数をミス時に減らせばいいんだとは思いますが、ちょっとすぐには分からないです。
(うまくいく時と、うまくいかない時がある……)
条件が分からないんですが、たまにマップ番号表示だけ戻って、マップ自体は戻らない事がある……
なんでだろ?
1そうだね プレイ済み
シオンさんがゲームオーバー時に追加した処理は、マップ番号最大値(MAX_MAP)を減らす処理ですね。
つまり、仮にマップ番号5でミスした場合、
「現在のマップ番号は5のままで、マップ番号最大値(MAX_MAP)を4にする」
という処理になります。
そして、ちょっとコードを読んでみましたが、マップ描画処理の際、現在のマップを示す変数「MAP」と、マップの最大値である「MAX_MAP」について、チェックをしていないみたいですね。
(※このチェックは、マップ選択処理の際に行っているようなので、普通は問題になりません)
つまり、マップ番号最大値が4になっていたとしても、マップ番号5を指定した場合、マップ番号5のマップが描画されてしまいます。
これが、「ミスしても前のマップに戻らない」理由ですね。
0そうだね プレイ済み
えーと、まずはおかっぺさんの物ですね。
それと、シオンさんがどこを修正したのかが分からないとやりようがないので、もし画像で上げている以外の場所も修正しているなら、その箇所を教えてください
0そうだね プレイ済み
えーと、主人公の座標をCHKCHR に渡してあげるだけです。
主人公の座標は、さっきの画像だと、X1, Y1になっているみたいですが、それで間違いありませんか?
間違いないなら、それを使います。
2そうだね プレイ済み