【SmileBasic】 Pi STARTER GOTO 1 【RPi】
■Pi STARTERとは
Raspberry Pi財団が提供するシングルボードコンピュータ
Raspberry Pi上で動くSmileBASICです。
SmileBASICはSmileboomが提供する独自のBASICで、ゲーム
プログラミングに最適です。
・現代風に生まれ変わった超高速BASIC言語
・インラインヘルプと入力支援機能で初心者も安心
・スプライト描画による回転/拡大縮小/半透明表示
・ソフトウェア音源とMMLによるサウンド再生
・GPIO/l2C/SPI命令でハード制御も自由自在
・ネットワーク通信命令搭載
・外部プログラム呼び出し命令で機能を自由に拡張
・豊富なサンプルプログラムとツールを搭載
・ゲーム制作に役立つ画像・サウンド素材も多数搭載
・ネットワーク経由で自動アップデート
■公式サイト
http://smilebasic.com/pistarter/
■公式フォーラム
https://app.smileboom.com/pistarter/forum/
特定個人やグループへの攻撃、作品への過剰な批判…
など荒れる話題はスルーしてください。
楽しいBASICライフを! まだ買ってないけどメモリアクセス高速化されてないですよね SDがTLCで書き込み回数上限1000回だからあっという間に寿命来ると思うんだがどうすれば ほんとに複製したSDカードで使えないのか、誰か試してくれ >>58
BASICになにをもとめてるの?
>>59
杞憂君こんちは >>62
いや、1000回って結構すぐにダメになるよ。
ファイルチェーンのところにアクセスが集中するから。
しかしBASICプログラムをちまちま遊ぶだけなら耐えられるかもなあ。
きっとそんなにヘヴィな使い方しないよね。 >>63
BASICだけだったら耐えられたかもしれないが、これRaspbianの上で動いてるんだぜ?
スワップもログも動いてるから時限装置付きって考えたほうがええんとちゃう? オンライン認証形式だからコピーしてHDD起動でいけるやろ >>65
それができていたらこんなに騒いでないと思うぞ。 button()命令でボタンの状態を読み込めるのは分かったのだけど
右上とかABボタン同時押しみたいな状態ってどう読めばいいの?
b=button(2,-1)
if b and #BID_UP then 〜
elseif b and #BID_RIGHT then 〜
endif
みたいにビット演算すればいいのだろうかなと思ったんだけど、
うまくいかないんだけど
if b == 1 then 〜
elseif b == 2 then 〜
みたくすればボタン単位に拾えるけど、これだと同時押しされてると拾えないよね
あとこれ、パッドでないと同時押しの検出とかできないの? >>65
microsdの個別IDを送信してオンライン認証するから
オンライン認証したmicrosd挿したままHDDで起動ってことだろ?
だめなの? >>68
どういう処理するか知らんから適当言うけど
elseifじゃなくてifの羅列にすればいいんじゃないの? 同時押しは
IF (b AND #BID_UP) && (b AND #BID_RIGHT) THEN
〜〜
ENDIF >>68
ボタンの数だけ配列用意するじゃろう?
で、ボタンのチェックする。
いま配列に入ってるボタンの過去の状態と今の状態を比べる、
押されていない状態から押された状態になったら、ボタンの配列に押されてるよ、というデータを入れる。
押されていた→離されたのも配列に反映するんだよ。
で、今どのボタンが押されているのかは配列の方を見てチェックするんだ。
そうすると複数のボタンが押されているのかどうかチェックが出来る。
わかりづらい説明ですまん。 >>69
SDカードは本体に刺さってないと認証通らないらしい。
だからpistarterのシステム殺して外付けHDDとかでシステム起動して、というような使い方する感じかな。
やったことないけどラズパイ3B+ってシステム入っていないマイクロSD入れてUSBからシステム起動できるんだろうか。 外付けドライブ起動ためしてみた。
結論としてはできた。
>>75 で書いた方法そのまま、PiStarterまず別のドライブにバックアップして、
PiStarterのbootの中身を消して起動できなくする。
PiStarterのSDは本体に挿入。
外付けドライブからバックアップしたPiStarterで起動。 何度もすまん、マジ教えて
ゲームパッドの十字キーの上下を判別したいんだが、できない
みようみまねだがこんなリスト作った
while 1
b=button(0,-1,0)
if (b and #bid_up) then print "up"
if (b and #bid_down) then print "down"
vsync 1
wend
上を押したら「up」、下を押したら「down」と表示させたくてこう作ったんだけど
これだと上を押したら「down」と表示されてしまう
逆に下を押したら何も表示されない
ためしに、print format$("%06d",#bid_up)ってやってみたら「0」と、
print format$("%06d",#bid_down)ってやってみたら「1」と表示された
またbを表示させると、上を押すと「1」、下を押すと「2」と表示された
button()で機能IDに-1を指定するとこのbには、上が押されたら32bitの最下位2ビットに01が
下が押されたら10が格納されてくるのだと思ってたけど、違うの?
この#btn_xxxってラベルはウソなの?
ゲームパッドはロジクールのF310でXinputモード、PiSTARTERの設定もパッドの種類は「0」の
Xinputにそろえてあるしそっちのテスト画面では上下もボタンも正しく認識してる
本当助けてマジ吐きそう死にたい >>79
if文の()は要らないんじゃ?
@button-test
vsync 1
b=button() 'カッコ内は基本値だったので省略してます
if b and #bid_up then print"up"
goto @button-test
とか
SmileBASIC-R 1.6.0 Reference Manual
https://app.smileboom.com/pistarter/reference/ 標準のBASIC仕様じゃないからアレなことになるだろw #BID_UP=0
#BID_DOWN=1
となっているので3DSと判定方法が変わるね。
IF b and (1<<#BID_UP) THEN ? “up“
〜DOWNも同じ〜
でいけると思う。 >>80
回答どうもです
>if文の()は要らないんじゃ?
外してみましたが、変わりませんでした
@button-test も試してみましたが、上でupと表示させたい場合
if b and #bid_down then print "up"
みたいにしないとupの表示はされませんでした
また下でdownと表示させたいのなら
if b and #bid_left then print "down"
でした
>SmileBASIC-R 1.6.0 Reference Manual
>https://app.smileboom.com/pistarter/reference/
そこを見て、そこにある通りにしているつもりなのですが、
どうもbutton()で帰ってくるビット列、1ビット右にズレてるんじゃないですかね
ついてきてるゲームとか、本当にちゃんとbuttonとか使って動いてるんですよね?
はー嫌になってきた >>82
そうやって左シフトして使うものだっていうのって、それはおかしいと思うんだよね
公式の情報とも合ってないし ゲームパッドのキーアサインが特殊なのかな?
@test
vsync 1
b=button()
if b==#bid_up then print b
if b==#bid_down then print b
if b==#bid_left then print b
if b==#bid_right then print b
goto @test
こうやってパッドのボタンの数字をメモって
if b==1 then print"up"
とするしかないかな? PCの場合はゲームパッドのドライバでそれぞれのキーが割り当てられると思うけど
ロジクールのパッドは(他のパッドは大丈夫なのかな?)#BID_UPの内容とズレちゃってるのかも?
#〜は色変更とかでもcolor #TREDと使えるだけで、本来は数字指定でcolor 3とやっても良いからね
if b and 1 then print"up" とか if b==1 then print"up" でやるしかないかな
ただ、こうやった場合はプログラム配布する場合どうなるんだろう…という問題が出てくる気もする >>85-86
Xinputなのでキーアサインは問題ないとおもう
設定画面とかではちゃんと認識するし、ソリッドガンナーRもちゃんと操作できる
#bid_xxxなんて使わずに、マニュアルにどうかかれていようが戻ってくる値で判定する、
とするしかないのかもしれないけど、でもこれ、#bid_xxxを用意している作り手側の意図とは
違う挙動なのでしょ
いつか正されるような気がする
そしてそんな修正の影響を受けないようにするはずの#bid_xxxが機能してないと…
直してもらってからじゃないとまだ作り始めないほうがいいのかな AppGameKit V2018.10.10リリース!
https://www.appgamekit.com/news/post/appgamekit-v20181010-released
今日、我々は新しいコマンドと修正の範囲でAppGameKitの新しいバージョンをリリースしました。
このバージョンの新機能の詳細は以下の通りです:
I/O
・ コマンドが最後に呼び出されて以来、物理キーボードに入力されたテキストを返すためにGetCharBufferと
GetCharBufferLengthが追加されました。
・ ジョイスティックの追加機能をサポートするためにGetRawJoystickSliderとGetRawJoystickPOVを追加する
・ ジョイスティックボタンの数を64に増加
・ 左/右シフト/ ctrl / altキーや、数字キーと上の行番号キーの区別など、WindowsおよびLinux上でより多く
のキーボードキーのサポートが追加されました
・ 新しいキーリストについては、https://www.appgamekit.com/documentation/guides/scancodes.htmのスキ
ャンコードリストを更新しました。
エディットボックス
・ エディットボックスの幅が2文字の幅よりも小さい場合は、エディットボックスがちらつくのを修正
ネットワーキング
・ 再送信できるようにネットワークメッセージをコピーするためのCopyNetworkMessageコマンドが追加されま
した。
・ iOS上のGetInternetStateを変更して、ネットワーク接続の欠如をよりよく検出
サウンド
・ 磁気カバー付きのデバイスをスリープ状態にした後、一部のiOSデバイスでオーディオの再生に失敗する
・ アプリがバックグラウンドに送信されてから再開されると、iOSの固定音が再生されないことがある
3D
・ ARMデバイスにロードできない3DSモデルの修正 プッシュ通知
・ GetPushNotificationTokenがAndroid上で空の文字列を返すことがあったのを修正しました。そのためには
SetPushNotificationKeysを呼び出す必要があります
ファイルI / O
・ Android上のOpenToWriteを修正して、一部のデバイスで必要なフォルダを作成できず、ファイルを作成で
きない
HTTP
・ Android上のGetHTTPFileを修正して、一部のデバイスに必要なフォルダを作成できず、ファイルの作成に
失敗しました
・ SetFolderが実行中に使用されている場合、GetHTTPFileがファイルの保存に失敗しました。
エクスポート
・ Windows上の古いバージョンよりも新しいバージョンのAGKをインストールして、APKエクスポートエラーが
発生する問題を修正しました。
・ Firebase JSONファイルを正しく解析できない場合があるAPKエクスポートを修正しました。
アンドロイド
・ Androidで固定のGetDeviceIDが空の文字列を返すことがある
ディープリンク
・ AndroidおよびiOSのエクスポート中にURLスキームを追加するオプションを追加しました。これにより、エク
スポートされたアプリケーションをブラウザリンクで開くことができます
・ AndroidおよびiOSでアプリを開くために使用されたURLを返すGetURLSchemeTextを追加しました
スプライト
・ 1つのディメンションのサイズが0で有効なはさみになるようにスプライトとテキストのはさみを変更しました じぶんもロジクールつないでるんだけど、ちょっとおかしいよ。
Dパッドがアナログの方にいくんだよ。
このコントローラなら普通につかえる、っていう情報がほしいね。
ちな、確認方法なんだけど。
#bidうにゃうにゃ とかヘルプにも値がでてるじゃない?
だから普通に b=button()で値取ったらさ、画面にそのままbをprintしたほうが楽じゃない? ていうか、連続すまん。
ロジクールのコントローラが変なのはPiStarterだけじゃなくて、ほかでもそうだから
そっちに問題があると思ったほうが良いと思う。
公式本だとバッファローのSFC風コントローラ繋いでたなー。
あれなら普通につかえるのか? |i .i l :N_, -弋 \弌弋ナ:}:.:}
:.|i∧ ', :{ ,ィjモト \ イjミトイイV : ____
.| :メヽ.', `ozZ} izN。ハ::{ / \
:.| :ヾ_! ゝ "゙゙ ' `゙ ハ.:', : / ____ \
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ. `( / ●>/ <●\ )
:. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. V  ̄ (oo  ̄ V
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ \.:\ (6 ノ__ヽ 6)
:. / . / ヽi .:.:.{ /(^` |.:.:.:./ }: . ヽ.:. | ( トェェェェイ ) |>>1
/ / } ヽ:.ハ ヤ{ !.:./ |:.:. i ' | ヽ二ノ |
./ .,イ .:..} / l ! レ l:.:.: .ハ ', ∧ ヽ__ノ ∧
{ /| .:.:ハ / l i i /:.:.:/ }:.} ,. '´ ̄\ /゙゙゙``ー- 、
V | .:.:/:.: ', / iノ :i ! /:.:i.:{ リ/ ヽ ハ `ー '´ / ;' `ヽ
ヽ:.:{、.:.:.l | | |. /:.::∧| ,′ / `ヽ ,... -‐一 ¨¨´ ヽ
ヽ! )人 | ! / \! : i ,′ _ j _ ',
" ヽ=@ / { / ,‐-ゝ,,,_ ヽ! .; i
:. \__/ \______/ と'''‐- -`ヽ ヽ ` Y ´ .:::':、
/ b ~''‐- .,,_ ヽ ,ハ .;。: ヽ ',
:. / ;こ二二  ̄ \' .. ゝ、_ ノハ :. ':
/ \ /!こ二二 ,,,,,_ \ `゙゙゙゙゙´ '、 ', '; キーボードの同時押しは一部キーしか対応してない。ゲームパッド扱いだから。
で、処理方法は
b=button()
if (b >> #BID_UP) and 1 then
とかで行けるんじゃないかな。
しっかりためしてないけど。
1bitシフトしないと動かないってのは #BID_UPって内容ゼロだし。
それといくら論理演算したって出ないっしょ。 こんなふうにやるのだよ
b=button()
if b and 1 then print "up"
if b and 2 then print "down"
if b and 4 then print "left"
if b and 8 then print "right"
if b and 16 then print "a"
if b and 32 then print "b"
要するに#BID_○○は使っちゃダメってこと
そもそも#BID_○○って
#BID_UP…0
#BID_DOWN…1
#BID_LEFT…2
#BID_RIGHT…3
#BID_A…4
#BID_B…5
っていう変な内容なので、button()系では全く役に立たない代物
あんなものをリファレンスの紛らわしい場所に載っけてるのが悪いのさ >>77 まねして外付けUSB起動出来た。linuxコマンド慣れてないから大変だった! >>77
この起動方法の場合、起動後はmicroSDカードへのアクセス発生してる?
ブート時のマスター確認だけだったらmicroSDカードは空っぽにして使いたい
ちなみに未だにUSBブート可能なモデルは持ってない 空っぽにしたいのはカードスロットでなくてカードの内容だけね >>99
microSDはbootもext4もマウントしないで個別idを参照するだけだから中身空売でいいと思う df すると sdaしか読んでないから本体に刺したSDは参照してないと思う。多分。
詳しい人詳細plz >>97
めんどくさくても定数用意されったらそっち使ったほうが安全ってもんよ。
bit直接参照したほうが手っ取り早いのは事実だけどもねー。 b=button()でボタンのデータとって
b && (1<<#BID_**) で0か0じゃないか判定するか
(b >> #BID_** ) and 1 で1か0か判定するか。
丁寧なやり方はこう。
でもいちいちこんなの書くのめんどくさいからファンクションにする。
def chk( btn, chbit )
return btn>>chbit and 1
end
つかうには
if chk(b,#BID_UP) then 処理
みたいなな?
かんたんじゃろう? >>100 >>101
お返事ありがとう。
USBブート行けるんだったらPi STARTER専用機として2B(V1.2)へ移行してみる。
現状ではファンレスで使いたいので3B(+)への移行は考えてない。 スマン。レスアンカーミスってた。
>>100 >>101でなくて
>>101 >>102だった。 microSDカードが起動キーと化してしまえば物理的な消耗の心配しなくて済む。 3B(+)より2Bv1.2のほうが高かったのね・・・・・・。orz 2Bだからってファンレス大丈夫という話はないぞい。
3にくらべたら多少マシなくらいで。 >>>111
代弁乙
2Bv1.2の代わりに3B+をファンレスで使って楽しむのも当然OK ラズパイでカメラバンバン使うとSDカードは3か月持たない事が実証されてるから心配するのは仕方ない
ロガーとかモーター動かす程度なら大丈夫だろうけど 寿命短くなるから冷やしたほうが良いので心配してるのを杞憂バカというのか。
ひどい人たちだな。 理屈でファンレス叩くのはやめような
風切り音を無くして静かにラズパイを使いたい人もいる >>116
どうみてもファンレス叩いてる人は居ないでしょ
冷却推奨の人を罵ってる人は居るけど PiSTARTER自身のディスクI/Oはほぼ無さそうだね
Sambaのログの方がMicroSDには良くなさそうだ >>117
自分ガー言ってると泥沼化するからヤメロ
アドバイスのつもりでも>>110の時点でケチ付いてる >>120
ごめん何言ってるか分からない
私は>>113を書き込んだけれど、>>110の人ががケチ付けてるように思うのならどうしようもないけど
>>110の人の内容は3に比べて2Bはクロック低いから発熱量少ないけどフルで動かせば危ないというだけの話に見える
ほんの僅かな冷却ファンのノイズにもストレスを感じるという主張も理解できるけど
目玉焼きに塩コショウか醤油か程度の事で過剰に怒りすぎに思えるのは、私には関係ない話だからかもしれないね 正しいことでも言い方次第ではお湯を沸かす燃料になる
燃料燃やすと僅かな灰しか残らない
自己満足の言い負かしは掲示板の空気が冷えて人が少なくなる
それで困らないんだったら後のことは知らないものとして扱うだけ 1.6.0が出てから一ヶ月だけど、もう更新はないの? MetricBeatsで見ると、パイスタをvsyncやwaitなしで動かしていても1コア使いきってないので、
パイスタ動かしてるならプロセッサの冷却は不要だね
ラズパイ一般論や、他の用途でプロセッサの冷却が必要かどうかというのは、それぞれのスレで聞くとよいだろうね いろいろと精神があれなのが多いな
俺が言いたいのは一言だけ
SDカードの寿命気にするやつ
実際に壊れてから騒げよ
机上のクーロン黒騷で騒ぐな馬鹿 言い方次第と自分で言いつつ、言動アレな人が居付いてるんだなぁ これ2台のラズパイ3Bがあったとして
ネットに繋がった1台で1度認証してあれば
ネットに繋がってないもう1台にpi starterのmicrosd挿せば
アップデートとかできないだけでどっちでも使えるんだよね? >>126
バグはないのかもしれないが、実装されてない命令とか、まだありそうにも思えるが PiStarterのSDはまだ壊れていないけどいままで散々SD壊し続けてきたし、延命しても頑張って1年くらいだからやっぱ対策したいよね。
あとは、冷却はねぇ。しないとまじでRaspberry Pi壊れるよ。冷却してるのに比べて寿命半分以下かな。
それでも静かに使いたいならそういうのもありだし、あとSDも、交換サービスみたいなの用意されるって書いてるし神経質にならなくていいんじゃないかな。
なんか精神論とか言い方が気に食わないとかケチつけてるのが一番ヤバいよね。
チンピラかみたいな(笑 何とか折り合い付けようとしながら相手の問題点を挙げて
マウント取ろうとするのは痛いだけだから止めような パソコンミニの時は公式でも、SDカード破損に備えてバックアップして、コピーの方を使ってくださいって言ってたのにな キー入力の人は解決したんだろうか?
普通に考えれば
2^0=1
2^1=2
2^3=4
(略)
だから
b and 2^#BID_UP
b and 2^#BID_DOWN
(略)
※2^の方は()がいるかも
であとは>>97の方法で良さそうだけど >>118
ヒートシンクって風が流れてるの前提の冷却装置だからなあ。
無風だと大して効果ないよ。 我ながらわかりにくかったので修正
#BID_UP…0
#BID_DOWN…1
#BID_LEFT…2
#BID_RIGHT…3
#BID_A…4
#BID_B…5
ってのは「bit番号」になっていると思うので
2^n
で数値に変換すると
2^#BID_UP =1
2^#BID_DOWN =2
2^#BID_LEFT =4
2^#BID_RIGHT =8
(以降略)
となるので>>97の方法だと
b=button()
if b and (2^#BID_UP) then print "up"
if b and (2^#BID_DOWN) then print "down"
if b and (2^#BID_LEFT) then print "left"
if b and (2^#BID_RIGHT) then print "right"
(以降略)
でできると思うよ
と言う事ね、()優先順位次第で無くても可 たびたびすまんorz
×()優先順位次第で無くても可
〇()は優先順位次第で無くても可
"は"が抜けてたので訂正
演算の優先順位次第で無くてもいいと言う事ね 「2^0は1」って言うのは数学的なものだから、BASICの仕様で変わる事はないはずだから
特殊な事をしていない限り他の環境でも使えるよ
https://www.proof0309.com/entry/2no0zyou
>>140
何か埋めちゃって申し訳ないけど、発熱が少なければ無風でも冷えるよ
暑くなった空気は上昇して行くから、ケースが密閉でなければ循環が起きるからね
さすがに>>118なら冷えないと言う事は無いと思うw >>141
こんな風に毎度演算をさせずに使えるようにするものがよいリテラル定数の設計だと思うのだがプチコンなんかもこんな風だったのかい? このスレ噛み付く粘着が住み付いてるから変なこと言われてもスルーに限る
手持ちの2Bはファンレス金属ケースで充分排熱出来てる あくまでも「>>97の方法で検出できるなら」と言う事ね
b and 1
で条件式として処理されてしまう場合はビットの判断はできないと思うから悪しからず
その場合もbitの大きい方から順に引いていけば可能
if (b - 2^#BID_**)>=0 then print "**":b=b-2^#BID_**
で、この場合#BID_Bから処理すればおk
※**はRIGHTとかAなど
だけど、ビットシフトがあるなら、ビットシフトをを使った方がすっきりすると思うから
>>105の方法で良いと思う
「定数がbitになってるときは2^nでおk」てのを書くだけなのに、過疎っていたから連投
しちゃったけど、間に挟まったの気づかなくてすまんかった 開発の人もβ版試用の人も、ろくに触ってないって事が解ってしまった話だね
>>146
何でそうやって嫌味を一言付けたがるのか… >>148
プチコン界隈は言いたい事も言えないんだよ。なんのためのβかって話になるが 買おうかと思ったけど公式フォーラムもツイッターもここも全然盛り上がってないな
やっぱラズパイってのがネック? >>148-149
嫌味を言っているのは>>144-145じゃないかな?
「他人の意見は嫌味だけど自分の意見は嫌味じゃない」と言うのはずいぶん幼稚だね オウム返しは良くないな、自分のためにもならないよ
まあSD紐付けの回避方法がないか見に来て説教垂れたのは悪かった、最近似たような
奴に別のスレで絡まれてちょっと言い過ぎたよ 叩きながら反省する素振りはダブスタ対応過ぎる
後はスレの流れが落ち着くまで静観してる