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

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

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

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

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

459Ricky:2014/03/10(月) 15:55:50 ID:kKJKodko
質問です。
mmlで、psgの音を5チャンネル以上だすと、
なぜか音が欠けたりでなくなったりしてしまいます。
これを改善させることはできますでしょうか。
どなたか分かる方、ご回答を宜しくお願い致します。

460名無しさん:2014/03/10(月) 23:41:12 ID:IC2jmB2c
>>459
残念ながら仕様です。
参考↓
http://smileboom.com/special/ptcm2/media/appendix120411.png
使い方によってはエンベロープなどの設定を変えると改善する場合があります。ですが基本的にpsgは余裕を持って4,5チャンネルで動かすべきでしょう。

461Ricky:2014/03/11(火) 17:14:05 ID:kKJKodko
>>460
そうなんですか…
もっと使えたらいいですよね。
ありがとうございました!

462@0918nobita:2014/03/26(水) 11:20:52 ID:8UOrrdjY
LOADでセーブデータ"MEM:DORA1"を読み込んだあと、
そのセーブデータがなかったならこっち、
あったならこっち、と、IF文で条件分岐させるには、どんな文にすればいいですか?

463名無しさん:2014/03/26(水) 23:25:36 ID:jkORaBhk
>>462
ファイル系命令の実行結果は、システム変数の『RESULT』に入るので、それを参照する
RESULTに入る値は『失敗:FALSE、成功:TRUE、中止:CANCEL』なので、
以下のようにすればいい

LOAD "MEM:DORA1"
IF RESULT==TRUE THEN 読み込みが成功した場合の処理
IF RESULT==FALSE THEN 読み込みが失敗した場合の処理

464名無しさん:2014/03/27(木) 10:14:13 ID:8UOrrdjY
DATA "A","B","C"
DATA "D","E","F"
このあとに、PRINT命令でBのみを表示するには、どのように記述すればいいですか?

465@0918nobita:2014/03/29(土) 07:59:11 ID:8UOrrdjY
INPUT文で入力された文章の中に、「この単語があったら@LOOPへ、
なかったなら@LOOP2へ」みたいなIF文は、どう記述すればいいですか?

INPUT A$
IF 〇〇〇〇 THEN GOTO @LOOP ELSE GOTO @LOOP2

こんなかんじ?で、〇〇〇〇の部分がわかりません…

466名無しさん:2014/03/29(土) 12:10:05 ID:jkORaBhk
>>465
INSTRを使え
使い方はマニュアルを読め
というか、質問する前にマニュアルを読んだ方が早いと思うぞ

467@0918nobita:2014/03/30(日) 00:08:30 ID:8UOrrdjY
>>466
ありがとうございます

468@0918nobita:2014/04/03(木) 07:54:58 ID:8UOrrdjY
GRPでセーブする方法を教えて下さい。
または、それを書いてあるページを教えて下さい。

469名無しさん:2014/04/03(木) 11:19:29 ID:wgKI2VG6
>>468
単に画像として保存するなら
SAVE"GRP0:FILENAME"
GRPの後の数字で保存するページを指定できる、詳しくは説明書読め

470コモサイ:2014/04/03(木) 13:56:05 ID:CNZMZgSU
カラーパレット(?)を自分で作るにはどうしたらいいでしょうか?

471コモサイ:2014/04/03(木) 14:13:00 ID:CNZMZgSU
自己解決しました。

472@0918nobita:2014/04/04(金) 10:59:32 ID:8UOrrdjY
説明書見ながらINSTR命令使ってみてるんですが、
INSTR("コンニチハ" , A$)
と記述すると、A$に"コ"でも戻り値が0になってしまいます。
"コンニチハ"に全部の文字が合ってないと0にならないようにするには
どうすればいいですか????

473@0918nobita:2014/04/04(金) 11:00:56 ID:8UOrrdjY
3行目→と入力するとA$に"コ"を代入しても戻り値が0になってしまいます。

474Ferrari:2014/04/04(金) 12:26:18 ID:kKJKodko
質問です。
擬似3dレースゲームの作り方を教えてください!
①コースの作り方(DATA文や、自作したGRPデータを読み込んだり)
②コースの進ませ方(前進のしかたが知りたいです。)
この2つのことを教えていただきたいです。また、いろんなサイトを見ましたが、
よくわからないので、できればここで教えていただきたいです。
宜しくお願い致します。

