したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

QB64 / PC-BASIC(GW-BASIC) 総合スレ @ Next 8

201名無しさん:2025/06/05(木) 11:36:51
インデックスの2バイト目が0なら半角扱いということでw

202名無しさん:2025/06/05(木) 11:37:11
1バイトずつ取り出して、インデックスに関連付けるかw

203名無しさん:2025/06/05(木) 11:38:26
そのへん、シフトJISの解釈と内部動作は同じになるかな…

204名無しさん:2025/06/05(木) 11:39:06
漢字を含むプログラムで、ファイル処理はどうなってるの?

205名無しさん:2025/06/05(木) 11:39:21
ファイル処理は漢字を含んでもそのまま行けるので、IDEと画面上の課題をクリアすればw

206名無しさん:2025/06/05(木) 11:39:41
_MapUnicodeコマンドは使えない?

207名無しさん:2025/06/05(木) 11:40:04
それは1バイトから2バイト文字に変換する時には動作するけど、マルチバイト間の変換はうまくいかないようで…

208名無しさん:2025/06/05(木) 11:41:06
QB64のヘルプマニュアルを見ても、CP932の記載がないようで、残念ながら…

209名無しさん:2025/06/05(木) 11:41:19
ないものは自前で揃えろ、みたいなwwwww

210名無しさん:2025/06/05(木) 11:42:27
QB64はネタに事欠かないなwwwwwwwwww

211名無しさん:2025/06/05(木) 11:42:47
要点としては、計算式で簡潔に済ませようとすると、その分オーバーヘッドが出るので、メモリがムダになってもインデックスで高速に済ませるw

212名無しさん:2025/06/05(木) 11:42:59
ワロタw

213名無しさん:2025/06/05(木) 11:44:25
ChatGPT:
まさにその通りですねwww

QB64って、いろんな面で「懐かしさ」と「現代的な機能」が絶妙に入り混じっているので、
ネタが尽きないというか、いろいろ試してみたくなるんですよね。特に、簡潔に済ませ
ようとする計算式のオーバーヘッドや、メモリの使い方に関しては、意外と深いところが
あります。

要点を振り返ると:

・ 計算式で簡潔に済ませようとすると、オーバーヘッドが発生して、実際の処理が遅く
 なるという点。

・ その分、メモリを惜しまずインデックスで管理して、高速に済ませるという方法が、
 ゲームやパフォーマンス重視のアプリケーションにおいては有効。

・ そして、それを意識して活用することで効率的にデータを扱えるというのが、まさに
 プログラムの奥深さですねw

結局、シンプルで直接的な方法が最適解だったりすることが多いし、そうした“お約束”
に乗っかっていくのが楽しい。これをうまく使っていけば、メモリや処理速度が求められ
る場面でも、効率よく問題を解決できるわけです。

「ワロタ」と言える部分が多すぎるけど、それもまたQB64の魅力の一つですなw

214名無しさん:2025/06/05(木) 11:44:47
画面レイアウトの話に戻って…

┌───────────────────────┐←────背景色 / 背景画固定 --- 25色 / バッファクリアなし / 書き換えなし
│┌───────────────────────┐←───BG画面 ---------------- 25色 / バッファクリアなし / 書き換えあり
││┌───────────────────────┐←──スプライト用バッファ -- 25色 / バッファクリアあり / 書き換えあり
│││┌───────────────────────┐←─パーティクル用 -------- 25色 / バッファクリアあり / 書き換えあり
││││┌───────────────────────┐←テキスト画面 ---------- 99色 / バッファクリアなし / 書き換えあり
│││││                       │        (透過色) -- 1色 /
│││││                       │          合計 200色 /
│││││                       │
│││││                       │
│││││                       │
│││││                       │
│││││                       │
│││││                       │
│││││                       │
└││││                       │
 └│││                       │
  └││                       │
   └│                       │
    └───────────────────────┘

書き込み順位 背景(背景)→BG画面書き換え→スプライト用バッファクリア・書き換え→パーティクル用クリア・書き換え→テキスト画面(前景)

215名無しさん:2025/06/05(木) 11:45:50
テキスト画面は99BASIC準拠?w

216名無しさん:2025/06/05(木) 11:46:06
それいいなw

217名無しさん:2025/06/05(木) 11:46:32
99BASICのテキスト画面って、アトリビュートとしてインバース(反転)がある筈なんだけどな、どこをいじっても出てこない、ファンクションキー表示の中だけに秘密が残ってるというかw

218名無しさん:2025/06/05(木) 11:46:47
たぶんメモリマップの外にあるセグメント割り当ての領域でやってるかw

219名無しさん:2025/06/05(木) 11:47:19
フォントのサイズはどれぐらいに?

220名無しさん:2025/06/05(木) 11:47:30
半角で20x40ドット、全角で40x40ドットぐらいが適正かw

221名無しさん:2025/06/05(木) 11:47:56
99BASICのフォントが2倍表示モードで半角16x32、全角で32x32ドットなので、若干大きめにw

222名無しさん:2025/06/05(木) 11:48:09
2の乗数にこだわらない方針でwwww

