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

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

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

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

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

382Ricky:2013/10/24(木) 19:02:29 ID:XunW4X3Y
質問です。
シューティングゲームを作ろうと思っていて、
処理落ちを防ぐために自機や敵の弾などを、補間移動
させようと思っているのですが、どうやればよいでしょうか。
教えてください!お願い致します!!!

383おか:2013/10/26(土) 18:49:42 ID:FohJbT6k
>>381
すいません全部のプログラムリスト
ACLS
PX=110
PY=90
B=64
VISIBLE 1,1,1,1,1,1,
SPSET 1,64,2,0,0,0
SPANM 1,4,20,0
@LOOP
SPOFS 1,PX,PY
A=BUTTON()
IF A==4 THEN PX=PX-1
IF A==8 THEN PX=PX+1
IF A==1 THEN PY=PY-1
IF A==2 THEN PY=PY+1
IF A==9 THEN PY=PY-1:PX=PX-1
IF A==5 THEN PY=PY+1:PX=PX-1
IF A==10 THEN PY=PY-1:PX=PX+1
IF A==6 THEN PY=PY+1:PX=PX+1
IF A==8 THEN B=64
IF A==4 THEN B=72
IF A==1 THEN B=76
IF A==2 THEN B=68
VSYNC 1
GOTO @LOOP

これは直したんですが向きを変えるプログラムを入れているんですが向きが変わりません。どうしたらいいですか?。

384いったん:2013/10/26(土) 21:41:23 ID:2NPOLURE
B反映する命令無いから向き変わらないのは当たり前でしょ。
B変えるIF文の後にSPCHR 1,Bって入れればいいよ。
あと IF A==9,5,10,6のところは消して代わりにIF A==4,8,1,2のところを
IF A AND 4,8,1,2にするといいよ。下の向きを変えるところも同様。

385Ricky:2013/11/07(木) 21:52:48 ID:kKJKodko
質問です。
シューティングゲームとかで、自機や敵が出す弾を、
SPOFSで補間移動させるやり方を教えてください。
どなたか分かる方、回答お願い致します!!!

386おか:2013/11/13(水) 22:57:21 ID:iC80yMGM
TALKでイントネーションとかいうひと?みたいなのがあってどうやってかえればいいか(イントネーション)をおしえてください。説明書には@H数値のどうのこうのとかかいてあったけどわかりません。教えて下さい

387Ricky:2013/11/16(土) 19:34:00 ID:kKJKodko
>>386
TALk命令では、例えば
TALK”アイウエオ”
と打てば「アイウエオ」と話します。
イントネーションの変更は、@H 数値で変更でき、
@H0=標準語
@H1=ギャル風
@H2=外人風
@H3=関西弁風
となっています。
なので、例えば
TALK”@H3アイウエオ”
と打てば、関西弁風に「アイウエオ」と
話すというわけです。

388おか:2013/11/20(水) 22:49:01 ID:iC80yMGM
>>387
ありがとうございます!おかげでよくわかりました!
質問です。
リソースファイルの種類のMEM(メモリー)
はなんのデータをほぞんするんですか?いまRPGゲームを作っていてそれのやくにたてたらいいなって思って質問しました!回答お願いします

389名無しさん:2013/11/21(木) 04:51:58 ID:mj8/.FRk
>>388
256文字までの文字列を保存できます。
ただ、仲間が複数いたりステータスの項目が多い場合は、
グラフィック(GRP)を使うことを推奨します。
ちなみにグラフィックの場合は256x192x256=12582912バイト(12メガバイト)と、
データのサイズこそ大きいですが1枚で大量のデータを保存できます。

390名無しさん:2013/11/21(木) 05:29:47 ID:mj8/.FRk
訂正。
グラフィック面のデータ容量は49164バイトです。
しかし、実質12582912バイト分のデータを保存できるのは変わりありません。

391名無しさん:2013/11/21(木) 06:25:50 ID:mj8/.FRk
さらに訂正。
12582912"バイト"ではなく12582912"ビット"でした。
それでも256*192=49152文字分のデータが保存できます。

392名無しさん:2013/11/21(木) 07:12:23 ID:mj8/.FRk
さらにさらに訂正。
12582912ビットは計算ミスです。

……なんかメルビルさんと同じ計算ミスをしてるなぁ。
スレを汚して申し訳ない。

393名無しさん:2013/11/22(金) 13:05:13 ID:pscspFq.
>385
今更ですが
SPOFS 管理番号,x,y,補完時間なので
補完時間は一定(長め)にして
移動先をかなり遠めに設定すればいいと思います。
当たり判定はSPHITで取得できるので普通にこれでいいと思います。
動きを止める時は補完時間を0にしてSPOFSすると止まります。

394Ricky:2013/11/23(土) 21:18:48 ID:kKJKodko
>>393
助かりました!
ありがとうございました!

395おか:2013/11/26(火) 17:54:29 ID:iC80yMGM
>>393
どうしたらMEMファイルに文字列をほぞんできるんですか?

396名無しさん:2013/11/26(火) 20:25:37 ID:zDNIZ14U
>>393
MEMファイル自体が文字列なので代入するだけで保存はできます
VAR$="STRING"
MEM$=VAR$
?MEM$
SAVE"MEM:TEST"'保存
MEM$=""'消去
LOAD"MEM:TEST",0'読込
?MEM$

397<削除>:<削除>
<削除>

398Ricky:2013/12/04(水) 16:02:25 ID:kKJKodko
質問です。
付属の”GAME4”にでてくる敵の、
ホーミングミサイルとか、つぼの敵のように、
その敵の向きを自機に向かせるのって、
どうやったらできるのでしょうか。教えてください!
お願い致します。

399名無しさん:2013/12/04(水) 19:30:02 ID:4DRCLOs2
>>398
ATAN(目標Y-始点Y,目標X-始点X)で方向受け取れるよ。

400Ricky:2013/12/05(木) 20:51:23 ID:2v/jR0PI
>>399
ありがとうございます!でも出来ません…SPANGLEとかで、
敵の向きを自機の方向に向かせるために、
どのようなプログラムを組めばいいのかが分かりません。
なので、できれば教えていただきたいです。
お願い致します。

401名無しさん:2013/12/06(金) 00:17:42 ID:JZQ7oQfk
>>400
SPANGLEは角度が必要でATANはラジアン値が返るので
SPANGLE ...DEG(ATAN(目標Y-始点Y,目標X-始点X))とかでは

402Ricky:2013/12/08(日) 15:24:30 ID:kKJKodko
>>401
出来ました!
今まで教えてくださってありがとうございました!!!

403ヨッキ:2013/12/27(金) 18:31:37 ID:XGIK/ZTk
質問ですが、編集モードを作らないで作品を完成させることは出来ますか?

404ヨッキ:2013/12/27(金) 18:37:00 ID:XGIK/ZTk
質問ですが、プログラムを作ったあとの終わらせ方がわかりません。初心者なので、出来るだけ分かりやすくお願いします。

405ヨッキ:2013/12/27(金) 19:01:06 ID:XGIK/ZTk
期待しない方がいいかもしれませんが、たぶんですけど、INPUTは、「"」で囲まれたところを質問文にすることだと思います。(間違っていたらごめんなさい!)
例 (使い方)
INPUT "アナタノ ナマエヲ オシエテクダサイ" ; NAME$
(Aボタンを押す)↓
アナタノ ナマエヲ オシエテクダサイ
(という風に表示されると思います
そしたら、質問に答えてください。)

アナタノ ナマエヲ オシエテクダサイ
(名前を入力)タカノ ススム
(と言う風に質問に答えてください)

アナタノ ナマエヲ オシエテクダサイ
タカノ ススム
OK

(OKと表示されたらOKです。(多分))

406ヨッキ:2013/12/27(金) 20:29:23 ID:XGIK/ZTk
ある「サンプルプログラム集」を見つけて やってみたい と思って、実際にやって見たところ、1行で入りきれない部分があったのですが、Aボタンを押すと、エラーが表示されてしまいます。
どうしたら全部を入れることが出来ますか?
初心者なので、できるだけ分かりやすく教えてください。
(例)
個人情報を抽出
01. INPUT "アナタノ ナマエハ" ; NAME$
02. INPUT "オトシハ イクツデスカ" ; AGE
PRINT "アナタノ ナマエハ " ; NAME$ ; " テ( ")
と、( )の中がはみ出してしまいます。

407名無しさん:2013/12/28(土) 17:48:15 ID:er8fyo6w
>>406
なぜ一行に収めたいのですか?普通にサンプル通りに改行すれば普通に動くはずです。
もし一行にするなら命令の間にコロン「:」を入れる必要があります

408Ricky:2014/01/05(日) 09:22:40 ID:kKJKodko
質問です。
シューティングゲームで、
敵が自機に向けて出す弾を3方向とかに
したいんですが、どうすればできますか?
分かる方、どうか教えてください!お願い致します。

↓こんな感じで
              敵

           ↓  ↓  ↓
          
          弾   弾   弾

              自

409名無しさん:2014/01/05(日) 12:11:50 ID:CYoXanEU
>>408
単発の自機狙い弾が撃てるのなら、あとは角度を変えて発射するだけです。

410Ricky:2014/01/05(日) 14:35:00 ID:kKJKodko
>>409
あ、色々やったら出来ました!!!
ありがとうございました!!!!!

411Ricky:2014/01/09(木) 17:46:57 ID:kKJKodko
質問です。
↓動画
http://www.youtube.com/watch?v=qejgzFgFKdA&feature=youtu.be
↓QRコード
http://www8.plala.or.jp/enuou/petitcom/menu3.html#gra1

↑なんですけど、このゲームのように、自分でBGでマップを作って
スクロールさせるやり方を教えてください!!!お願い致します。
自分の場合、作ってスクロールさせてもBGが途切れたり一周したり
してしまいます。なので、分かる方は、どうか教えてください
お願い致します。

412名無しさん:2014/01/10(金) 12:53:08 ID:WTHQUPTc
BGは64x64のサイズなので64以上のサイズは再び0に書き直す必要があります。64まで作ったらまた0に戻るようにしましょう。
スクロールは補完移動だと座標0に戻る時にぐるっと回ってしまうので保管時間は0にしましょう

413タマゴさん:2014/01/11(土) 13:56:53 ID:p6jjJFnQ
BGがスクロールしているとき、見えない部分を書き換えていけばいいんじゃない?

@MAINLOOP

IF SCX%8>BGX%8 THEN GOSUB @BGWRITE
SCX=BGX

BGX=BGX+1
BGOFS 0,BGX,0
VSYNC 1
GOTO @MAINLOOP

こんな感じに

414YoM:2014/01/12(日) 11:59:15 ID:ZI9hp1uE
プチコンでRPGをつくりたく、
SPSETで、CHREDでつくった自作スプライトを表示したいのですが、
調べてみても中々分かりませんので、教えて頂けませんか。
例文で示して頂けると有難いです。

415名無しのプチコン:2014/01/13(月) 12:13:39 ID:gd.MUO8Y
ホッケーが作りたいんですが、どうやったら壁で跳ね返らせられるのですか?

416YoM:2014/01/16(木) 22:35:35 ID:JsEpu10g
414についてですが、自分で解決できました。
ありがとうございました。

417名無しさん:2014/01/23(木) 21:02:04 ID:27T7ik1U
ACLS

X=123
Y=95
TX=RND(255)
TY=RND(191)
TA=RND(360)

SPSET 0,0,0,0,0,0
SPSET 1,0,0,0,0,0
SPHOME 0,8,8
SPHOME 1,8,8
SPOFS 0,X,Y
SPOFS 1,TX,TY

@A
VSYNC 1
IF BUTTON() AND 1 THEN Y=Y−2
IF BUTTON() AND 2 THEN Y=Y+2
IF BUTTON() AND 4 THEN X=X−2
IF BUTTON() AND 8 THEN X=X+2
R=DEG(ATAN(Y−TY,X−TX))
IF TA<R THEN TA=TA+4
IF TA>R THEN TA=TA−4
IF TA<0 THEN TA=360
IF TA>360 THEN TA=0
TX=TX+COS(RAD(TA))*2
TY=TY+SIN(RAD(TA))*2
SPANGLE 1,TA
SPOFS 0,X,Y
SPOFS 1,TX,TY
LOCATE 0,0:PRINT FLOOR(TA)”     ”
LOCATE 0,1:PRINT FLOOR(R)”     ”
GOTO @A