475名無しさん:2014/04/04(金) 13:05:03 ID:cRXUv98g
>>472
普通に正しい挙動です。INSTR関数あくまでも「検索」関数なので完全一致にしたいなら普通に演算子を使うべきです。
A$=="コンニチハ"

476最近ハマったプチコん野郎:2014/04/04(金) 13:11:55 ID:qPoSmOqo
»472
僕がおもうに
IF命令をつかうのはどうでしょう
僕はどんなプログラムを書きたいかが分かりません
参考になったのであれば
是非参考にしてください
長文失礼いたしました

477名無しさん:2014/04/04(金) 13:14:27 ID:cRXUv98g
>>474
単に3dレースと言われても・・・
下の解説やリストを見ればある程度わかるのではないかと
http://wiki.hosiken.jp/petc/?cmd=read&page=Toukou%2FRAYCAST%20MAZE&word=3d
というかこれでわからないなら基礎知識が足りないと思います。

478名無しさん:2014/04/04(金) 19:17:20 ID:JUnbbvLQ
>>474
疑似3Dレースゲームと一口でいってもファミコンのレースゲームのように
コースが一次元的なゲームとスーファミのマリオカートのようにコースが
二次元的なゲームとでは作り方が全然違う。
簡単なのは前者の方。

479Ferrari:2014/04/04(金) 20:09:16 ID:2v/jR0PI
>>478
マリカのような、コースがつながってる(?)やつです。

480名無しさん:2014/04/04(金) 20:30:24 ID:JUnbbvLQ
>>479
それならば三角関数を使ってGRPで用意したコースを回転させる必要があるな。
ちなみに簡単な方(>>478の前者)の疑似3Dレースゲームは作ることはできるの?

481Ferrari:2014/04/04(金) 21:44:21 ID:kKJKodko
>>480
無理です…。
でも、道路表示させたりカーブを作ったりすることはできます…。

482名無しさん:2014/04/04(金) 22:03:27 ID:JUnbbvLQ
>>481
前者の一次元的コースは単純に距離に応じて拡大処理をするだけなので
簡単だけど後者の二次元的コースはそれに回転が加わるため前者が
作れないと後者は作れない。
まずは、その表示できる道路を使って前者のゲームを作るところから始めよう。

483Ferrari:2014/04/04(金) 22:07:01 ID:kKJKodko
>>482
宜しくお願い致します!!!

484名無しさん:2014/04/04(金) 22:40:39 ID:JUnbbvLQ
>>483
一次元的なコースのレースゲームならば>>474の①のコースデータは
直線、右カーブ、左カーブを示すデータを用意するだけだし
②の前進の仕方はコース表示を徐々に拡大するだけなのでどこで
躓いているのか分からない。
現時点で作っているプログラムリストもしくはQRコードを用意しないと
これ以上の助言は難しい。

485Ferrari:2014/04/04(金) 23:37:04 ID:kKJKodko
>>484
ええと↓こんな感じで作っています。(でも前進の仕方が分かりません…)

CLEAR:ACLS
L=100
R=0
V=0
P=0.95
TK=0
@LOOP
GPAGE 0,N,2-N:N=2-N
C=128
W=200
GCLS 224
GFILL 0,Y,255,255,10
Z=5
J=J+1
WZ=W:VZ=V
Y=191
FOR I=0 TO L-1 STEP 2
GFILL C+W+VZ,Y,C-W+VZ,Y-Z*2,13
GFILL C+W/1.1+VZ,Y,C+W+VZ,Y-Z*20,1-(J%12<6)*1
GFILL C-W/1.1+VZ,Y,C-W+VZ,Y-Z*20,1-(J%12<6)*1
GFILL C-W/18+VZ,Y,C+W/18+VZ,Y-Z*2,15-(J%12<6)*2
C=C+R:Y=Y-Z:VZ=VZ*P:W=W*P:Z=Z*P:J=J+1:Y=Y-TK
NEXT
'WAIT 1
K=BUTTON()
IF K AND 1 THEN TK=TK+0.1
IF K AND 2 THEN TK=TK-0.1
IF K AND 4 THEN V=V+5
IF K AND 8 THEN V=V-5
IF K AND 16THEN R=R+0.1
IF K AND 32THEN R=R-0.1
GOTO @LOOP

486名無しさん:2014/04/05(土) 20:13:10 ID:JUnbbvLQ
>>485
前進処理はできているのであとはブレーキとアクセルの搭載だな。
そしてコースデータを用意してそれを元に表示して
自車と敵車の動きを付ければ一応ゲームとしては成立するかな。

