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

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

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

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

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

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
無理です…。
でも、道路表示させたりカーブを作ったりすることはできます…。

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文で指定した範囲以外でもタッチに反応してラベルを移動してしまいます。どうすれば、タッチされて反応する座標を指定出来ますか。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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