これでSPRITE1がSPRITE0を追跡するようにしたいんですが、SPRITE1がSPRITE0よりもYが大きいとSPRITE1が回ってばっかりで追跡してこなくなるんです、どうすれば直せます?

418名無しさん:2014/01/24(金) 01:33:16 ID:CYoXanEU
>>417
たしかATANが返す値は -π 〜 π じゃなかったかな。
DEGを噛ませたら -180 〜 180 になります。
リストを打ち込んではいないので動作確認はしていませんが・・・

419暁(>>417):2014/01/24(金) 15:35:28 ID:27T7ik1U
うーんひとまず何処を訂正したり付けたしすると良いかとか教えてほしいです

420名無しさん:2014/01/24(金) 21:25:32 ID:JUnbbvLQ
TAの範囲 0〜360
Rの範囲 -180〜180

ちゃんと範囲を揃えないと正しい判定は行えない

421:2014/01/24(金) 23:43:40 ID:YzwPXaTk
>>420
IF R<0 THEN R=R+360
してみたが意味なかった、くそぅ何処を修正すればいいのか

422名無しさん:2014/01/25(土) 11:57:23 ID:XZ4mTL1A
>>421
この場合ならIFは不要でR=R+180では?

423名無しさん:2014/01/25(土) 12:15:41 ID:lFSBzV7A
>>421
そのIFをATANの次ぐらいに入れれば、少なくとも挙動は変わるはずだか、
そして、「何処を」って言ったら旋回方向を決めてる
IF TA<R、IF TA>R 
しかないわけで…
そして、値の範囲をそろえればそれだけでうまくいくってものでもない
(例:目標物を1時方向に発見!自機は11時方向を向いている。左旋回だ!?)
だからTAとRの差を求めそれを正規化(想定する範囲に収めること)し、
どっちに回ればいいかを判定する必要がある。

この前、まめちしきに書いたんだけど外積使うと楽だよ

424名無しさん:2014/01/25(土) 14:23:56 ID:JUnbbvLQ
>>421
範囲を揃えたらもう自キャラの方向と敵キャラの進行方向が
範囲内の上限と下限にまたがっている場合に追尾できないという点を
改善する必要がある。
これはRとTAの角度差の絶対値が180度以上の場合に敵キャラの
進行方向を逆にするだけでいい。

425:2014/01/25(土) 15:38:09 ID://Vcaxvc
>>422
それだとなんか追尾しないで逃げていってしまう
>>423
>>424
「そのIFをATANの次ぐらいに入れれば、少なくとも挙動は変わるはずだか」
うん、確かに変わったけどなんか今度はSPRITE1がSPRITE0の左側に居ると逃げていくんだよねえ
俺高校生じゃないからさ、よくわからないっていうかなんていうか・・・ごめん
もうどうすればいいのか・・・わかんねえ

426423:2014/01/25(土) 17:04:28 ID:lFSBzV7A
つまりR{-180〜180}とTA{0〜360}の差を求める(-TA{-360〜0})
R-TA{-540〜180}
これを正規化する。まず値をプラスにしちゃう
R-TA+720{180〜900}
これを0〜360に収める。Dとしよう
D=(R-TA+720)%360
このDがあと何度右に曲がればPLAYER機の方を向くかになる。
これが180より小さければ右旋回すればいいが、
180より大きいなら左旋回する必要がある。

427名無しさん:2014/01/25(土) 18:50:05 ID:JUnbbvLQ
>>425
TAとRの範囲を揃えた場合にはRの値を求めた後に
IF ABS(TA-R)>180 THEN K=-4 ELSE K=4
を入れてTA=TA+4、TA=TA-4をTA=TA+K、TA=TA+Kに
変更すればいい。

428名無しさん:2014/01/25(土) 18:51:58 ID:JUnbbvLQ
↑訂正 TA=TA+K、TA=TA+K ではなく TA=TA+K、TA=TA-K