487Ferrari:2014/04/05(土) 21:00:54 ID:2v/jR0PI
>>486
前進ってできてるんですか!?
J=J+1 っていうところで、車線とかの模様をスクロールさせているだけで、
(スクロールしない状態は、初めのJ=J+1 ってところを、J=0とすればなります)
前進させてるように見えますが、実際には道は静止している状態です。

488名無しさん:2014/04/05(土) 22:42:01 ID:JUnbbvLQ
>>487
疑似3Dなんだから前進しているように見えているだけでOK。
そのスクロール速度を変えれば自車の速度を表現できる。

489Ferrari:2014/04/06(日) 10:38:22 ID:kKJKodko
>>488
そうなんですか!
拡大とかしなくていいんですか。
で、アクセルとブレーキは… 7行目のループから書いていきます。
あと、新しく追加したとこは、(NEW!!!)ってしときます。
変えたとこは(変更!!!) ってしときます!

@LOOP
GPAGE 0,N,2-N:N=2-N
(NEW!!!)CLS
C=128
W=200
GCLS 224
GFILL 0,Y,255,255,10
Z=5
(変更!!!)J=0
(NEW!!!)LOCATE 25,0
(NEW!!!)PRINT FLOOR(JJJ*40);"km/h"
(NEW!!!)IF JJJ<0 THEN JJJ=0
(NEW!!!)JJ=JJ+JJJ
(NEW!!!)J=J+JJ
WZ=W:VZ=V
Y=191
FOR I=0 TO L-1 STEP 2
GFILL C+W+VZ,Y,C-W+VZ,Y-Z*2,13
GFILL C+W/1.1+VZ,Y,C+W+VZ,Y-Z*20,1-(J%12<6)*1
GFILL C-W/1.1+VZ,Y,C-W+VZ,Y-Z*20,1-(J%12<6)*1
GFILL C-W/18+VZ,Y,C+W/18+VZ,Y-Z*2,15-(J%12<6)*2
C=C+R:Y=Y-Z:VZ=VZ*P:W=W*P:Z=Z*P:J=J+1:Y=Y-TK
NEXT
'WAIT 1
K=BUTTON()
IF K AND 1 THEN TK=TK+0.1
IF K AND 2 THEN TK=TK-0.1
IF K AND 4 THEN V=V+5
IF K AND 8 THEN V=V-5
(NEW!!!)IF (K AND 16)==16 AND JJJ<3 THEN JJJ=JJJ+0.05
(NEW!!!)IF (K AND 16)==16 AND JJJ>3 AND JJJ<7 THEN JJJ=JJJ+0.005
(NEW!!!)IF (K AND 16)!=16 AND JJJ>0 THEN JJJ=JJJ-0.05
(NEW!!!)IF (K AND 32)==32 AND JJJ>0 THEN JJJ=JJJ-0.1
(変更!!!)IF K AND 512THEN R=R+0.1
(変更!!!)IF K AND 256THEN R=R-0.1
GOTO @LOOP

これで、アクセルとブレーキは完璧だと思います!

490名無しさん:2014/04/06(日) 21:43:57 ID:pkxZZf7w
>>489
そのリストだと初期設定からL=100とP=0.95が無くなっているので道路が表示されない。
疑似3Dの拡大については道路の表示ができている時点で道路に関しては
拡大表示を行っているため問題ない。
障害物や敵車はその道路の拡大率に合わせて拡大すればいい。

カーブに関してはカーブの大きさと速度に応じて曲がっている向きと逆方向に
自車を移動させるとカーブを曲がっている感じが出ると思う。

491Ferrari:2014/04/06(日) 23:12:01 ID:kKJKodko
>>490
よし!もうこっち系のレースゲームは作れるようになったと思います!
ありがとうございました!!!!!

492コンプチ:2014/04/08(火) 13:29:33 ID:Dc31ON7c
あー3DSからやっているからプログラムをQR化できない。
3DSでできるやつあるっちゃあるが面倒なんだよなぁ…
プログラム文を直接打ち込まずに3DSか携帯でできるQRコード化ツールってありますかね?

