コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
takumi ◆Ce3Q40uXWJjn
2019/8/8 11:43
質問
マルチタスク表示する方法
プチコン3号です。
パソコンみたいに、ウィンドウをいくつも表示させることが出来、縮小拡大ができる方法を教えて下さい。
今まで色々試しましたが失敗で…

コメント

アバター
RU-RA 2019/8/8 12:54 ◆WXDJqyOv9yBK
ウィンドウのSPをSPSCALEで拡大、縮小すればよいかと。文字はGPUTで。
ウィンドウはアプリとカーソルの座標が一致している&Aボタンを押している
をIF文で判定すればよいかと。
その際、ウィンドウの個数の変数を用意しておき、

DEF wind a
SPDEF~~~~
SPSET a,~~~
SPOFS ~~~~
END
(変数aはウィンドウの個数)

という風にすればよいかと。
ウィンドウのレイヤーについては他の人から聞いてください。私じゃ無理なんですー!
アバター
あきと 2019/8/8 17:44 ◆qGd5dQw2g3a2
長文で少しキツイ言い方になってしまっているので先にごめんなさい。
質問の内容が曖昧で回答しにくくなっていると思います。

タイトルは「マルチタスク」になっていて内容は「複数のウインドウの表示と拡大・縮小」
ウインドウを複数表示するのは座標と縦横幅を配列で管理するだけでいいと思うのですが、おそらくウインドウの表示順の入れ替えや指定方法も想定している方法があるんだと思います。また、拡大縮小の指示の方法も同じように頭の中にあるのでしょう。
そしてマルチタスクなのは要はOSもどきのウインドウの内で動作するプログラム毎の管理についてですよね。

takumiさんの頭の中にあることを読み取れるエスパーはいないのでまずはマルチタスクの事はひとまず脇に置いてどんな操作をするとウインドウにどういう影響を及ぼすのか細かく書き出してみる事が必要なのではないかと思います。

ウィンドウズと同じような操作でと言った曖昧な説明ではなく、
「マウスが表示される」
「マウスはスティックで移動する」
「ウインドウの4隅にマウスが近づくと形状が変化する」
「その時にAボタンを押しながらスティック移動させるとウインドウの幅が変化する」
というような具体的な説明です。これはウインドウが一つの時にしか使えない説明です。複数だったらウインドウの表示順番が変わったりするはずです。
takumiさんはOSもどきを作るという「企画」ではなく具体的な「仕様」を書かないといけないのだと思います。
アバター
takumi 2019/8/8 19:38 ◆Ce3Q40uXWJjn
ウィンドウを動かす方法は分かっています。
シンプルタスクの時にやってますので。

「マウスが表示される」
「マウスはスティックで移動する」
「ウインドウの4隅にマウスが近づくと形状が変化する」

も取得済みです。
ですから拡大縮小の方法を聞いているのですが。
アバター
ツララ 2019/8/8 21:14 ◆ArUdBYOYME1V
やりたいことは要するに「表示範囲」の拡大・縮小ですよね?
ウィンドウをスプライトで表示してるなら、SPDEFのサイズ指定する書式で
サイズを変えてやればいいんじゃないんです?
表示範囲の数値はSPVARでそのスプライト専用の変数として持たせてやるとして
SPDEFで変更させた内容を反映させるためにSPSETが必要ですけど
SPSETするたびにSPVARの値はリセットされるので、一時退避用の変数も用意して…みたいな。

というか他の人のOS系プログラムの解析の仕方が分からないとかだったら
参考にしてる人を名指しして聞いた方がいいんじゃないんです?
参考資料はリファレンスだけで一から作ってるとかだったら、あきとさんの言う通り
takumiさんが考えてる仕様をもう少し煮詰めた内容を書いてくれないと
回答してくれた人の仕様をなぞるだけになっちゃいますけど。
アバター
あきと 2019/8/9 0:06 ◆Q/mp.qcMuPYu
ではウインドウを拡大・縮小するという事はなにをする事なのか?という所を
細かく考える必要がありそうです。

ツララさんが書いているように別のグラフィック面に一度ウインドウ内部の画像を書き出しておいてスプライトとして配置するのも一つの方法だと思います。ただし、その際には一つ一つのウインドウが大きくなるとあっという間にグラフィック面がなくなります。

もう一つ似た方法としては、描画してないグラフィック面にウインドウの中身を書き込んだあとメモリに書き出してしまう方法です。ウインドウ内の画像をメモリに保存しておいてウインドウの書き直しが発生するたびにメモリからグラフィック面に書き出す事でメモリが無くなるまでウインドウを複数持てます。その変わりウインドウ内のプログラムが描き変わるたびに裏で「グラフィック面への書き込み→メモリに保存」という処理が連続して行われるので動作は重くなります。

上の2つと大きく違う方法としてはウインドウの内部に何を書くか細かく保存するというものです。
ウインドウ内の背景色・背景画像、文字列描画位置・文字列の内容
実行されるグラフィック命令の指定などを細かく定義して保存します。
これを描画コマンドという名前で呼びます。
ウインドウが描き変わるたびにその保存しておいた描画コマンドを使って再度ウインドウ内部を描画しなおすというものです。これはかなり面倒でコマンドを追加するのも大変ですが、作成できれば質が上がると思います(負荷も上がります)

負荷の重さは1<3<2、技術難易度は1<2<3です。1番はウインドウを画面いっぱいに広げたら2つしかウインドウ配置できないと思います。空きを探すアルゴリズムも作らないといけないですね。
アバター
ichi 2019/8/9 9:55 ◆SpcenVme4SOE
あわわ... takumiさんと開発している所が被っていた... 開発するときはあらかじめメンバーにどのような事をするのか伝えて頂けると有り難いです。
アバター
takumi 2019/8/9 12:06 ◆Ce3Q40uXWJjn
あ、違います。
Spectacmine Os の方です。。。
アバター
ichi 2019/8/9 12:10 ◆SpcenVme4SOE
すみません、勝手に勘違いしてました....

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -