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

2021/12/24 08:36:04

MixJuice GET URL : kidspod.club/mj/2109

t/i

t/i

ピョンピョン

【内容】
 ジャンプでしか移動できないキャラクター「ピョンピョン」を操作して、下に落ちないように右に進んで行くゲームです。IchigoJam のバージョン1.2以降用です。

【遊び方】
 画面左上で動いているのがパワーメーターです。スペースキーを押して止めた時のパワーでジャンプします。パワー1につき横1キャラクター分移動します。右の方に進むと画面が左にスクロールします。画面左下の表示は持っているイチゴの数です。イチゴがあればジャンプ中にスペースキーを押して空中ジャンプできます。空中ジャンプはイチゴの数だけ何回でもできますが画面右端まで行くとそれ以上は進めません。画面下に落ちるとゲームオーバーで、Enterキーを押して再スタートです。

【プログラムについて】
 プログラム0と1の2つがあります。0の方から実行して下さい。VIDEO3の拡大画面モードを使っているので途中でプログラムを止めた時は、F8キーを押してVIDEO1の画面に戻して下さい。

<プログラム0>
 20-100行目 初期設定、画面作成
 900-920行目 ゲームオーバー

<プログラム1>
 200-230行目 キー入力待ち
 300-350行目 ジャンプ処理
 400-500行目 スクロール処理
 600行目 イチゴ個数表示サブルーチン

<変数>
 A ピョンピョンのキャラクター番号(224:立ち1、225:立ち2、226:ジャンプ)
 B スペースキー状態(0:離してない、1:離した、2:押した)
 C パワー用カウンター
 D アニメ用カウンター(0,1)
 H 穴の数(地面8キャラ分に対して)
 I FORループ用
 K ジャンプ加速度
 L レベル
 M レベルアップ用カウンター
 P パワー
 R 乱数
 S 距離
 W パワーメーターの速さ調整用のWAIT
 X ピョンピョンx座標
 Y ピョンピョンy座標
 Z イチゴ個数(空中ジャンプ可能回数)

 [0]-[15] 地面データ(画面内)
 [16]-[23] 地面データ(作成データ用)
 [24]-[31] 地面データ(作成コピー用)
 [32]-[47] イチゴデータ(画面内)
 [48]-[55] イチゴデータ(作成データ用)
 [56]-[63] イチゴデータ(作成コピー用)
 [64]-[66] パワーメーターデータ

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

SOURCE CODE

10 'Pyon_0
20 CLS:CLV:VIDEO3:A=224:L=1:H=1:W=10:Y=8:Z=3:[64]=1
30 POKE#700,#00,#00,#24,#7E,#ED,#FF,#E0,#7E
40 POKE#708,#00,#24,#7E,#ED,#FF,#E0,#E0,#7E
50 POKE#710,#24,#7E,#ED,#FF,#E0,#E0,#E0,#7E
60 FORI=0TO15:POKE#990+I,4:POKE#9A0+I,4:[I]=4:NEXT
70 COPY#820,#800,32:R=RND(7):POKE#998+R,0:POKE#9A8+R,0:[8+R]=0
80 FORI=0TO2:R=RND(14):IF [2+R]>0 POKE#982+R,255:[34+R]=1
90 NEXT
100 LCX,Y:?CHR$(224);:LC0,-1:LRUN1,500
900 WAIT8:FORI=0TO3:POKE#980+I*16+X,0:POKE#990+I*16+X,224:WAIT4:NEXT
910 BEEP20,20:LC3,5:?"GAME OVER"
920 IF INKEY()=10 RUN ELSE CONT

SAVE0
NEW

150 'Pyon_1
200 LC10,0:?S;"m":LCX,Y:?CHR$(A+D);
210 P=C+1:LC0,0:?P:COPY#900+P,#880,5
220 WAIT W:IF BTN(32)=0 B=1 ELSE IF B=1 B=2:K=-80*P-20:A=226
230 C=(C+1)%5:D=D^1:IF B<2 GOTO200 ELSE BEEP3,8
300 LC X,Y:?" ";:Y=Y+K/100:K=K+200:IF Y>=8 Y=8:K=0:A=224 ELSE IF X<15 X=X+1:S=S+1 
310 LC X,Y:?CHR$(A);:WAIT10:IF Z>0 IF BTN(32)=0 B=1 ELSE IF B=1 B=2:K=-100:Z=Z-1:BEEP3,8:GSB600
320 IF Y<8 GOTO300
330 IF [X]=0 LC0,-1:LRUN0,900
340 IF [32+X]>0 LC X,Y-1:?CHR$(255);:BEEP6,5:WAIT10:LC X,Y-1:?" ";:Z=Z+1:GSB600
350 C=0:B=0:IF X<8 GOTO200
400 COPY#900,#870,16:FORI=1TOH:[16+RND(7)]=0:NEXT
410 FORI=0TO7:SCROLL3:X=X-1:POKE#99F,[16+I]:POKE#9AF,[16+I]
420 IF([16+I]>0)&(RND(8)=0) POKE#98F,255:[48+I]=12
430 WAIT6:NEXT:COPY#800,#810,48:COPY#840,#850,48
440 GSB600:M=M^1:IF M<>0 GOTO200
450 L=L+1:IF L<4 H=H+1 ELSE IF W>0 W=W-1
500 LC6,5:?"Lv";L;:BEEP1,10:WAIT20:COPY#950,#870,16:GSB600:GOTO200
600 COPY#9B0,#870,16:LC0,23:?CHR$(255);Z;:RETURN

SAVE1

COMMENT

Kidspod運営チーム
Kidspod運営チーム2021/12/27 09:21:31

うーわ、おもしろい! シンプルなゲーム性ながら、狙った距離にジャンプするのは簡単じゃないですね。空中ジャンプを使うかどうかの判断も大切。キャラクタの動きもかわいらしくて、画面を見ているだけで楽しくなってきます。