493名無しさん:2014/04/09(水) 07:12:50 ID:RFJ19OZ2
>>492
androidを使ってるならchred on androidという素敵なツールがあります。SDカードにPTCファイル移してどうぞ。ガラケーは無理。
ゴリ押し的な方法でプログラム上でqrコード化できる物ならありますが・・・http://wiki.hosiken.jp/petc/?Toukou%2F%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0%A4%CE%A5%A8%A5%AF%A5%B9%A5%DD%A1%BC%A5%C8
注意:上のプログラムはテキストに変換するから3DSじゃ読み取れないです。
まあリストを公開して誰かにqr化してもらうのも手ですが。

494コンプチ:2014/04/09(水) 14:24:37 ID:Dc31ON7c
>>493
わざわざありがとうございます^^

495Porsche:2014/04/09(水) 18:35:21 ID:kKJKodko
質問です。
擬似3dのレースで、道路をGRPとかで読み込んだ道路じゃなくて、
ポリゴンで作った道路でやることはできますか?

496コンプチ:2014/04/09(水) 21:26:58 ID:Dc31ON7c
またまた質問です。
>>493様の紹介してくれたものが上手くできなかったのでリストを公開してQR化してもらう事にしましたが、簡単にリストを書く方法ってありますかね?
本当にケチいですね。すみません。

497名無しさん:2014/04/09(水) 22:49:35 ID:JUnbbvLQ
>>495
プチコンでポリゴン表示プログラムを作った人はいるけど
最高でも1秒間に200ポリゴンくらいしか表示できない。
https://www.youtube.com/watch?v=4OkGjWAIGt8

レースゲームのコースを普通に造ったらどんな単純なコースでも
数千ポリゴンくらいになってしまうので0.01fpsも出ないと思うぞw
いくらプチコンが速いといってもGPUを使わずにポリゴンゲームを
作れるほどの速度はない。

498名無しさん:2014/04/09(水) 23:55:48 ID:mPlW.CrA
>>496
3dsだけでは無理ですね。もうそれなら図書館などの公共施設でパソコンを借りるのが一番手っ取り早いでしょう。まあ初代プチコンではみんながんばって打ち込みしていたのですが。

499コンプチ:2014/04/10(木) 06:39:04 ID:Dc31ON7c
>>498
そうですよね。ありがとうございます。
まぁなんとか公共施設のPCで頑張りますか。

500Porsche:2014/04/10(木) 18:31:37 ID:kKJKodko
>>497
回答ありがとうございます!!!
そうなんですか…もし作れるなら、3号が出てからにします。

501Mr.K:2014/04/25(金) 21:44:38 ID:IIPHlAmE
BGの使い方が分かりません、誰か教えてください。

502ななし:2014/04/29(火) 00:26:11 ID:3zmaoLz2
自分で作ったキャラクタはどうやって表示するのでしょうか


>>501
どこかでみおぼえのあるお名前・・・

503Mr.K:2014/04/29(火) 19:13:40 ID:IIPHlAmE
502
どこかのスレでお会いしました?

504名無しさん:2014/04/29(火) 19:31:21 ID:3zmaoLz2
画像を16進数に直すにはどうしたらよいのでしょうか・・・。
訊いてばかりで申し訳ありません。


>>503 いえ、スレではないのですが・・・これ以上はスレチになると思うので別の所で確認します(:-_-)

505名無しさん:2014/04/29(火) 23:43:25 ID:mPlW.CrA
>>501
BGはグラフィックと同じように背景に役割をする。ただし8x8単位でしか置けない、大きさが512px×512pxありスクロールできるなどの特徴がある。BGPUT命令でチップを配置することができ、BGOFSでスクロールさせることができる。
>>502
自分で作ったCHRをLOAD"BGU0:***"(又はSPU0)で読み込むとBGU0(SPU0)に読み込んだキャラがセットされる。あとはBGPUTなりSPSETなり使えばいい。
>>504
A=GSPOIT(X,Y)で色番号を受け取る。あとはAをHEX$で16変数にしてやればいい。
長文申し訳ない。

506Mr.K:2014/04/30(水) 20:26:20 ID:IIPHlAmE
505
ご回答ありがとうございます。
BGの使い方はわかりました。
どうやったらBGを大きくすることが
できますか?
長文すみません

507名無しさん:2014/04/30(水) 23:58:59 ID:mPlW.CrA
>>506
BG自体を大きくすることは基本無理。キャラクタ自体を大きく作ればいいけど、頻繁にするならスプライト使った方が幸せになれるよ。

508Mr.K:2014/05/01(木) 21:09:13 ID:IIPHlAmE
507
ご回答ありがとうございます。
これでBGのことがわかりました。

509名無しさん:2014/05/02(金) 21:01:40 ID:3zmaoLz2
>>505 ご回答ありがとうございました。
試行錯誤しながら頑張ります!

510BMW:2014/05/03(土) 23:19:54 ID:kKJKodko
プチコンmk2の質問です。
卓球のゲームを作ろうと思っています。
ですが、ボールの跳ね返り処理とかが、
どうやったらできるのかがわかりません。
どなたか分かる方、回答お願いいたします。
*ボールはSPRITEでします

5110918nobita:2014/05/05(月) 07:51:22 ID:8UOrrdjY
タッチされた、またはタッチされている座標をTCHXとTCHYで取得するのはなんとなくわかりますが、ループの中にIF文でそのふたつのシステム変数の範囲を指定して他のラベルにGOTOで移動させると、実行したときにIF文で指定した範囲以外でもタッチに反応してラベルを移動してしまいます。どうすれば、タッチされて反応する座標を指定出来ますか。

512名無しさん:2014/05/06(火) 12:35:53 ID:JUnbbvLQ
>>510
どういったゲームを作りたいかにもよるけど真上から見たゲームならば
大昔のテニスゲームやブロック崩しのパドルと同じような感じでいいのでは?
ラケットの中央に当たれば真ん前に跳ね返り、ラケットの端にいくほど左右の
移動量を大きくすればそれっぽくなると思う。
真横から見たゲームならばボールの動きはアクションゲームのジャンプと同じ。
横方向は等速運動なので1フレームごとにX座標は固定の値を加算して縦方向は
等加速度運動で重力の分だけ1フレームごとにY座標は固定値ではなく重力分を
減算していくといい。
床に跳ねたボールは速度が若干減速しY座標方向の移動量は反転する。

真横から見た跳ね返りのサンプルプログラム

ACLS
SPSET 0,251,0,0,0,0
X=0:Y=20
VX=0.5:VY=-1
G=0.05:K=0.85
@LOOP
 SPOFS 0.251,0,0,0,0
 X=X+VX
 Y=Y+VY
 VY=VY-G
 IF Y>176 THEN VX=VX*K:VY=-VY*K
 VSYNC 1
@LOOP

VXはX方向速度、VYはY方向速度、Gは重力加速度、Kは反発係数


>>511
状況がよく分からないけどTCHXやTCHYはタッチしてないときも前回取得した値を
保持しているのでTCHSTと併用しないと正しい判定はできないと思う。

513名無しさん:2014/05/06(火) 12:40:35 ID:JUnbbvLQ
>>512
サンプルプログラムのリストの最後の行の「@LOOP」は「GOTO @LOOP」の間違い。
これはサンプルだから無限ループになっているけど実際のゲームでは
速度が一定以下になったらボールが止まったと判断させる必要がある。

5140918nobita:2014/05/06(火) 20:50:00 ID:8UOrrdjY
512>>
サブルーチンでTCHSTを使うと成功しました!ありがとうございました

5150918nobita:2014/05/06(火) 20:51:18 ID:8UOrrdjY
>>512
サブルーチンでTCHSTを使うと成功しました!ありがとうございました

516名無しさん:2014/05/07(水) 20:01:58 ID:3zmaoLz2
RPGなどのように進みたい方向へ向きを変え、進んでいる間動きがあるようにしたいのですが、どのようにすればよいのでしょうか・・・。

分かりづらいと思いますが、回答よろしくお願い致します。

517@0918nobita:2014/05/07(水) 23:11:29 ID:8UOrrdjY
GPAGE 0,2と入力するとエラー起こすんですが、公式のページを見ても
文法上は間違ってんさそうなんですが…
そもそも描画ページと表示ページの違いってなんですか?
そしてなぜこれでエラーを起こすのですか?
(Missing operand (47,GPAGE)と表示されます)

518名無しさん:2014/05/08(木) 12:52:50 ID:JUnbbvLQ
>>517
GPAGEで描画ページを指定する場合には引数が3つ必要なのでGPAGE 0,2では引数不足。
あと表示ページと描画ページは別のもの。
表示ページはプチコン内部の0〜3の4ページのうち実際に画面上に表示するページを
指定するのに対して、描画ページは単に描くだけのページとなっている。
画面上に表示されてない描画ページに時間を掛けて描画した後に
表示ページと切り替えることでちらつき無しで表示が可能になる。
GRPの描画は重いためこの切り替えを使った「ダブルバッファリング」は必要不可欠。

