Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 12 1347
次のページ(過去)
返信[5]
親投稿
あきと SideBurnsM
大ざっぱに「うるう秒はない」と書きましたが、うるう年のように4年に一回一日増えるというような明快なルールに基づいたのとうるう秒は違いますよね。 地球の自転と協定世界時のズレが広がったときにうるう秒を差し込みましょうという風に人間によって管理されているためプログラムには組み込まれていないだろうという意味でした。
3そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
何を作ってみたいのか理想を思い浮かべて少しずつ近づいて行けるように勉強するしか無いですね。 横スクロールアクションが作りたいとかドラクエみたいなRPGが作りたい等、もちろんまったくオリジナルな作品でもいいので自分がやってみたいことを一旦決めてみるといいと思います。
2そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
うるう秒は無いかと。 60秒60分24時間365日100年全て掛けると31億なので大丈夫では?
1そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
10行目で年と月だけを足して比較していますが、年月日時分秒を一つの数値(=秒)に足しこんだ上で差分を取らなければ正しい時間の差は計算できないのではないでしょうか。
1そうだね
プレイ済み
返信[15]
親投稿
あきと SideBurnsM
BGGETと書いてキーボードの右上にある「?」というキーを押してみましょう。 ヘルプが表示されます。 メインループ内に A=BGGET(0,x,y,1) ? x,y,A この2行を足してみましょう。ズラズラーとプリントが出ますが座標を動かすとBGのチップ番号を返しているのが分かると思います
1そうだね
プレイ済み
返信[12]
親投稿
あきと SideBurnsM
BGGET(レイヤー,x,y,1)の返り値で座標の場所にあるBGパーツが分かります。 この関数を使って当たり判定を取ります。
3そうだね
プレイ済み
返信[26]
親投稿
あきと SideBurnsM
vsyncはメインループで重要な命令なのでメインループ側に置いておいた方がいいですよ。 今のままだと@TIMEをコメントアウトするとvsyncも呼ばれなくなって動作がおかしくなる可能性が。
1そうだね
プレイ済み
返信[24]
親投稿
あきと SideBurnsM
上のスナップショットのソースではvsyncをコメントアウトしていますね。 ボタン入力はvsyncを呼んでループしていないとうまく動きませんよ
0そうだね
プレイ済み
返信[22]
親投稿
あきと SideBurnsM
分からなくなったら画面にプリントしてボタンが取得できてるか、カーソル判定のルーチンに来ているか確認することが大事です
0そうだね
プレイ済み
返信[20]
親投稿
あきと SideBurnsM
一番簡単なのは99*60*60*60+59*60*60+59*60以上になったら足さないようにする事だと思います。
0そうだね
プレイ済み
返信[9]
親投稿
あきと SideBurnsM
結果。 Aさんのテーブルは横にはみでるかも?
3そうだね
プレイ済み
返信[8]
親投稿
あきと SideBurnsM
これで表示できます。 何も文字を書いていないDATA文が1行追加されている事に注意してください。
4そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
INPUT中にプログラムを終了させることはできないので、INPUTである決まった文字(例えばQ)が入力されたら終了するというがいいと思います。 その代わり文字入力を受け付けないといけないので INPUT ”すうじをいれてね(Qでやめる)”,A$ IF A$==”Q” THEN END A=VAL(A$) とするのがいいかも。 AではなくA$と文字列でINPUTから受け取り、文字列から数字に変換するVALを使っています。Qを先に判定するのはVAL(”Q”)も0と変換されてしまうため数字が取れた風に扱ってしまうからです。BEEP 0はありますしね
1そうだね
プレイ済み
返信[17]
親投稿
あきと SideBurnsM
YOSさんの方法をコードにしたものです。 Aボタンでポーズ。Bボタンで解除になります。一つ困ったのはポーズ中も時間はすすんでしまって、ポーズ解除したときに時間が減る動作をしていました。これはポーズ解除したときにやっとポーズしていた時間が確定するからなのですが、リアルタイムに表示しているときはプレィ時間を更新しないようにするのがいいかもですね。(このコードは対策されています)
0そうだね
プレイ済み
返信[14]
親投稿
あきと SideBurnsM
しょうごさんのプログラムが凄く重い計算をしているとかじゃないかぎり旧でもnewでもvsyncが1/60待つ時間は変わりませんよ。
0そうだね
プレイ済み
返信[11]
親投稿
あきと SideBurnsM
どんな風に書いているのか貼ってもらうのが早そうですね
0そうだね
プレイ済み
返信[7]
親投稿
あきと SideBurnsM
PLAYTIMEは単純に数字が増えていくだけの変数なので、ミスした時は4*60*60をPLAYTIMEに足せばペナルティタイムを実現できます。 4*60*60の数字の根拠は大丈夫ですね?
1そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
MAINCNTの方が正確な時間が取れるのですが、おおざっぱでも良いのであればMAINCNTではなくVSYNCを呼ぶたびに自分で時間を加算するという方法でも計測できます。 PLAYTIME=0 @LOOP ゲームの処理 IF PAUSEFLAG==0 THEN INC PLAYTIME VSYNC GOTO @LOOP A=PLAYTIMEとして代入すればあとは同じ処理で時間が表示できます。 VSYNCはだいたい1/60秒毎に呼ばれているというのを使って計算していることになります。 PAUSEFLAGという変数を作ってポーズ画面中は1、ゲーム中は0という風に作ればポーズ中は時間が加算されないという事が実現できます。
0そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
MAINCNTというシステム変数があります。 これはプチコンが起動してから1/60秒ごとに数字が増えていく変数です。 ゲームを開始した時にこの数字を別の変数に保存しておき、ゲームを遊んでいる最中もMAINCNTを取得してその差分を見れば経過時間が取得できます。 CLS STARTCNT = MAINCNT @LOOP A =MAINCNT-STARTCNT MS =((A*100) DIV 60) MOD 100 S =(A DIV 60) MOD 60 M =(A DIV (60*60)) MOD 60 T =A DIV (60*60*60) T$=FORMAT$("%02D:%02D:%02D.%02D",T,M,S,MS) LOCATE 1,10:? T$ VSYNC GOTO @LOOP
1そうだね
プレイ済み
返信[2]
親投稿
あきと SideBurnsM
ポンの画面は入力しました? ジャンプアクションは壁反射よりも大変ですよ。 初心者向けアクションゲーム講座とか読んで打ち込んでみるといいと思います。 http://damedamepg3q.web.fc2.com/pet3Sta_sp1.html
4そうだね
プレイ済み