429:2014/01/25(土) 19:07:21 ID:YzwPXaTk
>>426
できたあああ!!ありがとう!!なぜこういう原理になったが知らんがなんにも考えないでとりあえずこれでゲーム作るよ!まじありがとう!
>>427
やり方が違ったのか知らんけどそれじゃできなかった、ごめん

皆本当にありがとナs・・・じゃなくてありがとう!!

430名無しさん:2014/01/25(土) 19:17:57 ID:JUnbbvLQ
>>427の原理は>>426と同じだけど
範囲を揃えることで正規化せず単純に差分を求めるだけで済む分だけ
理解をするのが簡単になっている。

431:2014/01/25(土) 23:34:37 ID:YzwPXaTk
え、えと、ごめん?なさい

432YoM:2014/01/26(日) 00:22:49 ID:wp61rHv6
ACLS
LOAD"SPU0:スプライト名"
LOAD"COL1:パレット名"
SPSET 0,0,0,0,0,0,32,32

↑のようにして画面にキャラを表示させているのですが、
プログラムを実行するときにいちいち確認ダイアログを表示させたくありません。
どういった命令を加えるとよいのでしょうか。
もしくは、別のよりよい命令があるようならば教えて頂きたいです。

433名無しさん:2014/01/26(日) 07:35:39 ID:.JtICb96
>>432
LOAD命令の引数にfalseを追加するとダイアログが消せます。
ついでにSYSBEEP=FALSEと入れればピーガー音もなくなります

434YoM:2014/01/26(日) 09:52:45 ID:wp61rHv6
>>433
出来ました。ありがとうございます。

435初心者:2014/01/26(日) 14:48:37 ID:kttrSivQ
下画面に変数を表示するにはどうしたらいいですか?