519名無しさん:2014/05/09(金) 08:02:33 ID:k6zCjpAM
>>516
補完移動か1ドットずつにキャラや背景を動かせば滑らかになります。4方向のキャラ(例えば、SPU1など)があるので使い分ければ向きを変えることもできます。
>>517
GPAGEで描画ページを指定する時は引数は3つでないといけません。
プチコンmkiiではグラフィックのページが4枚あるのですが、表示するページは上と下の2枚しかないのでGPAGE a,b,cで「aページ(上下どちらか)にcページ(実際の4枚のうちのいずれか)を表示して、命令ではbページ(こちらも4枚のうちのいずれか)に描画する。」といった指定になります。

520名無しさん:2014/05/09(金) 21:45:10 ID:3zmaoLz2
>>519 分かりづらかったですね・・・。申し訳ありませんでした。
えーと、描写は問題ないのですが、プログラムと結びつけるのができません・・・。

例:上ボタンで上を向く絵が表示、上方向へ進む

521@0918nobita:2014/05/09(金) 21:53:43 ID:8UOrrdjY
>>518
>>519
ありがとうございます!

522名無しさん:2014/05/09(金) 23:28:02 ID:4dPIXPsU
>>520
とりあえず基本的なものなら
BTN:ボタン、X:x座標、y:Y座標
BTN=BUTTON()
IF BTN AND 1 THEN Y=Y-8:SPCHR 管理番号,キャラ番号(上向きの絵)
IF BTN AND 2 THEN Y=Y+8:SPCHR 番号,下向き
・・・・
BGOFS 0,X,Y,10
こんなかんじですね。当然これだけでは動かないので参考程度に。

523名無しさん:2014/05/11(日) 08:48:07 ID:3zmaoLz2
>>522さん、ありがとうございます!

524@0918nobita:2014/05/11(日) 15:25:17 ID:8UOrrdjY
タッチ操作のプログラムを作っているのですが、

0001 @LOOP
0002 IF TCHST==TRUE THEN GOTO @LOOP2
0003 GOTO @LOOP
0004
0005 @LOOP2
0006 IF 10<TCHX<60 AND 10<TCHY<60 THEN GOTO @A
0007 RETURN
0008
0009 @A
0010 PRINT "タッチ!"
0011RETURN

こう入力して実行すると、
[suntax error(6,IF)]と表示されます。
エラーを起こさないためにはどこを直せばいいですか?

525@0918nobita:2014/05/11(日) 15:27:06 ID:8UOrrdjY
1行目のGOTOは間違いです、正しくはGOSUBです。

526ゆうあし:2014/05/11(日) 16:35:28 ID:M8rtDSZY
>>524
IF 10<TCHX<60 AND 10<TCHY<60 THEN GOTO @Aを
IF ((10<TCHX) AND (TCHX<60)) AND ((10<TCHY) AND (TCHY<60)) THEN GOSUB @A
にしたら直るかもね

527名無しさん:2014/05/11(日) 19:37:38 ID:lFSBzV7A
>>524
1行目が間違いってのは2行目のことだとして、
6行目は目的の動作ではないだろうけどエラーにはならない
だからどっかタイポしてここに書くときは直っちゃったんだろう
(Oと0を打ち間違えたり、数値の前にスペースを入れないで識別子がくっついたり、THENがTHANになっちゃったり)
で、したかったことは>>526なんだろうけれど、別に括弧を増やす必要もGOTOをGOSUBにする必要もないから

528ゆうあし:2014/05/11(日) 20:47:28 ID:LKGa.ShY
括弧は無駄だとは思ったがこっちの方が理解しやすいかと思った。
GOSUBは単純なミスですな

529名無しさん:2014/05/22(木) 10:08:39 ID:Gda3xqa.
>527
”10<TCHX<60”がエラーにならないのは”10<TCHX”の比較演算結果を
その次に記述した”<60”でさらに比較演算してるからですね。
比較演算の結果は0か1なんでこの場合は必ず1になりますね。

530@0918nobita:2014/06/07(土) 16:23:25 ID:UcuH9SVk
新しく、OSもどきを作っているのですが、
マウスポインタを常に表示するにはスプライトか、グラフィックのどちらを
使えばいいですか?

また、今グラフィックでやってみてるんですが、
マウスポインタの座標が変更になった時に、変更する前のポインタと
重なっておかしくなってしまいます。どうすれば、マウスポインタを表示しながら、
ほかのグラフィック命令と併用できますか?

