したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

【初心者歓迎】プチコンなんでも相談室【質問専用スレ】

1プチコンまとめWiki管理人★:2012/08/25(土) 15:52:47 ID:???
こちらは【初心者歓迎】の【質問専用スレッド】です。
プチコンで分からない事があったら、こちらで質問してください。
知識のある方は、よろしければ質問への回答のご協力をお願いします。
雑談その他は【プチコン総合スレッド】へお願いします。

★これは2ちゃんねるによく似た見た目の掲示板ですが、
ここは2ちゃんねるではなく、プチコンまとめWikiの一部です。お気軽に書き込んでください。
また、不適切な書き込み・他人が不快になる書き込みは削除する場合があります。

★マナーを守って楽しく書き込みましょう!
・質問前に、自分で出来る事は最大限試してみて下さい。きっと上達につながります。
・質問内容はなるべく詳しく書きましょう。
 ×プログラムを書いたんですが動きません
 ○上記のように命令を書いたんですが、「Syntax Error」というエラーが出てしまいます
・質問者も回答者も気持ちよく話を締められるように、解決したら一言お礼をお願いします。
 (質問者からの返答がなく、解決したのかもよく分からない状態になるのは良くないことです)

559名無しさん:2014/07/07(月) 20:32:36 ID:ZdyfBh.g
>>557
このサイトが参考になると思う
ochameclub.web.fc2.com/petitcom/tips/save.htm

560名無しさん:2014/08/26(火) 09:42:17 ID:/kTuIkLY
5個の数字の入った変数(桁は不規則)をMEM$に保存しようと思っているのですが数値を文字にして保存出来ましたがそれを取り出す方法はわかりません。誰か教えてください。

561名無しさん:2014/08/26(火) 13:55:01 ID:K17I3QVw
まず、その、5つの数字をMEM$に保存する部分のプログラムを見せてくださいね。
取り出す方も、「こんなプログラムを書いてみたが失敗した」があれば、なお良いです。

562名無しさん:2014/08/26(火) 19:54:14 ID:/kTuIkLY
>>561
セーブは
(変数内の数字は仮です。)
A=1
B=10
C=100
D=1000
E=10000
A$=STR$(A)
B$=STR$(B)
C$=STR$(C)
D$=STR$(D)
E$=STR$(E)
MEM$=A$+"/"+B$+"/"+C$+"/"+D$+"/"+E$+"/"
です。
ロードはMID$を使おうとしましたが数値が不規則なのでどう取り出せばいいかわからなくて無理でした。

563名無しさん:2014/08/26(火) 22:05:44 ID:K17I3QVw
このページの「区切りを入れて記録する方法」の箇所を参照してください。
ttp://ochameclub.web.fc2.com/petitcom/tips/save.htm
簡単に解説すると、
INSTR命令で数値の区切りに使った文字の位置を得て、
それを元にMID$()命令に与える範囲を決定すれば良いです。
参照先では配列変数を使っていますが、A-Eの変数名を使うなら
変数ごとに5回、そういう処理を書けば良いです。

564名無しさん:2014/08/26(火) 23:30:13 ID:/kTuIkLY
>>563
ありがとうございます。
INSTR命令ってのがあったんですね。
がんばってみます。

565@0918nobita:2014/11/08(土) 16:44:54 ID:hIK.sEuE
指定した範囲に直角三角形/2等辺三角形/ひし形/円/楕円/文字を
追加したり、透明度を指定して塗りつぶしができるGRPリソース編集ソフトを
開発中ですが、フリーハンドの線の描画に手間取ってます。ほかの画像編集ソフトでは
可能ですが、しくみがよくわからりません。途切れ途切れではなく、滑らかな途切れのない線を
書けるようにしたいです。

566名無しさん:2014/11/08(土) 22:01:39 ID:Lb/Jfqu2
直前のタッチ位置と現在のタッチ位置の間に線を描くだけじゃないの?
@LOOP
OLDX=TCHX
OLDY=TCHY
VSYNC 1
GLINE OLDX,OLDY,TCHX,TCHY,2
GOTO @LOOP
みたいな。

567天郷思音 ◆vCvQmsUz9g:2014/11/09(日) 11:18:06 ID:i0TzrNEk
>>566
VSYNCのかわりに「1回離してもう1回タッチされるのを待つ」処理にしたほうがいいのかな。

568名無しさん:2014/11/19(水) 19:42:18 ID:uBbCCfzU
本体のカメラで撮った写真を表示して色々と遊んでみたいのですが、
どうすれば写真のフォルダーを指定したり、読み込んで表示できるんでしょうか?
立体で撮った写真を表示することってできるんでしょうか?