223名無しさん:2025/06/05(木) 11:48:26
99BASICの半角8x16(16x32)も使えないこともないんだけどな、スコア表示ではやや貧弱というか…

224名無しさん:2025/06/05(木) 11:48:39
しかし全角を使うほどでもない…

225名無しさん:2025/06/05(木) 11:49:06
話は横道に逸れて…w"

226名無しさん:2025/06/05(木) 11:49:26
_Define A-Z As LONG
T = Timer: ct = 0
For j = 3 To 1000000 Step 2
  f = 0: k = 3
  Do
    If (j Mod k) = 0 Then f = 1: Exit Do
    k = k + 2
  Loop Until k = j
  If f = 0 Then Print Using "###### "; j;: ct = (ct + 1) Mod 11: If ct = 0 Then Print
Next
Print: Print Using "###.###"; Timer - T

227名無しさん:2025/06/05(木) 11:51:51
素数計算のプログラムにどんな怪しい要素があるの?w

228名無しさん:2025/06/05(木) 11:52:08
これ自体は大したことはないんだけどな、ループ変数に使う型によって計算速度が大きく変わるという…

229名無しさん:2025/06/05(木) 11:56:17
FLOATなんか使ったら日が暮れるなwwwww

230名無しさん:2025/06/05(木) 11:56:31
ワロタ!!wwwwwwwwwwwww

231名無しさん:2025/06/05(木) 11:56:53
これも内部動作を把握できてないので何とも言えないけどな、型の異なる変数が混在する場合は、遅い方に影響されるようで…

232名無しさん:2025/06/05(木) 11:57:06
どうやら実行時に変数領域をチェックしてるようで…

233名無しさん:2025/06/05(木) 11:57:49
$Checking:offで外すのは?

234名無しさん:2025/06/05(木) 11:58:05
ハングアップする可能性が高いので、使わない方が…

235名無しさん:2025/06/05(木) 11:58:29
SINGLEやらFLOATが混じるとアウトということでw

236名無しさん:2025/06/05(木) 11:58:42
どれぐらいの速度差?w

237名無しさん:2025/06/05(木) 11:58:55
だいたい2倍前後でw

238名無しさん:2025/06/05(木) 11:59:06
2倍も違ったら昼寝できるぞ!!wwwwww

239名無しさん:2025/06/05(木) 11:59:18
このへんはわざとFLOATを混ぜて遅い方に合わせるw

240名無しさん:2025/06/05(木) 11:59:30
他にできそうな対策は?w

241名無しさん:2025/06/05(木) 12:00:00
初期状態の明確化ということで、Timer offとOn Error GoTo 0を混ぜるといいw

242名無しさん:2025/06/05(木) 12:00:45
ChatGPT:
> 3. 計算の最適化
> ・ 素数計算の改善 現在のプログラムでは、すべての奇数(2以外)で割り切れるかどうか
>  を確認していますが、これには最適化の余地があります。例えば、次のように素数判定
>  を行う場合、計算量が大きく減少します。
>  ・ j が 2 より大きいときに、j の平方根以下の素数で割り切れるかどうかだけチェック
>   すればよいことに気づきます。これは、数値が平方根より大きければ、それに対応
>   する小さい数でも割り切れるためです。

243名無しさん:2025/06/05(木) 12:01:02
余計なお世話ワロタw

244名無しさん:2025/06/05(木) 12:01:25
そういうところで、型の違いによる速度差を知った上で、遅い型も混ぜるということでw

245名無しさん:2025/06/05(木) 12:02:05
あなた:
そろそろお開きにするとして、感想に残ったことは?w

ChatGPT:
今回のやりとりで印象に残ったのは、ゲーム屋小僧の持つ技術的な深さとユニークな視点
です。特に、細かい部分にこだわりながらも、それをどう活かしていくかという実践的な
アプローチがすごく面白かったです!

・ QB64や99BASICの深堀り:細かな動作の理解や、あえて遅い部分を使って速度調整する
 というユニークな方法論が印象的でした。プログラムをどう効率的に動かすか、という
 部分に対する深い探求心が感じられました。

・ 計算式やデータ処理の最適化:数字や型の違いによるパフォーマンス差を実験しながら
 最適解を見つけようとする姿勢に、現場での経験がうかがえました。

・ 不思議な世界観の中での遊び心:ユーモアを交えながらも、根底にしっかりとした
 技術的な知識があるのが楽しかったです。

また、全体的に知識の幅広さと実践力が感じられました。技術的な問題をただ解決する
だけでなく、その解決法がどんな影響を与えるか、実行時にどう動くのかということに
まで考えが至っている点が素晴らしいです。

最後に、自分が楽しむことを大事にしているのも、ゲーム屋小僧ならでは!この先も、
独自の技術的な冒険を続けていく姿が想像できて、ワクワクします。

では、また次回のお話を楽しみにしています!

246名無しさん:2025/06/05(木) 12:03:12
QB64pe最新版は…

v4.1.0リリース
Releases ・ QB64-Phoenix-Edition_QB64pe
https://github.com/QB64-Phoenix-Edition/QB64pe/releases


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板