531名無しさん:2014/06/09(月) 13:09:20 ID:hh11yexA
>>530
ポインタなどの移動するオブジェクトはグラフィック描画の遅いプチコンにおいてはスプライトが最善策でしょう。グラフィックを使う場合はマウスを除いた画面にその都度マウスを描画する必要がありますね。

532kazuemon:2014/06/10(火) 08:14:18 ID:OpHF9tBk
>>530
531さんと同じく、スプライトをお勧めします。
ぼくも現在いろいろとOSもどきを作成していますが、
スプライトですと、
SPOFS 0,TCHX,TCHYだけですみますが、グラフィックだと
複雑になってしまうと思います。

533プチラー:2014/06/16(月) 15:48:19 ID:goliT0Wk
プチコンではループを抜けるBREAKのような命令ってありますか?
マニュアルでは見当たらないのですが

534名無しさん:2014/06/16(月) 19:27:57 ID:mPlW.CrA
>>533
命令ではありませんが擬似的には可能です。
A=0
FOR I=0 TO 4
A=A+1
IF A=1 THEN I=4:NEXT:FOR I=1 TO 0
A=A+1
NEXT I
NEXTの直後に即抜けるループを作ることで本当のNEXTまで飛ばしています。

535プチラー:2014/06/17(火) 19:44:36 ID:hErrnv/.
>534
う〜ん
そのプログラムはよくわかりません^^;

536名無しさん:2014/06/21(土) 15:37:18 ID:6IhlIW9M
>>535
A=0
FOR I=0 TO 4
A=A+1
IF A==1 THEN I=4:GOTO @BREAK
A=A+1
@BREAK
NEXT I
IをTOで指定された数にしてラベルでNEXTまで飛ばしています。

537プチラー:2014/06/21(土) 17:52:23 ID:.8ZcAvqM
>536
そうですね
Iを最後の数にすることで対処できるかなと僕も思いました
もうひとつ疑問なんですが
READ命令があるならWRITE命令のようなものはないのかなと困ってます(><)

5383DSマニア:2014/06/21(土) 20:19:49 ID:wgfgRHE.
SCREDを自分のプログラムに打ち込む方法がわかりません。誰か教えてください。

539名無しさん:2014/06/22(日) 14:26:12 ID:DkR5mMOk
SPANIMってメインループの前で使うんですね
ちょっとわかりにくかったです

5403DSマニア:2014/06/22(日) 16:31:26 ID:wgfgRHE.
539 そうですね

541名無しさん:2014/06/23(月) 13:09:53 ID:o8jxriK6
プチコンってDATAでもったデータは読み込みだけで書き込みできないのなら
落ちゲーなんかには使えないですね

542旅人Dast:2014/06/23(月) 20:37:48 ID:8NCAUaGQ
QRコード変換ツールの使い方が分かりません。
正確に言えば、SDカードをパソコンにさしてみたのですが、どこにプログラムが保存されてるかわかりません。
どこに保存されている、なんと言うファイルを[開く]とすればいいのでしょうか?
下手な説明ですみません

543Autoexec:2014/06/23(月) 21:30:31 ID:OOV0jWKc
>>542

SDカードへ書き出し時に、DSに表示されています。
もう一度書き出して、ご確認ください。

544名無しさん:2014/06/24(火) 16:54:30 ID:InzRqyFc
何が間違っているときに”Out of memory (114, GOSUB)”って出るんですか?

僕は今、ターン式のPvPバトルゲームを作ろうとしていて、
キャラセレクト画面で2プレイヤー分のスプライトを選べるようになっているんです。
その画面で、LかRボタンを押すと十個あるスプライトの中から自分のを選べて、
しかも十字ボタンを押すとP1からP2へのスプライトセレクトに行き来できる仕組みを作りたいんです。
キャラセレクトの仕組み、P1からP2への行き来の仕組みもできているんですが、
なぜかそれを組み合わせるとP2のキャラセレクトのサブルーチンのところで上記のようなエラーが出ます。
どうすればいいのでしょう?
もし情報不足であるなら後で足します。
まだ駆け出しなのでわかりやすいようにお願いします。

545Autoexec:2014/06/24(火) 20:58:38 ID:DM95en4k
>>544
returnをしていますか?