569名無しさん:2014/11/19(水) 21:27:23 ID:gHJGyJ/k
プチコン3号の質問です。
MAPエディタで作成したら "DAT:ファイル名"と出たのですが、ここからどうしたら
作成したMAPを画面に表示できますか? マニュアルには 配列に読み込ませる とありますが具体的
どのような命令文を使えばよいのでしょうか? MK-2では"LOAD"SCU0:ファイル名"で簡単だったので
プチコン3号では思うようにできず戸惑っています。
どうかよろしくお願いします。

570名無しさん:2014/11/20(木) 00:52:42 ID:gHJGyJ/k
自己解決しました。失礼しました。

571ゆきゆき:2014/11/22(土) 09:46:44 ID:m/tLE69E
スプリットとスプリット当たり判定ができないんだよね
どうやったらできるんだろ?

572名無しさん:2014/11/22(土) 13:27:31 ID:Lb/Jfqu2
「スプライト」な。
SPCOLを指定してやらんといかんのじゃないか

mk2はデフォルトの「グループ」が255だったのに対し
3号は「マスク」のデフォルト値が0に変わった
そんな印象なんだが、どうか

573名無しさん:2014/11/22(土) 17:54:11 ID:c9Aplhbo
プチコン3号からプログラムを始めた初心者です。
公式サイトの初心者講座にある
CLEAR:DIM APPLE(1)
APPLE(0)=56
PRINT "リンゴ";APPLE(0);"コ"
が何回やってもsyntax errorになります。ひととおり初心者講座を読んでBASIC解説サイトをいくつか見てみたのですが、エラーの原因が全くわかりません。
なんかもう心が折れそうなので誰か解決方法教えてくださいお願いします

574名無しさん:2014/11/22(土) 18:24:57 ID:6lBTFLAY
3号からDIMは( )じゃなくて[ ]になった

575名無しさん:2014/11/22(土) 18:54:16 ID:FSFNYj0Q
>>574
なん...だと...。まさかそんなに単純な原因だったなんて...orz

ありがとうございました。本当に助かりました。

576名無しさん:2014/11/22(土) 23:51:14 ID:zu43iMb.
>>569私も同じことで苦戦しているのですが、どうすればいいのですか?

577名無しさん:2014/11/23(日) 06:06:27 ID:Lb/Jfqu2
>>576,569
https://twitter.com/notohoho/status/535086519308926976

578名無しさん:2014/11/23(日) 11:20:18 ID:zu43iMb.
>>577ありがとうございます

579名無しさん:2014/11/23(日) 13:57:22 ID:zu43iMb.
>>577やったか!?と思ったけどできませんでした。
LOADSUB というのでシンタックスエラーが出てしまいます。
どうやったらできますか?

580名無しさん:2014/11/23(日) 16:16:47 ID:CL0nFoyE
プログラムを覚えるにはどこのサイトをみたらいいでしょうか

581僕もプログラムのサイト教えてください:2014/11/23(日) 18:31:46 ID:peouqp2Q
p

582名無しさん:2014/11/24(月) 00:14:28 ID:m30W0Za2
PAINTのとこにあるG0とG1っていうのは
「ここにオリジナルの素材とか描いてくれよな!」
って領域なんですか?
真実を知るまで怖くて手が出せません・・・

583名無しさん:2014/11/24(月) 06:45:41 ID:Lb/Jfqu2
>>579
https://miiverse.nintendo.net/posts/AYIHAAAEAADcU5Qx7Es57Q

>>582
その認識でも、だいたい合っています。
厳密な事は、後でもっとプチコン3号を
深く理解できるようになってからで構わないでしょう。

584名無しさん:2014/11/24(月) 11:53:31 ID:m30W0Za2
>>583

ありがとうございます!

585名無しさん:2014/11/24(月) 17:51:27 ID:zu43iMb.
ありがとうございます

586名無しさん:2014/11/25(火) 09:11:40 ID:CL0nFoyE
BASICっていろいろ種類がありますが
どれを覚えたらプチコンでゲームを作れますか?
SmallBASICでもいいんでしょうか

587天郷思音 ◆vCvQmsUz9g:2014/11/25(火) 11:29:59 ID:AZewKph.
>>586
やはりプチコンを買うのがベター。
VBAじゃないBASICならある程度通じるところがあるけど、やっぱりそれぞれでクセ(差異)があるから、別のBASICからはじめるのはおすすめではない。

588名無しさん:2014/11/25(火) 12:59:17 ID:CL0nFoyE
なるほど、わかりました。
ありがとうございます。

589名無しさん:2014/11/25(火) 23:28:10 ID:lA1Ywyl6
プチコン3号に内蔵してある電子取扱説明書の場所(起動する場所)がわからないのですがどこにあるのですか?
教えてください

590名無しさん:2014/11/25(火) 23:32:10 ID:zu43iMb.
自己解決しました。すみませんでした