436ヨッキ:2014/01/27(月) 22:10:30 ID:XGIK/ZTk
またまた、質問です。
あるプログラムの変数をSAVEしたいのですが・・・
SAVEの仕方が分かりません
超超ド初心者なので、出来るだけ詳しくお願いします。
出来れば、例もつけてくれると嬉しいのですが・・・
サンプルもご用意でk(蹴
失礼しました。

437名無しさん:2014/01/31(金) 15:35:52 ID:XTL1auBA
>>436
http://wiki.hosiken.jp/petc/?FAQ#ge80793c

438Ricky:2014/02/06(木) 17:29:38 ID:kKJKodko
質問です。
64×64ドット以上のマップを、BGで書きたいのですが(DATA文等で)
どうすればできるのでしょうか。分かる方教えてください。

439名無しさん:2014/02/09(日) 15:54:33 ID:OcC0RsXo
スプライト使ったアクションゲーム作りたいんですが
キャラクターをジャンプさせるにはどのようなプログラム
を組めばよいですか?
一回ジャンプさせてみたけど、ジャンプさせてる時BGとの座標がずれて
BGREADを使っても地面にめり込んでしまいます
お助けをおぉぉ

440名無しさん:2014/02/10(月) 07:56:10 ID:FgW2VLVQ
>>438
DATA文で普通に64x64以上で定義しておきBGPUTで表示画面の一回り外を常に更新させれば良いと思います。そうすればあたかも大きいマップのように見えるはずです。(BGの仕様的にはループしていても)

>>439
ジャンプの座標の計算は鉛直投射でググると出ます。キャラの変数を座標+加速度にしましょう。
地面のあたり判定は座標の小数点以下を繰り上げor繰り下げすればいいと思います。プログラム見てないので良くわかりませんが。

441名無しさん:2014/02/10(月) 20:05:36 ID:OcC0RsXo
439です
またまたすみせん
僕のプログラムはメインループのたびに
初速度に加速度をたしてそれで出たものをたしています
A=初速度 B=加速度 C=速度

C=A
@LOOP
Y=Y+C
SPOFS 0,X,Y
BX=FLOOR(X/8)
BY=FLOOR(Y/8)
BGREAD (0,BX,BY+2),C(1),P,H,V
BGREAD (0,BX+1,BY+2),C(2),P,H,V
IF C(1)!=0 OR C(2)!=0 THEN とまれぇぇ!!(実際はRETURNです)
C=C+B
WAIT 1
GOTO @LOOP

加速度=重力という認識でよろしいんですよね
実際はサブルーチンで行っているんですが
こんな感じなんですが
ここはこうだった方がいいなどあったらお願いします

442名無しさん:2014/02/10(月) 20:08:14 ID:OcC0RsXo
連コメすみせん
C(1)やC(2)は速度とは別としてください

443名無しさん:2014/02/10(月) 20:59:18 ID:.JtICb96
>>440の者です
Y=Y+CとSPOFSを当たり判定の後ろに持って行ってはどうでしょうか?そうすれば「移動しても地面にめり込まなければ下がる」という風になるかと。
その代わりBGREADのところをBGREAD(0,BX,BY+2+C/8)(以下略)
あとIFの後に座標を修正する文を入れたほうがいいかもしれません。
違ったらすみません。

444名無しさん:2014/02/10(月) 21:40:21 ID:OcC0RsXo
おお!!ありがとうございます!!

445Ricky:2014/02/11(火) 12:56:26 ID:kKJKodko
>>440
すいません。
438ですが、例えばどのようにプログラミングすれば良いのでしょうか。
DATA文のマップの表示は、以下のようにして表示しています。

CLEAR:ACLS
RESTORE @MAP
@MAP
FOR Y=0 TO 23
READ A$
FOR X=0 TO 31
B$=MID$(A$,X,1)
C=0
IF B$=="0" THEN C=0
IF B$=="1" THEN C=782
BGPUT 0,X,Y,C,2,0,0
NEXT
NEXT
'次のDATA文は、横32文字、縦24文字のものです。
DATA"11111111111111111111111111111111"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11000000000000000000000000000011"
DATA"11111111111111111111111111111111"

です。長くてスイマセン…
できれば教えていただきたいです。
よろしくお願い致します。

446名無しさん:2014/02/11(火) 22:20:10 ID:.JtICb96
>>445
サンプルを置きました。→http://ux.getuploader.com/petitcom_mkII/download/118/bgscr.PNG
上記のプログラムでは変数(map)にマップの状態を保存して移動する時にまわりの状態をBGに書き込んでいます。

447Ricky:2014/02/12(水) 16:36:02 ID:kKJKodko
>>446
おおおおおおお!!!!!
嬉しいです!
マジでありがとうございました!!!!!

448名無しさん:2014/02/17(月) 18:44:56 ID:v.mJVWFs
SPRITキャラをなめらかに
ジャンプさせるにはどうしたらいいですか?

449Ricky:2014/02/19(水) 16:27:50 ID:kKJKodko
>>448

1)ACLS:CLEAR
2)
3)SPSET 0,64,2,0,0,0
4)PX=100
5)PY=100
6)JP=0
7)JS=0
8)SPOFS 0,PX,PY
9)
10)GFILL 0,115,225,191,5
11)
12)@LOOP
13)B=BUTTON(2)
14)IF (B AND 16)==16 THEN JP=1:JS=6
15)IF JP==1 THEN GOSUB @JP
16)SPOFS 0,PX,PY
17)WAIT 1
18)GOTO @LOOP
19)
20)@JP
21)PY=PY-1
22)JS=JS-0.3
23)IF PY>100 THEN JP=0:PY=100
24)RETURN

これでどうでしょうか?
ちなみに1画面です(笑)
ジャンプの高さや速さを変えたい時は、
14行目の最後のJS=数 ってところをいらったり
22行目のJS=JS-数 ってところをいらったりしたら
いいですよ〜。役にたてたら嬉しいです!

450名無しさん:2014/02/24(月) 12:45:44 ID:1sNhFi5Y
>>449
そのプログラムだと、JSの値がスプライトの座標PYに影響を与えていないから
上に飛んでいったまま、地面に下りてこないよ

21)PY=PY-1

21)PY=PY-JS
と変更すると、ちゃんとジャンプになる

451Ricky:2014/02/24(月) 18:28:06 ID:kKJKodko
>>450
間違えました
報告ありがとうございました!