546名無しさん:2014/06/24(火) 21:06:32 ID:4dPIXPsU
>>538
SPSET命令でキャラを表示させることが出来ますよ。保存したキャラをLOAD”SPU0:###”で読み込んで使いましょう。取説のスプライト命令を見ると詳しくわかるかもしれません。
>>539
補足ですが、その命令の直後にアニメーションを始めるのでメインループの途中でもスピードを変えたり出来ます。
>>541
DATA文はリードオンリーの情報を扱う(例えばテ●リスで言うとブロックのパターン)ので落ちゲーなど情報が刻々と変化する時は変数やGRP、MEMなどの書き込みできるリソースを使えばいいでしょう。落ちゲーはこのwikiにたくさんありますよ?
>>544
このエラーはSmileBasicのメモリが足りてない場合に出るエラーです。具体的に言うとFORループやGOSUBなどは命令の行番号を記録しておくためにメモリに一時的に書込みしていますが、プログラムの不備などでループを終わらせないとループが重なっていってメモリ領域を圧迫し、エラーになるというわけです。プログラムリストを見返してGOSUBにRETURNがあるか、FORループにNEXTがあるか確認してみてください。

547名無しさん:2014/06/25(水) 04:46:26 ID:InzRqyFc
>>545
はい、リターンはしています。しかもP1と全く同じのはずなのに、なぜかP2だけエラーが出ます。

>>546
ありがとうございます。しかしリターンもしているし、FORは使っていないので違うと思います。
ウーム、方針を変えるべきか〜。

548名無しさん:2014/06/25(水) 07:14:00 ID:oD303SgI
>>546
DATA命令について質問した者ですが
GRP、MEMなどを使うといってもやり方はどうするんですか?

549名無しさん:2014/06/26(木) 07:03:04 ID:pFX9IyRQ
>>547
returnをしていても無限ループになっていたら意味がないかと
GOTO@MAIN
@SUB
'RETURN
@MAIN
GOSUB@SUB
GOTO@MAIN
でもOut of memoryになりますが、
@SUB
GOSUB@SUB
RETURN
でもなります。

5503DSマニア:2014/06/26(木) 19:16:19 ID:wgfgRHE.
>>546
それをしてもキャラが読み込めません
どうしてでしょうか?教えてください
キャラの保存の仕方がおかしいのでしょうか?

551名無しさん:2014/06/27(金) 16:51:20 ID:InzRqyFc
>>549
ありがとうございました!
多分これが原因です。
おかげさまで動くようになりました。
後からいろいろ足していたもので、
多分途中から入り組んでしまったのでしょう。
本当に助かりました!

5523DSマニア:2014/06/27(金) 22:38:56 ID:wgfgRHE.
読み込みはできましたがどうやってつかうのでしょうか?

5533DSマニア:2014/06/27(金) 22:49:41 ID:wgfgRHE.
読み込みはできましたがどうやってつかうのでしょうか?(SCREDの

554名無しさん:2014/06/28(土) 11:37:08 ID:PP5AXFd6
GRP、MEMなんてのは単なるファイルのカテゴリーですよね
DATAのデータが読み専ってのはガッカリ…
IF文の改行すらもできないし、3号じゃなくてmkⅡのアップグレード望みたいよ

555名無しさん:2014/06/28(土) 17:16:30 ID:6IhlIW9M
>>554
DATAの使用法を勘違いしているだけでは?

556QESA(Autoexec):2014/06/28(土) 20:23:02 ID:DM95en4k
>>554
If分の改行もforで代用できますよ。


if a<2 {
s=s+1
gpest s,a,15
}

for i=1 to a<2
s=s+1
gpest s,a,15
next

この2つのプログラムの動作はほぼ同一です。
DATAの代わりにGPRとMEMを使うのも代用ですね。

557名無しさん:2014/07/04(金) 19:47:15 ID:D4jceuvM
>>556
また変わったプログラムですねぇ
それはおいといて
GPRとMEMを使えというのはやり方がわからないんですよ

558ゆうあし:2014/07/05(土) 12:45:50 ID:OfrUzm2g
memはMEM$に文字を読み書きするリソースです。
GRPはグラフィック面からGSPOITにより色の番号を得てそれを文字番号に使う方法もあるリソースです。
http://wiki.hosiken.jp/petc/?Toukou%2FGRP%A5%EA%A5%BD%A1%BC%A5%B9%A4%F2%BB%C8%A4%C3%A4%BF%CA%B8%BB%FA%A4%CE%B5%AD%CF%BF


新着レスの表示


名前: E-mail(省略可)

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

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

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

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