こんなことをするのはなかなかないと思います。
しかし、誰かに教えてもらわないと分からないときって言うのは
そんなときの手助けに少しでもなれれば、と思いすることにしました。
10 DATA 307CAEBBA3C15937,3C428DB1B18D423C,7CBA096959CA7434, 039DAA6666AA9D03,00FC030A630A03FC,0060676B32020400, 20 DATA C14B6F3F0A04,ソニック,4,2.2,0.1,1,1,0066D94BB604,ピクゴン, 2,1.8,0,5,2,B2FF5B7FDA02,マリオ,5,2.2,0,3,2, 1091A57E3400,カンガルー,3,1.8,0.2,4,2,587B6EFB901C,サボテンダー,0,1,-0.1,2,3, 1008303E0204,オト,3,2.5,0.1,6,0,082A08770822,ヒカリ,2,5,-2,6,0 |
ここはデータです。10がキャラの顔で、20が走る時のキャラ、名前、、敵の進める確率、
一回に進むマスの数、敵の場合どれくらいのスピードを引くか、技番号、特殊能力の増える数
となっています。
30 CLS :CLEAR :RANDOMIZE :RESTORE 10:DIM A(1),B(1),C(1),D(1), EE$(1),F$(1),G$(6),L(1),M(1),N(1), O(1),P(1),R(1):B(0)=49:B(1)=49:D(0)=1.5:D(1)=1 |
画面の掃除、値のクリア、DIMで、変数を増やしています。
40 LOCATE 6,1:PRINT "============":LOCATE 6,3:PRINT "============":LOCATE 8,4: PRINT "2P BATTLE":LOCATE 8,5:PRINT "CP BATTLE":LOCATE 7,2: PRINT "Super Race":S=1 |
オープニングを作ります。
50 LOCATE 7,S+3:PRINT " ":T$= INKEY$ :S=S-(T$="2")+(T$="8"): S=S*(S>0)*(S<2)-(S<=0)-(S>=2)*2: IF T$="5" THEN CLS :GOTO 60 ELSE LOCATE 7,S+3:PRINT "・":GOTO 50 |
選択の"・"をつくり、移動させたりします。5をおしたら60,それ以外だと50に行きます。
60 FOR I=0 TO 5:READ G$(I):GCURSOR (I*24+8,24):GPRINT G$(I): NEXT I:LOCATE 4,0:PRINT "Select Caracter":H=0:FOR J=1 TO 2:RESTORE 20 |
キャラの顔を読み取り、表示する。セレクト画面を作っています。
70 LINE (7+24*H,16)-(16+24*H,25),R,B:H=H-( INKEY$ ="6")+( INKEY$ ="4"): H=H*(H<6)*(H>=0)-6*(H>5) 80 LINE (7+24*h,16)-(16+24*H,25),S,B |
70は□を反転させます。そして移動もできます。条件演算ですね。
80は□を作ります。
90 IF INKEY$ <>"5" GOTO 70 |
5を押していなかったら70に戻ります。
100 FOR I=0 TO H:READ EE$(J-1),KK$,C(J-1),D(J-1),L(J-1),M(J-1),N(J-1):NEXT I |
左から0として数えた数だけループして読み取ることでその
キャラのデータを入れることができます。
110 LOCATE 13*(J-1),4:PRINT J;"P ";KK$:NEXT J |
選択したキャラの名前を表示します。
120 FOR I=0 TO 500:LOCATE 11,5:PRINT "wait":NEXT I |
二人目も選択したらここに来ます。ここはwaitを作って息を整えてもらいます。
130 CLS :GCURSOR (A(0),25):GPRINT EE$(0):GCURSOR (A(1),35): |
GPRINT EE$(1):R(1)=D(1):R(0)=D(0)
二人のキャラを表示します。RはDの控えだと思ってください。
140 LINE (135,0)-(135,47):PRINT "ヨーイ・・・";:FOR Y=0 TO 500:IF INKEY$ <>"" THEN PRINT "!ファール!":GOTO 10 ELSE NEXT Y:PRINT "ドン!" |
ヨーイドン!をします。フライングをすると10に行きます。
150 FOR I=0 TO 1:F$= INKEY$ :IF (P(I-(I=0)+(I=1))>0)*(M(I-(I=0)+(I=1))=5) GOTO 180 ELSE IF S=1 GOTO 170 ELSE IF (I=1)*( RND (8)=5) THEN F$="5": GOTO 190 ELSE IF I=1 THEN A(I)=A(I)-(D(i)+L(I))*( RND (8)>C(I)):GOTO 180 |
ピクごんの能力が使われているときは180に行き、そうでないときはもし二人対戦なら170にいき、
敵のときでランダムが5なら特殊能力発動のため190にいき、
そうでないならもし移動できないとでたら180に行く
160 A(I)=A(I)+D(I)*(F$="1")*(B(I)=49)+D(I)*(F$="2")*(B(I)=51): IF (F$="1")*(B(I)=49)+(F$="2")*(B(I)=51)>0 THEN B(I)=100-B(I):GOTO 180 |
ここはCP対戦の部分です。条件演算によりキャラを進めます。
170 OUT &H11,2:U= INP &H10:A(I)-(D(I)+L(I))*(U=8^(I+1))-(D(I)+L(I))*(U=72) |
ここは2P対戦の部分です。同時押し判定しています。
180 IF A(I)>=130 THEN LOCATE 7,1:PRINT I+1;"P WIN!":END ELSE IF S=1 GOTO 220 |
130マス目まで進んでいたら〜P WIN!と表示して終わる、そうでないとき、
2P対戦のときは220に行くようになっています。2P対戦には特殊能力機能がないからです。
190 IF (F$="5") AND (O(I)>60) THEN GOTO 210 |
もし5を押して、かつ、メーターが60までいっていたら210にいきなさいという意味です。
200 O(I)=O(I)+N(I):LOCATE 0+I*20,5:PRINT 0(I):P(I)=P(I)+(P(I)>0): IF (P(I)=0)*(M(I)=1) THEN D(I)=R(I):GOTO 220 ELSE IF (P(I)=0)*(M(I)=3) THEN D(I)=R(I):GOTO 220 ELSE IF (P(I)=0)*(M(I)=2) THEN D(I)=R(I): GOTO 220 ELSE GOTO 220 |
メーターを増やし、特殊能力のターンをへらし、もし特殊能力のターンが終了してるならば、
元のスピードに戻し、220にいくという部分です。
DをRに戻すことで元のスピードに戻るというわけです。
210 O(I)=0:IF M(I)=1 THEN D(I)=D(I)+2.5:P(I)=30 ELSE IF M(I)=2 THEN A(I)=A(I)+12: D(I)=D(I)+4:P(I)=8 ELSE IF M(I)=3THEN D(I)=D(I)+3.5:P(I)=10 ELSE IF M(I)=4 THEN A(I)=A(I)+15 ELSE IF M(I)=5 THEN P(I)=15 |
各キャラの特殊能力発動場所です。
220 GCURSOR (A(I),25+I*10):GPRINT EE$(I):GCURSOR (A(I)-25,25+I*10): GPRINT "000000000000000000000000000000000000000000000000000 000":NEXT I:GOTO 150 |
キャラの移動です。GPRINT"00000…はキャラの残像を消しています。
こんな感じですね。変数に関してです。
A(I):キャラのX軸の値、130になるとゴール
B(I):1を押すべきか、2を押すべきかです。49のときは1、51のときは2を押さなくてはいけません。
C(I):敵が進める確率の基準。これが大きいとなかなか敵は進めなくなる。
D(I):一回に進めるマスの数。値が大きいほど早い。
EE$(I):走るキャラの姿。
F$(I):INKEY$に使います。
G$(I):キャラの顔を入れときます。
H:キャラ選択で左から何番目かを示します。
KK$(I):選択したキャラの名前
L(I):敵のときそのキャラからどれくらいスピードを減らすかです。
M(I):特殊能力の番号です
N(I):特殊能力メーターが一回に増える量です。
O(I):特殊能力メーターです。60以上になると使えるようになります。
P(I):特殊能力の残ターンです。0になると特殊能力がおわり、元に戻ります
R(I):元のスピードです。(予備)元に戻すときに使います。
I,J:ループに使います。
どうでしたか?分からない箇所があれば意見場で質問してください。
また、改造した、や工夫したなどがあればそちらも意見場で披露してください。
改良して頂く分には構いません。ただし、他サイトで発表される場合は参考:ピクごんの間とつけてください。