452Ricky:2014/02/27(木) 19:15:49 ID:kKJKodko
質問です。
http://6407.teacup.com/ochame/bbs/3711
http://ww5.tiki.ne.jp/~ochame/petitcom/polygon.htm
↑とかのポリゴンの表示の仕方を見ましたが、よく分かりません。
できれば、もう少しわかりやすく説明していただける方は
おられるでしょうか。ポリゴンの表示の仕方が知りたいです。
どなたか分かる方、ご回答宜しくお願い致します。

453名無しさん:2014/02/27(木) 23:43:11 ID:JUnbbvLQ
>>452
三角関数と行列とベクトルから説明しないといけないな。
ちなみにこれらは理解している?

454Ricky:2014/02/28(金) 20:36:09 ID:kKJKodko
>>453
すいません
理解してません…

455名無しさん:2014/02/28(金) 23:07:11 ID:JUnbbvLQ
>>454
それならば三角関数も行列もベクトルも使わずに説明する。
一番基本となるのは三角形1枚のポリゴンなので
その1枚のポリゴンの頂点のX座標、Y座標、Z座標をあらかじめ決めておく。
3Dポリゴン表示はどこから見ているのかというカメラの位置を設定する必要がある。
カメラの位置は計算しやすいように原点となる座標(0,0,0)に設置する。
カメラの向きは計算しやすいようにZ軸の正の向きに固定する。
すると三角形ポリゴンの各頂点のプチコンの画面上に表示する座標は
各頂点のZ座標で割るだけで良くなる。
http://ww5.tiki.ne.jp/~ochame/petitcom/tips/routine.htm#3d_screen
あとは表示してい3点を結んでそれを塗りつぶせば三角形1枚ポリゴンの描画完了。

ACLS:CLEAR
X(0)=15:Y(0)=20:Z(0)=10
X(1)=25:Y(0)=-20:Z(0)=10
X(3)=-20:Y(0)=30:Z(0)=10
FOR I=0TO 2
  SX(I)=128+X(I)/Z(I)*10
  SX(Y)=96-Y(I)/Z(I)*10
NEXT
GLINE SX(0),SY(0),SX(1),SY(1),2
GLINE SX(1),SY(1),SX(2),SY(2),2
GLINE SX(2),SY(2),SX(0),SY(0),2
GPAINT (SX(0)+SX(1)+SX(2))/3,(SY(0)+SY(1)+SY(2))/3,2

最初に設定している3点の座標を適当に弄れば表示されるポリゴンの形や大きさが変わる。
ただし、このプログラムでは処理の都合上Zの値は0より大きな数で無ければならない。
リンク先のポリゴン表示プログラムでは設定座標は回転の中心を(0,0,0)に設定して
カメラの位置は操作で変えられるようになっている。

複数のポリゴンを表示する場合は各ポリゴンの頂点座標をすべて設定してやれば可能になる。
ただし、それを回転させるには三角関数と行列が必須になるし、ポリゴンの裏表の判断や
陰影を付けるためにはベクトルが必須になる。

456名無しさん:2014/03/01(土) 13:15:28 ID:JUnbbvLQ
>>455のリストは1カ所タイプミスしてた

SX(Y)=96-Y(I)/Z(I)*10 は SY(I)=96-Y(I)/Z(I)*10

457名無しさん:2014/03/02(日) 11:11:17 ID:JUnbbvLQ
いや1カ所ではなかったw
最初に設定している座標における配列の添え字も間違いだらけで正しくはこう。
X(0)=15:Y(0)=20:Z(0)=10
X(1)=25:Y(1)=-20:Z(1)=10
X(2)=-20:Y(2)=30:Z(2)=10

コピペでリストを書きながら適当に作ったプログラムであることがバレバレだ

458Ricky:2014/03/02(日) 15:27:57 ID:kKJKodko
>>457
ありごとうございます!!!
ポリゴン使いこなせるように頑張ります!!!!!

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&amp;page=Toukou%2FRAYCAST%20MAZE&amp;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
無理です…。
でも、道路表示させたりカーブを作ったりすることはできます…。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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