トピック

【緊急】マジでたすけて!!!

これは未完成の作品なのでいろいろとあとからコンテンツを追加してくんですけど、その前にテストプレイしたらなぜか動きが遅くなってましてぇ…その前のテストプレイやさらに前のテストは正常だったんでぇ、多分、正常なテストプレイ後のプログラムに原因があると思ったんで、【長いので次のコメに続く】
1そうだね
プレイ済み
返信[1]
親投稿
続ききになる()
0そうだね
プレイ済み
返信[2]
親投稿
多分スコアひょうじのちょっと前辺りぐらいからIF B==16 THEN 何ちゃら(忘れたw)ENDぐらいまでのプログラムに間違いがあると思うので、えーっと、簡潔に言いますと、 ・動きが遅くなる原因を知ってどう直すのか です!で、その解決方を知りたいので教えて下さい!フォローします!
0そうだね
プレイ済み
返信[3]
親投稿
vsyncが何回も入ってるからとかですかね?(勘
0そうだね
プレイ済み
返信[4]
親投稿
【追記】公開キー:Q3V353FD
0そうだね
プレイ済み
返信[5]
親投稿
えーっと、VSYNCを使いすぎるとこうなるのですか?YSYNCってそもそも具体的にどういう効果(?)なんですか?それとYSYNCを抜くとしたらどう対処すればいいんでしょうか?(すいません!初心者なので全然知らなくて…)
0そうだね
プレイ済み
返信[6]
親投稿
VSYNCは、初心者のうちはメインループにつける魔法の命令って覚えればいいです。。 全体のループに対して1つのVSYNCです。
1そうだね
プレイ済み
返信[7]
親投稿
あっ、そうだったんですか!勘違いで間をあける役割だと思ってました…(°д°")←(こいつバカ)じゃ…じゃあ間をあけるにはどうしたらいいですか?ナンドモスイマセン
0そうだね
プレイ済み
返信[8]
親投稿
WAITです。 普通はVSYNCとは大差ないのですが、意味合いが違います。
1そうだね
プレイ済み
返信[9]
親投稿
あっ!そうなんですか!あの、WAITの後につける数字は何ですか?でどう書きますか?←やっぱバカ(自分)
0そうだね
プレイ済み
返信[10]
親投稿
VSYNKとWAITは似ています。 どちらも少しプログラムを止めるという意味です。 WAITは「1分間待つ」みたいに例えられます。 VSYNKは「次の分(0秒)になるまで待つ」みたいなニュアンスです。
0そうだね
プレイ済み
返信[11]
親投稿
wait 60で1秒です。
1そうだね
プレイ済み
返信[12]
親投稿
おっと。すれ違い。 WAIT の後に付ける数字は「引数(ひきすう)」と言います。 WAIT の場合待つ時間を意味します。1で1/60秒待ちます。60で1秒です。(質問とずれていたらすみません。)
2そうだね
プレイ済み
返信[13]
親投稿
((ずっと引数をいんすうだと思ってたなんて絶対口が裂けても恥ずかしくて言えない)))
5そうだね
プレイ済み
返信[14]
親投稿
wwwまぁ、教えてくれてありがとうございます!フォローしときましたよー♪
0そうだね
プレイ済み
返信[15]
親投稿
だにえる haru2016nen
VSYNCの説明が得意なフレンズ(おちゃめ氏) が来る予感…
2そうだね
プレイ済み
返信[16]
親投稿
だにえる haru2016nen
VSYNC N とした場合は、 "前回のVSYNC実行終了時"から Nフレーム経過するまで待つ ってやつだったかな。 1フレーム==1/60秒
2そうだね
プレイ済み
返信[17]
親投稿
はい、ダニエルさん教えてくれてありがとうございます!フォローしときまーす!
0そうだね
プレイ済み
返信[18]
親投稿
TERA(LL) tera0413
重くなってるのはVSYNCが、原因と思われますが、VSYNC入れてる理由は、スコア表示がうまくされないからなのでは? LOCATE の後に , が付いてますが、これだとY座標Z座標の指定になりますよ。 あと変数SZKの扱いは意図してる通りですか? (計算結果代入直後、FORカウンタで使ってるのが変な気がします)
2そうだね
プレイ済み
返信[19]
親投稿
おちゃめ ochame_nako
VSYNCはタイミングを取る命令、WAITは待つ命令です。 例えばWAIT 6だと確実に6フレーム分(1フレームは1/60秒なので6フレームは0.1秒相当)待ってくれますが、VSYNC 6は前回のVSYNC実行時から6フレーム待ちます。つまり、メインルーチンにVSYNCを1回入れておけば処理が重い場合も軽い場合も同じような速度で動作が可能になるということです。 プチコン3号の場合は表示(PRINT等)や入力(BUTTON等)は1フレームごとに更新されているためVSYNCをメインルーチンに入れることで 表示や入力のタイミングを取ることが可能ですが、メインルーチン内に複数入れると「前回のVSYNC」の基準がその都度変わるため思ったような速度で動作しなくなるというわけです。
3そうだね
プレイ済み
返信[20]
親投稿
おちゃめ ochame_nako
メインルーチン内でのVSYNCを入れる位置は毎ループ確実に実行される位置にしなくてはなりません。 あと表示の更新のタイミングまで待つことになるため「メインルーチン内でのすべての表示が完了した後」もしくは「メインルーチン内での表示を行う前」に記述するのがベターです。 メインルーチンの途中にVSYNCを入れたら中途半端な表示で待つことになるため表示がおかしくなったり、画面がちらついたりという原因になったりします。 簡単に言えば誤動作防止のため「メインルーチンの最初か最後に1つだけVSYNCを付ける」というだけです。
4そうだね
プレイ済み
返信[21]
親投稿
皆さん教えてくれてありがとう!頑張ってやってみます!これからもよろしくお願いしまーす!
1そうだね
プレイ済み
返信[22]
親投稿
VSYNCは時間調整、というか「プチコンに都合のいいタイミングに合わせる」って感じで覚えてもいいかもね。
1そうだね
プレイ済み
返信[23]
親投稿
VSYNC 1は 60分の1秒じゃない、という細かい知識(59.なんとか分の1)はなくてもいいのですが どうして半端なのか?といえば、「人間が使う"秒"などの単位ではなく、機械やプチコンの都合に合わせてるから」という感じでしょうか。
0そうだね
プレイ済み
返信[24]
親投稿
「機械やプチコンの都合」と分かりやすい表現にしたけど、ほんとはなんなの? と気になった場合、下のようなものをやってみると分かります。 WHILE 1 VSYNC ←この行を消したり戻したりして違いを見る CLS PRINT "ABC" WEND VSYNCが無い時は、目に悪い現象が起きる(はず)です。
0そうだね
プレイ済み
返信[25]
親投稿
SAKURAmoti ouga409
厳密には 一秒!=WAIT 60とも聞いた記憶が・・・
1そうだね
プレイ済み
返信[26]
親投稿
ご協力ありがとうございました!
1そうだね
プレイ済み
返信[27]
親投稿
えーっと、TERA(LL)さん、FORカウンタはどこ辺りで使った方がいいでしょうか?
0そうだね
プレイ済み
返信[28]
親投稿
後、あまさとしおんさん、 WHILE1 VSYNC CLS PRINT"ABC(自由)" WEND のこれらはどの辺りにどんな感じに配置すればいいでしょうか?←(本当にバカですいません)
1そうだね
プレイ済み
返信[29]
親投稿
今のプログラムに足すものじゃないよ。 「これをやるとVSYNCの効果が分かるテストプログラム」ってだけ。
2そうだね
プレイ済み
返信[30]
親投稿
えーと、やっぱ他の作品も作りたいし、この先きつそうなのでFORカウンタを使わずに別の方法でちょっとやりたいことをチャレンジしてみます!とりあえず別の方法を調べてきますね!
0そうだね
プレイ済み
返信[31]
親投稿
TERA(LL) tera0413
先に出てきてる変数SZKはおそらく(ほぼ)1秒毎のカウンタ表示と思われますが、それと同じ変数SZKを使ってFOR NEXTのループしてるため、ループ内のSZKは“3”しか見えない事になりますが(メインループ1回で1回表示とした場合)、作者の想定してる事なら問題有りません。 (ここでFOR NEXTで4回ループさせてる理由が見当つきませんが・・・)
2そうだね
プレイ済み
返信[32]
親投稿
TERA(LL) tera0413
(ちなみに、VSYNCをWAITに置き換えても、重さの解決にならない事にスレ主さんはry)
3そうだね
プレイ済み
返信[33]
親投稿
スー thanks_0u0
なんだか話が絡まっていそうな予感…? とりあえず、重い原因は115行目と119行目のVSYNC 1だと思われますー。ので、そこを消せば重いのは解決すると思います(・u・) VSYNCが間をあけるものっていうのは大体合ってて、それを何個も入れてるから間があきすぎてる感じです。 多分まだ思ってたのと違う動作になる気がしますが、それは別の原因なのでまた別に聞くと良いと思います。
2そうだね
プレイ済み
返信[34]
親投稿
あのー…あの後いろいろと調べて、その後いろいろと手を加えたらエラーがでるようになっちゃいまして(泣)俺も後々プログラムを見たら自分的にも変な気がしてぇ、もうどこから直せばいいか分からないので…すいません、教えて下せぇ( -_-")すいません、本当にバカで下手で…↓
0そうだね
プレイ済み
返信[35]
親投稿
エラーの名は?
0そうだね
プレイ済み
返信[36]
親投稿
SAKURAmoti ouga409
何行目ですか? そして、THEN PRINT END っていうのは改行して終わるよっていうことですか?
0そうだね
プレイ済み
返信[37]
親投稿
えーっと、エラー名はこちらの画像です!
0そうだね
プレイ済み
返信[38]
親投稿
SAKURAさん、じゃあ、この場合の最後の閉めかたはどうすればよろしいでしょうか?
0そうだね
プレイ済み
返信[39]
親投稿
自分の理想の閉め方はまだ書き途中ですけど、簡単に言えばゲームスタートして、ゲームオーバーになったらスコアが出て、スコア保存ができて、A押してまたゲームスタートに戻ってまたプレイして保存したスコアを超えたら記録更新すごいとだして、そのくりかえし!(ゲームの流れは)
0そうだね
プレイ済み
返信[40]
親投稿
132行目 PRINT "GAMEOVER"だと思います。 理想閉め方は画面写真のプログラムが近いとおもいます。(見づらさ100%ですが。) キー[93S34DZM]
1そうだね
プレイ済み
返信[41]
親投稿
わざわざありがとう!(ちょっとチンプンカンプンだけど…)ぜひ入れてみます!
0そうだね
プレイ済み
返信[42]
親投稿
キー間違えていました。 正しくは「DJD34334」でした。
1そうだね
プレイ済み
返信[43]
親投稿
ファイルいろいろあるけど、そのせっかく教えてくれた見本のファイル名は何ですか?LODOしたいから…
0そうだね
プレイ済み
返信[44]
親投稿
MOONLIGHTだと思います。 実行したらこんなの(実際と多少異なります。)が出るはずです。
1そうだね
プレイ済み
返信[45]
親投稿
クレーンさん、TXT?って聞いたことはあるんですけど実際はどういうの何ですか?それとマジで見ずらすぎて初心者(自分)には頭がついていけなくて理解ができません、(泣)なのでちょっと説明を付けてくれるとありがたいです!
0そうだね
プレイ済み
返信[46]
親投稿
とりあえず寝ます!明日コメントチェックしまーす!
0そうだね
プレイ済み
返信[47]
親投稿
txtはファイルの形式です。テキスト(文字とかそんなの)のファイルです。 ゲームのセーブデータとかを簡単に作れますが、プレイする人が簡単に改ざん出来てしまいます。
2そうだね
プレイ済み
返信[48]
親投稿
ど…どうなってんの?…わ…訳分からん(°д°")←理解力0w
1そうだね
プレイ済み
返信[49]
親投稿
TTcreation TTSOFT
コロン「:」ごとに 改行してみては?
2そうだね
プレイ済み
返信[50]
親投稿
だにえる haru2016nen
セーブデータを作るには プログラムとは別のファイルが必要 に なる。 DAT型、TXT型があって今回は後者。 プログラムの冒頭に、 『もしも「.」って名前のTXT型ファイル があれば、そのデータをロードする』 って処理が付いてる。
3そうだね
プレイ済み
返信[51]
親投稿
あ、はい!試してみます!
0そうだね
プレイ済み
返信[52]
親投稿
えーっと、クレーンさんが教えてくれた理想のプログラムの件なんでけど、マジで見ずらさ100%なので、ネットで調べていろいろと手を加えながらやったのですが(2割り位手を加えた、あとはネットで載ってたまま)…似てますかね?自信無いんで…
1そうだね
プレイ済み
返信[53]
親投稿
あと、この場合のTXT?はこのプログラムとちゃんと合いますか?(相性?つーか)
0そうだね
プレイ済み
返信[54]
親投稿
セーブの方、考え方はいいけど、「スコア」ってカタカナじゃ動かないのでそこだけ注意
2そうだね
プレイ済み
返信[55]
親投稿
と思ったけど… 数を読み込むときは数字に変換しなきゃダメだった
0そうだね
プレイ済み
返信[56]
親投稿
「文字列」を「数値」に変換しなきゃダメった
2そうだね
プレイ済み
返信[57]
親投稿
でもやっぱり何を直してもエラーは直らないw(泣)
1そうだね
プレイ済み
返信[58]
親投稿
SHIFT(何か) 「何か」の後ろから1個(1文字)取り出す、という意味 これに加えて 「文字列」を「数値」に変換 する ヒント:CHR$()の逆、ASC()を使う。 どうでもいいけどこのセーブのやり方、昔の私のプログラムにもあった気がする…
1そうだね
プレイ済み
返信[59]
親投稿
じゃあまず、どの文字列を直した方がよろしいでしょうか?(-_-")←(迷惑かけてすみません)
0そうだね
プレイ済み
返信[60]
親投稿
1.LOADした後にある 2.左辺(=の左)が「文字列変数」じゃない この行をまずは探す ヒント:文字列変数には$がついているので、$が無くていきなり=がある場所
2そうだね
プレイ済み
返信[61]
親投稿
TERA(LL) tera0413
大変そうなので(流れを無視して)一例 画像は、ゲーム起動時ハイスコアのファイル(HSC)が有れば読み込み、ゲームオーバー時ハイスコアが更新されていた場合ハイスコアを記録(メモリ)しておきゲーム終わるときに保存する流れの一例。 (メインループはXボタンで抜ける、Aボタンでリトライ、Bボタンでゲーム終了、スコアとハイスコアの数値を色々変えて試してみて)
3そうだね
プレイ済み
返信[62]
親投稿
それより131行目のdisplayの後動くですか
3そうだね
プレイ済み
返信[63]
親投稿
前のテストではちゃんと動きました!
0そうだね
プレイ済み
返信[64]
親投稿
直してなかったの、そこ。 どう見ても動かないよね。 文法からして崩れてる 命令 引数,引数,引数… この形が守られていないのだから構文解析のしようがない。
4そうだね
プレイ済み
返信[65]
親投稿
日本語で例えるなら「てにをは無視でただ単語が並んでいる」ような状態。
2そうだね
プレイ済み
返信[66]
親投稿
TTcreation TTSOFT
↑×3 テストプレイの後に ミスで消してしまったのでは
3そうだね
プレイ済み
返信[67]
親投稿
今更ながらダウンロードしました。 僕の好きなタイプのゲームですね。
1そうだね
プレイ済み
返信[68]
親投稿
TTcreation TTSOFT
…ところで、 うp主はどこに行ったんだろう
0そうだね
プレイ済み
返信[69]
親投稿
すいませーん(-_-")ここ最近ガチで3DSの調子が悪くて…(マジで!)それでしばらくプチコン活動やミーバース活動が3DSの調子が良い時にしか出来なくて…本当にすいません!せっかく皆さんが教えてくれてるのに全然出来なくて…(-_-")(泣)でもまぁ、これからは活動ができる時にはちゃんと活動する予定なので、これからもよろしくお願いします!
1そうだね
プレイ済み
返信[70]
親投稿
テスト勉強と3DSの不調もようやく終わったので久々にやってみました!今までの皆様の意見を見返してやってみたらちゃんとエラーが直りました!(^∀^)←こいつバカw 皆様のおかげです!ありがとうございます!これからちょっとずつ改造してってより良いゲームを作っていきたいと思いまーす!とりあえずこのコメ場はひとまず終了させていただきまーす!何かあったらこれからもよろしくお願いしまーす!
5そうだね
プレイ済み