591名無しさん:2014/11/27(木) 22:48:24 ID:DWKD9vFc
自分が作った画像を使ったゲームを他人に公開したいときって、
フォルダを新しく作って、そのフォルダの中だけでGRPを保存したりプログラムを組んだりして、
最終的にフォルダごとアップロードして公開って感じですか?

592名無しさん:2014/11/28(金) 20:13:40 ID:peouqp2Q
マイクラみたいなゲーム誰か作ってくれませんか
そしたらgtavそっくりのゲームの公開キーをその人だけに教えます
Facebookで友達になって公開キーを教えてください
僕も公開キーを教えます♪( ´▽`)お互い得していいと思いませんか?
誰か返事ください!!待ってます

593名無しさん:2014/12/04(木) 07:49:03 ID:DwncXLFw
スマイルツール内のMAPでつくったBGデータのロードの仕方がわかりません。

DIM A%[65796]
LOAD"DAT:MAP1",A%
BGLOAD 0,0,0,50,50,A%

MAPのソースを参考にしたこれでうまくいかないのですが、考え方として正しくないのでしょうか、、、。

594名無しさん:2014/12/04(木) 22:30:56 ID:Lb/Jfqu2
>>593
>>583

595593:2014/12/04(木) 23:43:45 ID:9YUCYSvE
>594
ありがとうございます。
既に話題に出てたのですね。
BGで検索かけたため、見逃してしまってました・・・。

596名無しさん:2014/12/05(金) 16:06:49 ID:6.OZwkjY
PUTCENTER(13,-256,"もじ")
DEF PUTCENTER(Y,Z,S$)
LOCATE (50-LEN(S$))/2,Y,Z
PRINT S$;
END

これで1行目にSyntax errorが出ました。
なぜですか?

597名無しさん:2014/12/05(金) 17:42:16 ID:Lb/Jfqu2
DEFの時に()を使うタイプのユーザー関数の作り方は、
必ず戻り値がなくてはいけないことになっています。

一行目で、
ユーザー関数PUTCENTERは戻り値を返すはずなのに、
その戻り値を活用したり受け取る方法が指示されてないのでエラーになります。

一行目を解決しても、ユーザー関数PUTCENTERは実際には
必要な戻り値を返す行為をしないので別のエラーになります。

戻り値が無いユーザー関数を作りたい場合は
()を使わないDEFの書き方をしてください。
ちなみに、その場合はユーザー関数とは呼ばず
「ユーザー命令」と呼び方が変わるようです。混同しても通じると思いますけど。

598名無しさん:2014/12/05(金) 18:11:39 ID:6.OZwkjY
>>597
PUTCENTER 13,-256,"もじ"
DEF PUTCENTER Y,Z,S$
LOCATE (50-LEN(S$))/2,Y,Z
PRINT S$;
END

()を外したら実行出来ました!
ありがとうございました!

599名無しさん:2014/12/07(日) 00:25:33 ID:3MmUzRb6
GCIRCLEの開始角終了角を使って円をだんだん描いていくっていうのをmk2でしていたのですが、
今回それがなくなったみたいで…代用する方法何かないでしょうか?
GCIRCLEで描画したものにぴったり合わさり、
かつ、だんだん円が描画されるように描画していきたいです。
GPSETをサインコサインで描いていく方法ではGCIRCLEにぴったり合わさらなかったので…。

600名無しさん:2014/12/07(日) 01:12:14 ID:Lb/Jfqu2
とりあえず、
自前で GCIRCLEで描画したものにぴったり合わさる 円を描く方法は
ttp://fussy.web.fc2.com/algo/algo2-1.htm
このページで紹介されている方法(最下部)でできましたよ

すぐ上には、少しの工夫で円弧も描ける、と説明されているので
その工夫ができればなんとかなるかな・・・?

あとは、ご自身で工夫なさるか、他の方のアドバイスを待つか、
GCIRCLEを使うのを諦めて全て自前で円を描くようにするか、でしょうか。

601名無しさん:2014/12/07(日) 02:03:48 ID:3MmUzRb6
>>600
回答ありがとうございます!
す、すごい…
これを改良して使っていきたいと思います!

602hill x2:2014/12/07(日) 09:00:16 ID:3PdlWGXc
え〜と、1~20と1~6のルーレットを同時に使えるようしてほしいです。ちなみに、クトゥルフTRPGに使おうと思っています。

603名無しさん:2014/12/07(日) 13:07:19 ID:Lb/Jfqu2
現状の、「どちらか1つしか同時に使えていない」状態の
ルーレットのソースコードを見せてください。
改善点がアドバイスしやすくなります。

604名無しさん:2014/12/09(火) 11:27:57 ID:v1lfoElo
下画面に四角いボタンをいくつか表示して
そこをタッチすると何か動作する(音が出るとか色が変わるとか)
というプログラムを作ってるんだけど
@MAIN
TOUCH OUT T,X,Y
IF X<50 AND X>90 AND Y<50 AND Y>90 THEN @SUB1
GOTO @MAIN
@SUB1
(他の命令)
GOTO @MAIN

あほな自分なりに考えてこのようにしたけど
タッチしても何も起こらない(エラーもでない)。
なにか考え方間違ってますか?
もっと巧みなやり方もあるんだろうけど
とりあえずこのやり方の間違いを教えてもらえるとうれしいです。

605604:2014/12/09(火) 11:41:47 ID:v1lfoElo
604の書き込みは不等号の向きがぜんぶ逆でした。

で、いま確認のためにRUNしたら普通に動きました。
昨夜,半徹夜でやってたのでぼけてたのかもしれません。
すみませんでした。

606604:2014/12/09(火) 11:57:13 ID:v1lfoElo
というわけで質問を少し変更させてもらいます。
どこをタッチしたか判定する際に、ボタンをシンプルな四角とかにして
IF X>50 AND X<90 AND Y>50 AND Y<90 THEN @SUB1
とやるくらいしか自分には思いつかないのですが
もっと複雑な形のボタンとか、移動するスプライトをボタンがわりにするとかのときには
この方法では限界がありそうです。
これに関連する命令とかってないでしょうか。

607名無しさん:2014/12/09(火) 17:14:14 ID:Lb/Jfqu2
プログラムですから、それを実現する方法は様々あり、どれが正解という事はありません。

「複雑な形の当たり判定」を実現するために、座標などいろいろ計算してもよいですが、
当たり判定の形の図形を描いておいて、タッチした位置で GSPOIT し、
読み取った色を元に判断する、という方法もあります。

「移動するスプライトを当たり判定」にするためには、
タッチした位置で SPHITRC する方法が一般的だと思いますが、

スプライトを管理するために座標などの変数を既に用意しているなら
それを使ってもいいし、
SPOFS OUT で座標、SPDEF OUT で縦横の幅、SPSCALE OUT で拡大率を
それぞれ得て計算してもいいです。

608名無しさん:2014/12/14(日) 16:30:51 ID:yBRr2aKo
迷路を作ろうと思ってるのですがBGの壁にスプライトが進めないようにしたいのですがどうしたらいいですか?頑張ってみたのですが全然できませんでした

609名無しさん:2014/12/14(日) 20:18:38 ID:yBRr2aKo
プチコン3号です

610名無しさん:2014/12/14(日) 20:49:09 ID:yBRr2aKo
BGGET命令を見つけました。それで判定はできるんですが真ん中に行かないと反応しませんし右と左のどちらからぶつかったら右側でそれ以上動けないなどにしたいのでまだ未解決です。

611名無しさん:2014/12/14(日) 20:51:51 ID:yBRr2aKo
あっもちろん左からだったら左側で上側からだったら上側で下側からだったら下側でそれ以上進めないというようにしたいです。連コメ及び長文失礼しました。

612名無しさん:2014/12/15(月) 01:48:50 ID:Lb/Jfqu2
キャラクターを実際に進ませる前に
これから進みたい方向の位置に対してBGGETしてみて
壁が無い時だけ進ませる(壁がある時は進む処理をキャンセルする)
ようにすれば良いでしょう。

もっと詳細に具体的に書き方を知りたい場合は、
現在のあなたのプログラムを見せていただければ
どこに何をどう書き加えたりすれば良いかアドバイスできると思います。

613名無しさん:2014/12/15(月) 17:19:41 ID:yBRr2aKo
>>612 回答ありがとうございます。ヘルプとにらめっこして頑張ります。

614名無しさん:2014/12/15(月) 22:27:41 ID:kSVD2mj6
プチコンってSD内の画像を表示したり加工したりできますか?

615614:2014/12/16(火) 17:51:27 ID:IIu/N8N.
解決しました

616名無しさん:2014/12/16(火) 20:52:03 ID:StfxjRhA
3号です。
セレクト、スタートボタンによる強制終了を回避したいのですが…
皆さまのお力をお貸しくだしゃい。
ちなみに用途はログイン失敗のペナルティタイムです。

617名無しさん:2014/12/16(火) 21:45:08 ID:Lb/Jfqu2
スタートボタン・セレクトボタンを
無効化したりすることはできません

618616:2014/12/17(水) 04:20:58 ID:StfxjRhA
なんと…
ありがとうございました。

619616:2014/12/19(金) 19:23:32 ID:StfxjRhA
連投すみません。
20面ダイスをふるプログラムを書こうとしたのですが、
一度走らせると大量の結果が吐き出されます。
FOR〜NEXTを入れてもまるでダメ。
このままだとパラノイアをプレイするのに幸福ではありません!
何卒お力添えをお願いします。
以下プログラムです。
@DICE
B=BUTTON(2)
IF B=16 THEN GOTO @RAMDOM
IF B!=16 THEN GOTO @DICE
@RAMDOM
D=RND(21)
IF D=0 THEN GOTO @RAMDOM
PRINT D
GOTO @DICE

620616:2014/12/19(金) 19:28:07 ID:StfxjRhA
BUTTON=(2)
はAボタンに対応させています。

621名無しさん:2014/12/19(金) 19:51:35 ID:MRvMr2eo
2行目を、こう書き換えてください。
VSYNC:B=BUTTON(2)
(行頭に「VSYNC:」を書き加える)

3行目と7行目、イコール記号を2つ続けて書いてください。

622616:2014/12/19(金) 20:45:31 ID:StfxjRhA
ありがとうございます!
もっと勉強しないとですね…

623名無しさん:2014/12/22(月) 18:29:47 ID:Oa1mEr3s
mkIIからMMLと簡易的なプログラムしか作っていない者なのですが、
BASICについての参考書や一から上達していけるように書かれているサイト等はありますか…?

624名無しさん:2014/12/25(木) 15:15:32 ID:MRvMr2eo
なかなか回答が付かないことが答えになってしまっていますが・・・
ttp://damedamepg3q.web.fc2.com/pet3Sta_sp1.html
このページなんて良いんじゃないでしょうか。

人は1度上達してしまうと、全く完璧に未経験だった頃の事は思い出せなくなるので
(えっ、自分だけ?)
そういう人向けにと最大限心がけても、全然相手に届かない
的外れなことになってしまいがちで、悩みの種です。

なので、あなたが今から挑戦すること、それを通じて理解した事を
全部書き留めて、後で解説にまとめて下されば良質な資料になると思うのですが・・・
「当時の自分は、なんでこんな単純で簡単な事が理解できなかったんだろう
恥ずかしい!」と思って手を加えずにはいられなくて
結局、出来上がった物は相手に届かない物になってしまいがち・・・
ああ!もどかしい!

もしも、それを逆に言うとするなら、最初から
中級者向け以上とかの解説を必死に読み解く方がタメになる、と
言える要素も無くはないのかも知れません、みたいな風にまで考えちゃったりして

625名無しさん:2015/01/05(月) 18:10:42 ID:gHJGyJ/k
プチコン3号になってから、mk2みたいにSPHITSPの使い方が出来なくなりました。

例えば、スプライト1と2の衝突判定を取る場合、どんなプログラムを書き出せばいいのでしょうか?
よろしくお願いします。
具体的に教えて頂けると助かります。

626名無しさん:2015/01/05(月) 21:18:53 ID:fbKmMLdo
>>625
3号のSPHITSP命令も、mk2と同じ書式で使えるよ
ただ、3号の場合、SPCOL命令で明示的に衝突判定用の矩形を設定しないとダメなだけだよ

627名無しさん:2015/01/06(火) 07:07:24 ID:gHJGyJ/k
>>626
できましたありがとうございました。
予め設定する必要があったんですね。

628S:2015/01/06(火) 16:56:23 ID:Yb76.5Bs
SPの辺り判定の付け方を教えてください。

629S:2015/01/06(火) 17:12:05 ID:Yb76.5Bs
訂正 当たり判定の範囲の付け方

630名無しさん:2015/01/07(水) 09:19:39 ID:nmGARjiU
SPCOL 管理番号, 始点X,Y, 幅, 高さ
  始点X,Y  SPHOMEを原点(0,0)とした相対座標

631torui:2015/01/08(木) 17:38:30 ID:U5gGr2mE
初心者です。
数値を割って余りを取得する命令はありますか?

632torui:2015/01/08(木) 17:41:39 ID:U5gGr2mE
因みにプチコン3号です^^;

633名無しさん:2015/01/08(木) 20:08:58 ID:tb/ihDgA
数値 MOD 割る数

634名無しさん:2015/01/10(土) 11:09:44 ID:Olyi/qts
Wikipediaの「DETUNEの音楽ソフトとのリンク」欄を誰か書いて下されると助かるのですが。
KORGシリーズのプチコン3号対応次第ではKORG M01Dを買おうと思っているので。
来週から「新春 コルグ シンセサイザー半額祭り」なのでどうしようかと。

635名無しさん:2015/01/13(火) 04:33:03 ID:nmGARjiU
まだ何も発表されてないです。
予定であって、現時点では未実装ですね。

636 ◆5/xbu3/CgA:2015/01/14(水) 23:27:34 ID:1GsTmC4M
変数配列についての質問です。
ttp://smileboom.com/special/ptcm2/co_konnichiwa/p06.php
↑に書いてある通りに、
0001 CLEAR:DIM APPLE(32)
0002 FOR DAY=1 TO 31
0003 READ APPLE(DAY)
0004 PRINT DAY;”ニチメ リンコ゛”;APPLE(DAY);”コ”
0005 NEXT
0006 DATA 56,32,71,40,64,73,61,10,45,80
0007 DATA 25,71,63,54,98,23,14,66,58,47
0008 DATA 94,36,31,26,45,71,24,76,66,58,46
と打って、RUNしたのですが、どうしてもsyntax error in 0:1と表示されてしまいます。
これは何が原因なのでしょうか?教えてください

637名無しさん:2015/01/15(木) 17:21:44 ID:Vwe1ISgE
>>636
使っているのはプチコンのmk2と3号のどちらですか?
3号であれば、変数配列の指定に『()』は使えなくなったので、『[]』で指定する必要があるよ。
また、『CLEAR』命令もDirectモード専用になったので削除してね。

なので、1行目は『CLEAR:DIM APPLE(32)』は『DIM APPLE[32]』のみとし、
3〜4行目の『APPLE(DAY)』も『APPLE[DAY]』と修正すればいいよ。

638 ◆5/xbu3/CgA:2015/01/15(木) 23:17:27 ID:1GsTmC4M
>>637
その方法で解決することができました。
ありがとうございます。

639名無しさん:2015/01/26(月) 12:05:02 ID:PqHvrS2c
3D梨さんの高圧縮?プログラムの使い方がわかる人教えてください

640名無しさん:2015/01/26(月) 19:43:26 ID:nmGARjiU
http://wiki.hosiken.jp/petc3gou/?Toukou%2F%B9%E2%B0%B5%BD%CC%A1%A9%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0
プチコン3号 公開キー
KA3QF3Q4

L=|L とか 0=1 とか意味不明な記述が含まれていて
まともなプログラムではないので、そもそも正常に動きません。
仮に好意的に考えるとすれば
製作途中の未完成なファイルを間違って公開されてるんじゃないですかね

641名無しさん:2015/01/27(火) 05:49:27 ID:dDnUEEXA
3DS本体のAボタンやB、X、Yボタンなどを押すことで命令を実行できるようにしたいのですが、
どのような命令を使えば、各ボタンを使用できるようになるのでしょうか・・?

また、その命令を入れればINPUT入力時のように、
指定のボタンを押すまでプログラムの進行はストップしてくれるのでしょうか?

642名無しさん:2015/01/27(火) 13:02:05 ID:JARy.T.I
ABXYボタンを扱うには BUTTON() 命令を使います。
詳しくは[?]ボタンのHELP機能など各種説明をどうぞ。
BUTTON命令は、実行された時のボタンの状態を扱い、
即座に次の命令へ移ります。なのでボタン入力待ちをしたければ
その他の命令を組み合わせる必要があります。

よくある考え方としては、
「Aボタンを押していない間は、
 Aボタンを押しているかどうかの判定を無限に繰り返す」
という方式があります。

また、INPUT命令の入力待ちでは、AボタンはENTERキーとしても扱われるので
それを利用してAボタン待ちとして使う事も可能ですし、
DIALOG命令では、OKボタンやはい/いいえ等をボタン操作で
決める事もできるので、それを利用する事もできるでしょう。

643名無しさん:2015/01/28(水) 07:38:59 ID:dDnUEEXA
>>642
教えてくださってありがとうございます。
いろいろ工夫しながらやってみたいと思います。

644名無しさん:2015/02/01(日) 17:37:36 ID:LBJmdGMM
スマイルツールで作ったWAVEのDATファイルをMMLに使用するにはどうすれば良いですか?

645名無しさん:2015/02/02(月) 08:10:56 ID:nmGARjiU

DIM WAV[0]
LOAD "DAT:ファイル名",WAV
WAVSETA 225,127,127,127,127,WAV
BGMPLAY "@225CDEFG"

数値配列を用意し、
スマイルツールで保存した波形データを数値配列に読み込む。
WAVSETA命令で数値配列を楽器の音色として登録し、
登録した音色番号を使用するMMLを鳴らす。

という手順で行います。

646名無しさん:2015/02/02(月) 17:46:40 ID:EV5K.0TM
ありがとうございます

647yuuki:2015/02/04(水) 18:12:18 ID:RT6winTw
僕は、はじめてから、1ヶ月ほどたっているんですけど、まだ SPSET や BGMPLAY ○○ 等しかわかりません。
ゲームを作るにはまだまだなのですが、キャラクター(スプライト)をスライドパッドで動かす方法を教えてください。
STIC OUT まではわかるのですが、そのあとのXとかYとかX=X+1等がわかりません。
教えてください(∵)

648名無しさん:2015/02/04(水) 23:44:37 ID:nmGARjiU
では、1歩ずつ順に考えてみましょうね。

準備として、あなたが既に使い方が分かっているSPSET命令を使って、
スプライトを表示させてみましょう。

ACLS
SPSET 0,27

これだけ書いたプログラムを実行させると、画面左上にラッパが表示されて
すぐプログラムが終わりますね。
さて、『スプライトを動かす』のが目標なわけですが、
「動く」って、どういうことでしょうか?
たぶん『今の位置よりも少し離れた位置に変わる』と言えると思います。
そのために、まずはラッパを「別の位置に変えて」みましょう。
さっきの次の行に

SPOFS 0,100,100

と書き足して実行すると、ラッパの位置が左上から変わります。
『スプライトの位置を扱う命令は、SPOFS』だと分かりましたね。

ここまでを詳しく見てみましょう。
ACLSは、スプライトも含めて画面表示を初期化する命令です。
SPSET に続いて書かれている数字のゼロは、スプライトの管理番号で、
その後の27はラッパの見た目を指す番号です。
「0番のスプライトを、ラッパの見た目にして、使い始めるよ」という命令です。
(*出席番号ゼロ番の友達を呼んで、ラッパのお面をかぶせましょう!)

SPOFS に続く3つの数字の1つ目はスプライトの管理番号で、
残り2つは横の位置と縦の位置を指示しています。
(*出席番号ゼロ番君に、教室のすみっこから横に100センチ、縦に100センチの
場所まで瞬間移動してもらいましょう!)

649名無しさん:2015/02/04(水) 23:45:08 ID:nmGARjiU
ここまでで、とりあえずスプライトの位置を変えることができました。
次に、「今の位置よりも少し離れた位置」の部分を考えてみましょう。
そのためには、最初にラッパの「今の位置」を知らないといけませんよね。

 SPOFS 0 OUT X,Y

このように書きます。さっきと書き方が変わって「OUT」が特徴的ですね。
数字のゼロはスプライトの管理番号です。
そしてSPOFSはスプライトの位置を扱うための命令だったので、
「OUT」があるこの書き方をすると、管理番号ゼロ番のスプライトの
位置を知らせてください、という命令になるのです。
もちろん、この書き方をした時は、スプライトの位置は変わりませんよ。

続いて「X」と「Y」と書いた箇所です。これは『変数』です。
数字の代わりに使える物で、"数"字を"変"えることができる物です。
SPOFS OUT 命令は、XとYという名前の変数の数値を、位置の数値に書き換えます。
(*出席番号ゼロ番君に、XカードとYカードという名前の、2枚のカードを渡して、
Xカードには、今あなたは、教室のすみっこから横に何センチの場所にいますか?
Yカードには、今あなたは、教室のすみっこから縦に何センチの場所にいますか?
を書いてもらいましょう!)

650名無しさん:2015/02/04(水) 23:46:08 ID:nmGARjiU
さて「今の位置」が済んだので、次は「よりも少し離れた」を考えましょう。

 X=X+1

あなたが、知りたいと例に出していたこの書き方です。
「X=」とは、「変数Xの数値を書き換えますよ」という意味です。
数値を、何に書き換えるのかは、それに続く「X+1」の部分です。

スプライト番号0が100,100の位置にいた時、
さっきのSPOFS OUT 命令の効果で、変数Xの数値は100に書き換えられていましたね。
変数Xは、今は100という数値と同じことになっています。
なので、「X+1」は 今は『100+1』と同じ意味になります。100に1を足すと101。
変数Xの数値は、101に書き換えられることになります。

さっきまで100と同じ意味だった変数Xは、今は101という意味になりました。
つまり結果を見ると「X=X+1」という書き方は、『変数Xを1増やす』ということです。
(*書いてもらったXカードの数値に1を足して、Xカードの数を書き換えましょう!)

651名無しさん:2015/02/04(水) 23:46:56 ID:nmGARjiU
変数Xは、スプライトの位置の数値のことでした。
その数値が、ちょっとだけ変わりました。これが「よりも少し離れた」です。
続いて、最後の「位置に変わる」です。もう分かっているかも知れませんね。

 SPOFS 0,X,Y

スプライト0番の位置を、変数Xと変数Yの数値の位置に変えます。
これまでのプログラムの結果、変数Xの数値は101になっていました。
これは、元のスプライト0番の横の位置が100だったので、それより1だけ多い数です。
変数Yは、元のスプライト0番の縦の位置の100になったまま、変化させていません。
つまり、今のこの命令は、
 SPOFS 0,101,100
と同じことで、スプライト0番の位置を、横101、縦100の位置に移動させる命令になるのです。
(*出席番号ゼロ番君に2枚のカードを渡して、書かれてる数字の位置に移動してもらおう!)

652名無しさん:2015/02/04(水) 23:48:18 ID:nmGARjiU
これで『今の位置よりも少し離れた位置に変わる』は出来ましたが、
ここまでのプログラムを実行しても、たった1だけ移動するだけなので、見ても分かりません。
そこで、プログラム全体をこんな風にしてみましょう。

ACLS
SPSET 0,27
SPOFS 0,100,100
@LOOP        '←追加した行
 SPOFS 0 OUT X,Y
 X=X+1
 SPOFS 0,X,Y
 WAIT        '←追加した行
GOTO @LOOP      '←追加した行

追加したうちの「@LOOP」は目印で、読書で言えばしおりです。
「GOTO @LOOP」は、「@LOOPという目印に行け」という意味で、
普通は上から順にしか進めないプログラムを実行する順番を、変える命令です。
そして「WAIT」は、普通は目にも止まらぬ速さで実行されてしまうプログラムを、
人間が目で見て確認しやすいようにゆっくりさせるための命令です。

このプログラムを実行すると、@LOOP と GOTO @LOOP の命令の作用で、
さっき書いた『今の位置よりも少し離れた位置に変わる』プログラムが
何度も何度も繰り返し実行されるので、ラッパが動いて見えます。

プログラムは終わり無く無限に続くので、
スタートボタンを押してプログラムを中断させましょう。

653名無しさん:2015/02/04(水) 23:49:29 ID:nmGARjiU
さてさて、ここまでで『スプライトを動かす』ことは出来ました。
次は『スライドパッドで』動かすという部分ですね。

では、「SPOFS 0 OUT X,Y」と「X=X+1」の間に、次のプログラムを書き加えてください。

 STICK OUT X,Y
 PRINT X

プログラムを実行すると、画面左側に数字のゼロが並びませんか?
そのままスライドパッドをぐりぐり動かしてみましょう。
スライドパッドの動きに合わせて画面の数字が変わりましたよね。

あなたが「分かる」と言った STICK OUT 命令ですね。一応、簡単に説明すると
変数の数値を、スライドパッドを動かした位置を示す数値に書き換える命令です。
「PRINT X」で、変数Xの現在の数値を画面に表示させています。

654名無しさん:2015/02/04(水) 23:51:03 ID:JARy.T.I
ところで、ラッパの位置が画面の左上に変わっていますよね?
なぜだか分かるでしょうか。
「SPOFS 0 OUT X,Y」の命令で変数XとYがスプライトの位置に書き換わるわけですが、
追加した「STICK OUT X,Y」の命令で、同じ変数XとYがまた書き換わってしまったからです。
スプライトの位置とスライドパッドの位置は、それぞれ別の変数を使うようにしましょう。
そのためには、変数の名前を変えます。名前は何でもいいのですが、
ここでは例として、スプライトの位置の変数名はXとYのままで
スライドパッドの位置の変数名は「SX」と「SY」に変えることにします。

 STICK OUT SX,SY

「PRINT X」は消してもいいです。
このあとは、スライドパッドの状態を、変数SXとSYの数値がどうなっているかを
見て判断することで、その判断の結果として、スプライトをどの方向に動かすかを
決める、というプログラムを作っていくことになります。
「判断するプログラム」とは何か。それはズバリ『IF』命令なのですが・・・。

655名無しさん:2015/02/04(水) 23:54:07 ID:nmGARjiU
実は、そんな事をしなくても「X=X+1」の部分を

 X=X+SX

こう書き換えるだけでも、これでスプライトがスライドパッドで動いちゃいました。
これじゃ動かないと思ってたのに。意外だ。
あなたの質問の、「スプライトをスライドパッドで動かす」は、これで解決できちゃいましたね。
なので、とりあえずここまでのプログラム全体を書いて、一区切りとします。

ACLS
SPSET 0,27
SPOFS 0,100,100
@LOOP
 SPOFS 0 OUT X,Y
 STICK OUT SX,SY
 X=X+SX
 SPOFS 0,X,Y
 WAIT
GOTO @LOOP

ここから先は、あなた自身で、「縦(上下)に動かすにはどうするか」や
「名前だけ出てきたIFとは何なのか」について、挑戦してみる事をお勧めします。
どうしても行き詰ったらまた質問してみれば良いのではないでしょうか。
(絶対に必ずお答えします!と約束はできませんが・・・)がんばってください。

656yuuki:2015/02/05(木) 11:25:34 ID:RT6winTw
ありがとうございました。
色々やったらできました。
詳しく説明してもらえて、とても嬉しいです。
僕は、ミーバースもやっていますが、ミーバースだとあまり答えてもらえないので、嬉しかったです。
あと、僕は3Dのシューティングゲームを作りたいのですが、戦闘機などで戦うのでななく、人と人が、銃で戦う感じのを、作りたいのですが、銃のスプライトが無いので、スマイルツールからペイントで、書きたいんですけど、書いたあとに Y ボタンでセーブとかできますけど、そのかいたやつを画面に、表示する方法を教えてください。
お願いします

657名無しさん:2015/02/05(木) 18:39:48 ID:nmGARjiU
イチゴを銃に書き換えた場合
LOAD "GRP4:ファイル名"
SPSET 0,0

658yuuki:2015/02/05(木) 18:47:32 ID:RT6winTw
ありがとうございました。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板