コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
あまさとしおん ◆mzDKTVUAtwqE
2020/6/7 17:46
GRPの任意の範囲を90°単位で回転できるDEFです。
#プチコン4 専用

※ATTRを名乗っていますが今のところ反転は実装していません

コメント

アバター
あまさとしおん 2020/6/7 17:48 ◆mzDKTVUAtwqE
(CASE構文とGPGET関数のところを直せば3号にも対応できるはずです)
アバター
あまさとしおん 2020/6/7 17:50 ◆mzDKTVUAtwqE
どうでもいいですが
CASE〜ENDCASEのように2語以上を組み合わせて使うものを『構文』
GPSETのように単独で使うものは『文』か『命令』と呼び分けています(細かい)
アバター
あまさとしおん 2020/6/7 17:53 ◆mzDKTVUAtwqE
元はといえばBASICの『命令』はRUNやCONTなど(プチコンでいうDIRECTモード専用コマンド)を表し、ソースコード中の物は『文』と呼ぶのが正しそうなのですが、慣習的に(ついでに『関数』ではないことを明確にする意味を含めて)『命令』と呼びがちですね…
アバター
Na 2020/6/7 19:58 ◆QoELVrBXBQCI
1ドットずつGPGETするよりもGSAVEとか使ったほうが速いのではないでしょうか?
アバター
うつりきまぐれ 2020/6/7 20:22 ◆8rpaj7TJiZUt
↑ 2・3

自分はWikiの説明とかで厳密に書く時は……

IFやLOOP、INCなど、いかにも文なものや、命令にみえてもCALLできないものは「文」か「ステートメント」

CALL可能でCLSやGPSETなど括弧の付随しないもの、DIRECTモード専用のキーワードは「命令」

同じくCALL可能でGPGET、MID$のように括弧が付随する (まあOUTでも書けるけど) ものは「関数」

OPTIONステートメント、ENDLOOPステートメント、CLS命令、FILL命令、MID$関数、……

文の時もある

どうでもいいけど、プチコン3号のPI()ってかわいそうだね (確かCALLできなかったんじゃ、できたっけ?)

話そらしてすみません
アバター
あまさとしおん 2020/6/7 21:12 ◆mzDKTVUAtwqE
>GPGETするよりもGSAVE
私の用途が大量に描画する用事でもなかったので全く最適化は怠っていましたが、ソースコードの長さ的な意味を含めてそうした方が賢いですね

>呼び分け
なるほど、そういう感じなのですね(関数については私も同じ認識)
そういえばOPTIONって、コンパイル時に読まれて実際の実行ではなにもしない物なので、CLSとかGPGETの類とは何となく別に呼びたい気がしますね

プチコン3号のPI()、実体は完璧に定数リテラル同然なんですけど、3号時点では定数リテラル=整数型という不文律があるようで、そのせいで#PIは作られなかったみたいです。
(正確に言えば、定数リテラルはアプデで追加された機能で、TRUE/FALSE/PI()が先に存在した。整数型だった前の2つは#TRUE/#FALSEとして追加されたのに対し、#PIは追加されなかった。)
プチコン4では晴れて型の縛りが無くなったので#EXPとともに定数リテラルになっていますね。
アバター
あまさとしおん 2020/6/7 21:26 ◆mzDKTVUAtwqE
あっ
GSAVE良いなーとおもって早速試したら添字のXとYが逆っぽい?
あと配列CCに%つけないと非DEFINT環境でエラー起こすようになったorz...
アバター
moh6an 2020/6/7 23:03 ◆6Z.AzgCiEzTT
GSAVEでセーブした配列をパレットにして
GLOADパレットロードはどうでしょう?
(最近覚えたテクニック)
アバター
さすらいの名無し 2020/6/8 8:47 ◆LWMA5UzCJb3e
自分は括弧がついたものは「関数」、それ以外は「命令」と呼んでます。
OUTで呼び出すもの(RGBREADなど)は、「関数」と呼ぶときも「命令」と呼ぶときもあります。
ただし、DEFで定義されるもの(括弧があるかは関係なし)は全て「関数」と呼んでます。


…と思ったけど、実際はDEFで定義されるものを関数、それ以外を命令って呼ぶことが多いですね…。
なお、PI()だけは命令でも関数でもなく、定数扱いです。
アバター
あまさとしおん 2020/6/8 11:42 ◆mzDKTVUAtwqE
GSAVEなら読み込みもGLOADに、確かにその方がスマートか
アバター
うつりきまぐれ 2020/6/8 17:50 ◆8rpaj7TJiZUt
本題で思いついたこと

もし決まったサイズで回転や反転を繰り返すというケースだったら、
GSAVEの画像をパレット配列として、決まったサイズでインデックス配列作っておいて、GSAVE からのパレット版 GLOAD とかどうですかね〜
速いのかな……?

単純な例として 3x3 だったら

OPTION DEFINT

' こういうのを事前に生成
DIM I[]=[
 2,5,8,\
 1,4,7,\
 0,3,6 \
]

DIM G[3]
GSAVE 0,0,3,3,G
GFILL 0,0,3-1,3-1,0
GLOAD 0,0,3,3,I,G,#G_NORMAL

追記: なんの例か忘れてました、これで反時計回りに90°回転できるはず
アバター
りょうたんぽ 2020/6/10 20:26 ◆GoCg6EMf7SSc

と同一人物です

moh6anさんのと既出でした。すいません
アバター
あまさとしおん 2020/6/10 21:12 ◆mzDKTVUAtwqE
あ、
コード例解説してもらったので役には立ってますよ
パレットロードは先に挙げた人いますけど、実際どう使うか分かってなかったので。
アバター
りょうたんぽ 2020/6/11 19:57 ◆GoCg6EMf7SSc
ありがとうございます……
あとコードミスってました。G[3]はG[3*3]の間違いです。(自動拡張するのでこのままでも行けるんですが)

コメントを書く

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

- WEB PATIO -