トピック
受付中
ボーネン gurigura2003

【誰かが質問したら上級者が答えてくれるスレ1】

どうも久しぶりです。ボーネンです。 ミーバースサービス終了ですね。 しかしまだまだミバ留学している方もいらっしゃると思います。 そこでその方たちの「質問」を一ヶ所にあつまればいいのでは…?ということです。 上級者さんも見かけたら協力していただきたい、そ~んなトピックです。 需要はただ単にコメ数が増えれば通知もたくさんの方にわたってあとになればなるほどその質問がいきわたる…みたいな… というわけで質問ある方をどうぞ優しいお兄さん達が答えてくれます()
7そうだね
プレイ済み
返信[1]
親投稿
ボーネン gurigura2003
ちなみに初心者です!なにをすればいいの?という方は 「変数 IF文 乱数」を覚えれば どうにかなります() 検索すればでてきます。 また、プログラム単体、辞書(?)ある程度の使い方は 「プチコン非公式Wiki」が役に立つかとおもいます。 ちなみに青鳥してるよ!みんn(ry
4そうだね
プレイ済み
返信[2]
親投稿
bはかせ kojimadaiti
プログラムを組んで実行した時 例えば何かを表示する命令を書いたときに それを完全に表示してしまってから次の 命令の実行に移るのか、 表示するよっていう予定だけたてといてから 次の命令の作業に取り掛かりつつ 表示も並行してやっていくのか がなんとなく疑問に思いました。
1そうだね
プレイ済み
返信[3]
親投稿
キルル2 kiruru2
命令はひとつひとつ完全に実行されてから次の処理に移っている気がしますね とりあえず私は、綺麗な曲線を描く方法を教えてほしいです
6そうだね
プレイ済み
返信[4]
親投稿
綺麗な曲線がどのような曲線を指すのか分かりませんが、第一回SB2WEEKS用に作ったカテナリー曲線のプログラムを載せておきます。 公開キー[L3NNQE]
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
SPANIMEなど引数に時間が設定出来る命令では次の命令の 処理をしつつ表示などを並行で行いますね。 プチコン3号は命令の実行速度が充分速いのですがPRINT命令で 大量の文字を表示すると表示処理に時間が掛かります。 例)PRINT "A"*100000
1そうだね
プレイ済み
返信[6]
親投稿
イブイブ ibukifumoto
僕は何をやっても「エラー文例がおかしいと出てきます。どうすれば」
0そうだね
プレイ済み
返信[7]
親投稿
↑ それは、あなたが入力している言葉をプチコンが理解できないからです。 なので、プチコンがわかるように言葉を換えて命令しないといけません。 例えば、 PRINT 20*20*3.14 とかだとエラーは出ないはずです。 プチコン初心者講座を見て、命令などを覚えていきましょう。
2そうだね
プレイ済み
返信[8]
親投稿
イブイブ ibukifumoto
この音階なに音階高くしてしまった。
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
bはかせさんへ otta777さんも書いているようにSPANIM等の例外はありますが、基本的にプチコン3号の命令は順番に1つずつ実行されています。 ただし、実行と反映は同時に行われるわけではないため疑問に感じているのではないかと思います。 実はPRINTにしろGFILLにしろ画面上に表示する命令は実行した瞬間に画面に表示されるわけではありません。表示更新のタイミングで画面に表示されるわけです。表示更新のタイミングは約1/60秒(1フレーム)ごとにやってきますがこのタイミングを作る側は考える必要はありません。 それはVSYNCという便利な命令があるためです。 このVSYNCによって表示更新のタイミングまで自動的に待ってそれから次の命令に移ってくれます。
3そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
これが分かれば「大量の敵や弾が同時に動くゲーム」というのも同時ではなく1フレームの中で順番に動かしていけば良いことが分かると思います。 もっとも、プチコン3号の演算速度はかつての8bit機が主流だった1980年代のパソコンのBASICと比べて数100~数1000倍も速くて1つの命令を実行するのに数100ナノ秒~数マイクロ秒程度です。(ナノ秒は10億分の1秒、マイクロ秒は100万分の1秒) したがって、ぱっと見では「同時に実行して見えている」というのもあるかもしれないですね。
3そうだね
プレイ済み
返信[11]
親投稿
イブイブ ibukifumoto
INPUTの使い方がいまいち………
0そうだね
プレイ済み
返信[12]
親投稿
INPUTの使い方 INPUT "好きな文字列",変数1 例 ACLS VAR N%,M% INPUT "数を2つ入力してください",N%,M% ?FORMAT$("%dの%d乗は%dです",N%,M%,POW(N,M)) ちなみに文字列専用のLINPUTというものもあります。使い方はINPUTとほぼ同じです。
0そうだね
プレイ済み
返信[13]
親投稿
イブイブ ibukifumoto
ありがとうございます! 簡易的な質問をする物ができました!
1そうだね
プレイ済み
返信[14]
親投稿
イブイブ ibukifumoto
あの~ランダム出るようにしたら 「ラベルが二重定義されている」と出ます!どうすればいいですか?
0そうだね
プレイ済み
返信[15]
親投稿
Soybeanman 2013niconico
イブイブさん>> プログラム見ないとなんとも言えんです… とりあえず、@ラベルを全部見てみて 同じ名前のがあれば名前を変えれば直ると 思います。
0そうだね
プレイ済み
返信[16]
親投稿
Hikaru 106APX
ある四角の部分をタッチすると次の動作に移るプログラムを教えてください。初心者です。
1そうだね
プレイ済み
返信[17]
親投稿
Hikaruさん こんな感じでしょうか。
0そうだね
プレイ済み
返信[18]
親投稿
イブイブ ibukifumoto
ボタンと連動やBGの動かし方を教えてください
1そうだね
プレイ済み
返信[19]
親投稿
Hikaru 106APX
>こういちさん  いつもありがとうございます!
1そうだね
プレイ済み
返信[20]
親投稿
TERA(LL) tera0413
ところで、Hikaruさん、既に閉じられたトピックで「ランダムで重複しない」の¨重複¨の意味は、得られた回答と合ってたのでしょうか? (余計なお世話かも知れませんが、画像は、10枚のカードをシャッフルする方法)
1そうだね
プレイ済み
返信[21]
親投稿
TERA(LL) tera0413
イブイブさん BGを動かすと言うのが上下左右にスクロールさせると言う意味なら、BGOFSで。 (実際の使い方はヘルプを見ながら試行錯誤で)
0そうだね
プレイ済み
返信[22]
親投稿
Hikaru 106APX
>TERA(LL)さん 12枚のカードをシャッフルし、1人1人にランダムで与えるようなプログラムが欲しかったです。初心者なのでよくわからなかったんですが...
1そうだね
プレイ済み
返信[23]
親投稿
TERA(LL) tera0413
Hikaruさん コメントから、質問(まだ疑問が残っている)なのか解決したのか、わからなかったので、念のため、12枚のカードを4人に配る一例を残しておきます。 (ついでにソートする例も含めてます)
0そうだね
プレイ済み
返信[24]
親投稿
ぷうた FUTA.2004
スライドパッドと十字ボタンでx,yなどの値を20フレームごとに増やしたり減らしたりいことがよくあるんですが(選択肢の矢印を動かすなど) いつもIF文とor使って値を変えているんですが abs()を使うといいと聞いたんですが(こういちさんの明晰夢) どうすればいいですか?
1そうだね
プレイ済み
返信[25]
親投稿
キルル2 kiruru2
こんな感じでボタンやスティックの入力を受け付け続けて、20フレームたったら一気に反映させれば良いと思います
0そうだね
プレイ済み
返信[26]
親投稿
TERA(LL) tera0413
ぷうたさん 「こういちさんの明晰夢」とやらをみつけられませんでしたが、abs(絶対値)を使うということは、多分IF文を使わずに計算式だけでボタン入力の判定をする方法の事と思います。 画像は、その一例。 (IF文は、論理式で置き換えられます)
0そうだね
プレイ済み
返信[27]
親投稿
ぷうたさん あー。そんなこともありましたねー。 夢の中で考えたやつなので詳しい式は覚えてません。そもそも思った通りに動くのかすら分かりません。 TERA(LL)さん 一応URL貼っておきます。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0f9xogH9A
0そうだね
プレイ済み
返信[28]
親投稿
えーっと。 十字ボタンとスティック両方が操作されたときのことを考えると、後に処理された方が優先されます。 ただ、スティックの方を優先させたいとき、 DEF BSTICK out x,y if button() and 1 then y=-1 (省略) stick out x,y end とすると、ボタンに反応しなくなります。 (続く)
0そうだね
プレイ済み
返信[29]
親投稿
なので、「スティックが触られたなら、スティックの値を返す」という処理にしたいです。 その「スティックが触られた」ことを判定するのがABS()です。 ABS()を使うとさっきのDEFは、 def bstick out x,y var sx,sy if button() and 1 then y=-1 (省略) stick out sx,sy if abs(sx)>=0.5||abs(sy)>=0.5 then x=sx y=sy endif end になります。(多分夢の中のやり方とは違います。)
0そうだね
プレイ済み
返信[30]
親投稿
Ϊċăņ ďо įт hikahikaru3
こめざん
0そうだね
未プレイ
返信[31]
親投稿
ぷうた FUTA.2004
皆さんありがとうございます!
1そうだね
プレイ済み