プチコン3号 SmileBASIC コミュニティトピックあまさと しおん ShionAmasato2015/08/27 18:28:29情報交換【上級者向け】(文字数削減や高速化などのために)一見意味不明なプログラムを書くところ7そうだね 17返信プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿あまさと しおん ShionAmasato2015/8/27 18:32もし LとXを両方とも押しているならば~ IF (B AND #L+#X)>♯L THEN~ なぜ==#L+#Xではなく>#Lなのか、それは文字数削減のためである。 では、正しく動く理由を説明する。 B AND #L+#Xが取り得る値は0,#X,#L,#L+#Xの4つしかない、 つまり、3番目に大きい#Lを超えるということは、#L+#X以外あり得ない。 故に、両方とも押さなければ反応しない。5そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿げんや genya05192015/8/27 18:52ふむふむ。なるほど、オレにはさっぱりわからないゼ!!5そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿reji Satoshi.11032015/8/27 20:39定数同士で計算できた事をすっかり忘れていた…!!3そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿natto- natto-30302015/8/27 20:57どうしよう… 上級者じゃないのに来てしまった(笑)2そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿********** itd12d2015/8/27 21:29初心者なのに来てしまった。 メモリ削減大切ですよね!(全く理解してない2そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿V.D. 5962-63214-975132015/8/27 21:33 「日本昔話」 そう言えば、とある昔の、ハードディスクとかの記録媒体の容量が少ない時代に、「プログラムに使う文字数をいかに少なくするか」というのがプログラマーの技能のひとつとして判断された時代があったそうですね。 今もそうなのかもしれないけど・・・3そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿KU kerorinU2015/8/27 22:23勝手に投稿 if a!=0 then print"hoge" の書き換え print"hoge"*!!a 論理判定を二回行うと、0か1のどちらかに変換できるのです。2そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿otta777 otta777a2015/8/27 22:24B=BUTTON() VX=SGN(B AND 8)-SGN(B AND 4) VY=SGN(B AND 2)-SGN(B AND 1) 対象のビットがONの場合正の数が返ってくるので SGN関数で符号を取得すると+1か0が返ってきます。 これを利用して十字ボタンを押したときの 移動量を求めます。 1そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿おちゃめ ochame_nako2015/8/27 23:19論理反転を使えば8方向移動は B=BUTTON()X=X-!(8AND B)+!(4AND B)Y=Y-!(2AND B)+!(1AND B) と記述することができますね。 ちなみにプチコンmkIIでは剰余の演算子が「%」だったので次のものが最短でした。 B=BUTTON()X=X-(B%16-B%4+1)%3+1Y=Y-(B%4+1)%3+1 昔のコンピュータならばメモリが数100バイト~数KBしかなく私が持っていたポケコンも約1KBしかメモリが無かったため可読性を無視していてもリスト短縮テクニックは非常に有用でしたが、メモリが潤沢なプチコン3号ではOSP(1画面プログラム)やQSP(WIDTH 16の1画面プログラム)といった文字数制限プログラムを作る場合のみ有用なテクニックですね。1そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿おちゃめ ochame_nako2015/8/28 0:02X=X-!(8AND B)+!(4AND B)を簡単に説明すると十字ボタンの右を押した場合にはX=X-!8+!0となり、!8=0、!0=1であるためX=X+1という動作になります。 十字ボタン左を押した場合にはX=X-!0+!4となり、!4=0であるためX=X-1という動作になります。 左右両方押してない場合には、X=X-!0+!0となるためX=Xという動作になります。 ちなみにX=X+!!(8AND B)-!!(4AND B)のように!を2つ重ねてSGN的な動作(※負数の場合はSGNとは異なる)をさせることもできますが、それと比べると2文字分(Y方向合わせてトータル4文字分)短縮できています。 B AND 8ではなく8AND Bとすることでさらにトータル4文字分短縮しています。3そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿なのはな485 h-morimori2015/8/29 11:08こめのこ0そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[13]親投稿ネタバレマギー M1912462015/8/31 20:14IF (B AND #X+#L)>#L THEN~ 条件式の部分 (B AND 320)>#L では、だめなんでしょうか? (320は、#L、#Xを足したもの) 何か見落としているのでしょうか? これが、大丈夫なら (B OR-321)>-2 とすると、さらに1文字だけ節約できそうな 気がします。 (-321は、320の補数) 1そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[14]親投稿あまさと しおん ShionAmasato2015/8/31 20:31数字はまとめても大丈夫です。(ちょっと可読性を重視) そして、1番下の式、試してみよう (B OR-321)<-2 不等号こっちっぽいな0そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[15]親投稿あまさと しおん ShionAmasato2015/8/31 20:36不等号の向きよくわからないので試行錯誤してみる (ORも負数も思いつかなかったため混乱中)0そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[16]親投稿あまさと しおん ShionAmasato2015/8/31 20:38あ、元の式でいいみたい。 (B OR-321)>-2 唯一気にするなら、式の変換がややこしい0そうだね プレイ済み2017/11/03 18:52:33に取得
プチコン3号 SmileBASIC コミュニティ返信[17]親投稿ネタバレマギー M1912462015/8/31 21:10なんだか、横槍みたいになってすみません。 私もあまり自信はなかったのですけど その問題点を知りたくて コメントさせてもらいました。 1そうだね プレイ済み2017/11/03 18:52:33に取得