Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2021/08/21 11:51:16

MixJuice GET URL : kidspod.club/mj/2080

t/i

t/i

ノーマルドライブ(IchigoCake用)

 ごく普通の縦スクロールドライブゲームです。IchigoCake BASIC でもスプライトを全部使って表示すればこういうのができるんだという参考になればと思い作りました。PanCake C のバージョン 1.2 だとスプライトが正しい順番で表示されないので、1.2.1 にアップデートして下さい。

(2021/8/23)
 車の左右移動の絵のパターンを追加しました。道路の車線の絵も変更しました。



【遊び方】
 スタートすると画面が自動的にスクロールします。カーソルキーの左右で車を動かして下さい。道路からはみ出すか、木にぶつかるとゲームオーバーです。Enterキーで再スタートです。ゲームが進むにつれてレベルが上がりスピードアップします。スピードが上がると、車の左右の移動量も変わるので操作に気をつけて下さい。


【プログラムについて】
 画面はスプライト32個使って表示していて、車とスコア用の数字以外の全てのスプライトをドット単位で下へ移動させて行くことで画面がスクロールしているように見せています。スピードは3段階ですが、スプライトの縦の移動量を増やすことで速くしています。縦の移動が速くなると車の左右移動もそれに対応できるように横の移動量を増やしています。なので、速くなるにつれて動きがだんだん粗くなってしまいますが、BASICプログラムでは(というか私の能力では)これが限界かなと思います。車の衝突判定は遊びやすいように少し甘めにしてあります。


<プログラム内容>
20-120行目 初期設定
200-270行目 初期画面
300行目 ここからメインループ
310-360行目 車のヒットチェック、移動
400-620行目 道のスクロール
700-810行目 家、芝、木のスクロール
910行目 メインループここまで
1000-1040行目 ゲームオーバー
1100-1120行目 BGMのテンポ変更
1200-1350行目 スプライトパターン設定


<スプライト番号>
00-15 道 16個 (2列*8行)
16-19 家 04個
20-25 芝 06個
26 木A 01個
27 木B 01個
28 車(爆発) 01個
29-31 スコア 03個


<スプライトパターン>
#F0 道・赤ライン左曲がり左側
#F1 道・赤ライン左曲がり右側
#F2 道・白ライン左曲がり左側
#F3 道・白ライン左曲がり右側
#F4 道・赤ライン直線左側
#F5 道・赤ライン直線右側
#F6 道・白ライン直線左側
#F7 道・白ライン直線右側
#F8 道・赤ライン右曲がり左側
#F9 道・赤ライン右曲がり右側
#FA 道・白ライン右曲がり左側
#FB 道・白ライン右曲がり右側
#FC 車・左曲がり
#FD 車・右曲がり


<変数>
A 汎用的代入用
B 汎用的代入用
C 汎用的代入用
D 汎用的代入用
E 汎用的代入用
F 汎用的代入用
G 車のパターン
I FORループ用
J FORループ用
L レベル
M コース変化用カウント
N 次のレベルアップスコア
P 車の横移動量
Q スクロール1回の縦移動量
S スコア
T 木の有無(0:なし、1:あり)
U 道の赤白カウント(0:赤、1:白)
V 次に出る道のx座標の増減(-1,0,+1)
W 1つ前の道のx座標の増減(-1,0,+1)
X 車のx座標


<配列>
[00]-[07] 道の処理順 08個 (#800-#80F)
[08]-[15] 処理順コピー用 08個 (#810-#81F)
[16]-[31] 道の座標 16個 (8個*2)
[32]-[39] 家の座標 08個 (4個*2)
[40]-[51] 芝の座標 12個 (6個*2)
[52]-[53] 木Aの座標 02個 (1個*2)
[54]-[55] 木Bの座標 02個 (1個*2)
[56]-[65] 家・芝のxプラス分 10個 (道のx座標を基準にしたプラス値)
[70]-[75] レベルデータ 06個 (縦移動量・ドット)
[80]-[85] レベルデータ 06個 (横移動量・ドット)
[90]-[95] レベルデータ 06個 (障害物有無・0:なし、1:あり)
[100]-[105] レベルデータ 06個 (BGM速度・テンポ)
[110]-[114] レベルデータ 05個 (レベルアップスコア・点)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

SOURCE CODE

10 'Normal_Drive
20 VIDEO0:CLV:PC.RESET:PC.SSTART #18
30 GSB1200
40 LET[32],16,0,56,16,16,32,56,48
50 LET[40],24,-8,8,8,64,8,48,24,8,40,64,40,-8,-8,-8,24
60 LET[56],64,24,64,24,72,56,32,16,56,32
70 LET[70],2,2,4,4,8,8
80 LET[80],1,1,2,2,4,4
90 LET[90],0,1,0,1,0,1
100 LET[100],#A2,#A2,#62,#62,#22,#22
110 LET[110],10,20,40,60,100
120 G=#10:X=36:M=4:U=1:Q=[70]:P=[80]:T=[90]:N=[110]

200 FORI=0TO7:[I]=I:[I*2+16]=32:[I*2+17]=I*8-8:FORJ=0TO1:PC.SMOVE I*2+J,32+J*8,I*8-8:PC.SCREATE I*2+J,#F4+A+J:NEXT:A=(A+2)%4:NEXT
210 FORI=0TO11:PC.SMOVE 16+I,[32+I*2],[32+I*2+1]:IF I<4 A=#46 ELSE IF I<10 A=#60 ELSE A=#5C
220 PC.SCREATE 16+I,A:NEXT
230 PC.SMOVE 28,X,32:PC.SCREATE 28,G
240 FORI=0TO2:PC.SMOVE 29+I,#38+I*8,0:NEXT
250 PC.MSCORE 1,0,#12,">>>A~B~"
260 PC.MSCORE 2,1,#A2,"E2E2E2>E8":WAIT180
270 GSB1100

300 '
310 PC.SCREATE 29,#A6+S/100:PC.SCREATE 30,#A6+S/10%10:PC.SCREATE 31,#A6+S%10%10
320 PC.SMOVE 28,X,32:PC.SCREATE 28,G
330 A=[5]:B=[A*2+16]:IF(X<B-3)|(X>B+11) GOTO1000
340 C=[52]-X:D=[53]-30:IF C*C+D*D<16 GOTO1000
350 E=[54]-X:F=[55]-30:IF E*E+F*F<16 GOTO1000
360 IF BTN(28)=1 X=X-P:G=#FC ELSE IF BTN(29)=1 X=X+P:G=#FD ELSE G=#10
400 '
410 FORI=0TO7
420 A=[I]*2+16:B=A+1:[B]=[B]+Q
430	IF[B]<56 GOTO600
440 '
450	[B]=[B]-64:C=[0]*2+16:[A]=[C]+V+W:PC.SCREATE [I]*2,#F0+(V+1)*4+U*2:PC.SCREATE [I]*2+1,#F0+(V+1)*4+U*2+1:W=V:U=U^1
460	S=S+1:IF(S=N)&(L<5) L=L+1:Q=[70+L]:P=[80+L]:T=[90+L]:N=[110+L]:PC.MPLAY 1,1:GSB1100
470 M=M-1:IF M>0 GOTO500
480 M=RND(4)+2:D=RND(5):IF D=0 E=1 ELSE IF D<3 E=2 ELSE E=3
490 V=(V+E)%3-1
500 '
510 IF([A]<2)&(V<0) V=0:M=1
520 IF([A]>62)&(V>0) V=0:M=1
530 COPY#810,#800,16:COPY#802,#810,14:COPY#800,#81E,2
600 '
610 FORJ=0TO1:PC.SMOVE [I]*2+J,[A]+J*8,[B]:NEXT
620 NEXT
700 '
710 FORI=0TO11
720 A=I*2+32:B=A+1:[B]=[B]+Q
730 IF[B]<56 GOTO800
740 [B]=[B]-64:C=[0]*2+16
750 IF I<10 [A]=([C]+[I+56])%80 ELSE IF T=1 [A]=[C]+RND(2)*8 ELSE [A]=-8
800 PC.SMOVE I+16,[A],[B]
810 NEXT
900 '
910 GOTO300

1000 '
1010 PC.SCREATE 28,#58
1020 PC.MSCORE 0,1,#12,"<GFEDC~~":VIDEO1:CLS
1030 ?"Game Over":?:?"Result:";S;"m":?:?"Push [Enter]"
1040 IF INKEY()=10 RUN ELSE CONT

1100 '
1110 PC.MSCORE 0,1,[100+L],"$FFDCFFDCEEDCEEDC"
1120 RTN

1200 '
1210 PC.SUSER #F0,8,"20CCCCC120CCCCC120CCCCC120CCCCCC820CCCCC820CCCCC820CCCCC820CCCCC"
1220 PC.SUSER #F1,8,"CCCCC028CCCCC028CCCCC0281CCCC0281CCCCC02CCCCCC02CCCCCC02CCCCCC02"
1230 PC.SUSER #F2,8,"10CCCCCC10CCCCCC10CCCCCC10CCCCCC810CCCCC810CCCCC810CCCCC810CCCCC"
1240 PC.SUSER #F3,8,"CCCCC018CCCCC018CCCCC018CCCCC018CCCCCC01CCCCCC01CCCCCC01CCCCCC01"
1250 PC.SUSER #F4,8,"820CCCCC820CCCCC820CCCCC820CCCCC820CCCCC820CCCCC820CCCCC820CCCCC"
1260 PC.SUSER #F5,8,"1CCCC0281CCCC0281CCCC0281CCCC028CCCCC028CCCCC028CCCCC028CCCCC028"
1270 PC.SUSER #F6,8,"810CCCCC810CCCCC810CCCCC810CCCCC810CCCCC810CCCCC810CCCCC810CCCCC"
1280 PC.SUSER #F7,8,"CCCCC018CCCCC018CCCCC018CCCCC018CCCCC018CCCCC018CCCCC018CCCCC018"
1290 PC.SUSER #F8,8,"820CCCCC820CCCCC820CCCCC820CCCC120CCCCC120CCCCCC20CCCCCC20CCCCCC"
1300 PC.SUSER #F9,8,"1CCCCC021CCCCC021CCCCC02CCCCCC02CCCCC028CCCCC028CCCCC028CCCCC028"
1310 PC.SUSER #FA,8,"810CCCCC810CCCCC810CCCCC810CCCCC10CCCCCC10CCCCCC10CCCCCC10CCCCCC"
1320 PC.SUSER #FB,8,"CCCCCC01CCCCCC01CCCCCC01CCCCCC01CCCCC018CCCCC018CCCCC018CCCCC018"
1330 PC.SUSER #FC,8,"8822588885222888822AA28888222288882222288882AA288882228888888888"
1340 PC.SUSER #FD,8,"8885228888822258882AA228882222888222228882AA28888822288888888888"
1350 RTN

COMMENT

Kidspod運営チーム
Kidspod運営チーム2021/09/21 17:11:03

すごくいいアニメーションですね。車の左右移動のパターンがとてもナイス! スピード感がかなり上がっているのではないでしょうか。カーブと障害物が同時にやってきたときの緊張感が好きです。はたして避けられるのか!