SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

おそうじ犬・おそうじパックマン

Facebookのグループ「IchigoJam-FAN」で、画面上で犬のキャラクターを歩かせるプログラムを作った方がいました。
犬のキャラが可愛かったので、キャラとアイデアを頂戴して、プログラムを作ってみました。
名付けて「おそうじ犬」です。
リストなどを表示してから、RUNしてください。かわいい犬が、画面をお掃除してくれます。

10 '*CLEANING DOG*
20 POKE#700,#60,#2C,#28,#79,#FD,#B7,#FF,#85
30 POKE#708,#03,#1A,#0A,#8E,#9F,#F5,#FF,#91
40 W=5:Y=23:L=0
50 FOR I=23 TO 3 STEP -2
60 GOSUB 300:SCROLL 2
70 GOSUB 270:SCROLL 2
80 NEXT
90 GOSUB 300:SCROLL 2
100 L=1:GOSUB 270
110 LC 1,Y:?CHR$(224);
120 U=0:V=23:C=SCR(U,V)
130 IF C=0 OR C=32 THEN C=42:LC 0,Y:?CHR$(C);
140 WAIT W*5
150 FOR G=-5 TO 5
160 LC U,V:?CHR$(0);
170 U=U+1:V=V+G
180 LC U,V:?CHR$(C);
190 WAIT W
200 NEXT
210 J=1:FOR X=1 TO U:GOSUB 320:NEXT
220 LC U,Y:?CHR$(224);
230 WAIT W*5
240 FOR X=U TO 30:GOSUB 320:NEXT
250 GOSUB 330
260 CLS:CLV:CLP:END
270 J=0:GOSUB 330
280 FOR X=30 TO L STEP -1:GOSUB 320:NEXT
290 RETURN
300 J=1:FOR X=0 TO 30:GOSUB 320:NEXT
310 GOSUB 330:RETURN
320 LC X,Y:?CHR$(224+J);:WAIT W:LC X,Y:?CHR$(0);:RETURN
330 A=#900+32*24-1:POKE A,224+J:WAIT W:POKE A,0:RETURN

おそうじパックマン

先日、岐阜県白川町の子ども向けプログラミングスクールを見学してきました。
その時に子ども達からパックマンの話題が出たので、その場で即興でパックマンバージョンを作ってみました。
キャラがパックマンになっただけで、動きは犬バージョンと同じです。

10 '*CLEANING PACKMAN*
20 POKE#700,`00111100,`11111110,`00111111,`00001111,`00001111,`00111111,`11111110,`00111100
30 POKE#708,`00111100,`01111111,`11111100,`11110000,`11110000,`11111100,`01111111,`00111100
40 W=5:Y=23:L=0
50 FOR I=23 TO 3 STEP -2
60 GOSUB 300:SCROLL 2
70 GOSUB 270:SCROLL 2
80 NEXT
90 GOSUB 300:SCROLL 2
100 L=1:GOSUB 270
110 LC 1,Y:?CHR$(224);
120 U=0:V=23:C=SCR(U,V)
130 IF C=0 OR C=32 THEN C=42:LC 0,Y:?CHR$(C);
140 WAIT W*5
150 FOR G=-5 TO 5
160 LC U,V:?CHR$(0);
170 U=U+1:V=V+G
180 LC U,V:?CHR$(C);
190 WAIT W
200 NEXT
210 J=1:FOR X=1 TO U:GOSUB 320:NEXT
220 LC U,Y:?CHR$(224);
230 WAIT W*5
240 FOR X=U TO 30:GOSUB 320:NEXT
250 GOSUB 330
260 CLS:CLV:CLP:END
270 J=0:GOSUB 330
280 FOR X=30 TO L STEP -1:GOSUB 320:NEXT
290 RETURN
300 J=1:FOR X=0 TO 30:GOSUB 320:NEXT
310 GOSUB 330:RETURN
320 LC X,Y:?CHR$(224+J);:WAIT W:LC X,Y:?CHR$(0);:RETURN
330 A=#900+32*24-1:POKE A,224+J:WAIT W:POKE A,0:RETURN

おそうじパックマンゲーム

おそうじパックマンをさらに改造して、ゲームバージョンにしてみました。

  • 実行すると、パックマンが画面左上に登場します。カーソルキーの上下左右でパックマンを操作して、画面を掃除してください。
  • 掃除した文字の文字コードに応じて、点数が入ります。
  • 画面上をウロウロするモンスターに当たるとゲームオーバーです。当たらないように避けてください。
  • 全部掃除し終わっても、何もご褒美はありません(^_^;)


1 LC0,0:?"Clean PacMan:";:FORX=13TO32:?" ";:NEXT:CLV:CLP
2 POKE#700,`00111100,`11111110,`00111111,`00001111,`00001111,`00111111,`11111110,`00111100
3 POKE#708,`00111100,`01111111,`11111100,`11110000,`11110000,`11111100,`01111111,`00111100
4 POKE#710,`01000010,`01000010,`11100111,`11100111,`11111111,`11111111,`01111110,`00111100
5 POKE#718,`00111100,`01111110,`11111111,`11111111,`11100111,`11100111,`01000010,`01000010
6 FORM=0TO3:W=M*3:X=12+M%2*10:Y=6+M/2*10:GSB19:NEXT
7 P=0:Q=1:D=1:LCP,Q:?CHR$(224+D);
8 K=INKEY():X=P:Y=Q:LCP,Q:?CHR$(0)
9 T=0:IF270S=S+T/10:LC13,0:?S
12 FORM=0TO3:GSB15:NEXT
13 IF!GGOTO8
14 BEEP30,60:LCX,Y:?CHR$(#F4):LC0,22:END
15 W=M*3:X=[W]:Y=[W+1]:LCX,Y:?CHR$([W+2]);
16 E=RND(4):GSB20+E*2:IFSCR(X,Y)=#EDGOTO16
17 GSB19:IFX=P&&Y=QG=1:M=3
18 RTN
19 [W]=X:[W+1]=Y:[W+2]=SCR(X,Y):LCX,Y:?CHR$(#ED);:RTN
20 X=X-1:IFX=-1X=31
21 RTN
22 X=X+1:IFX=32X=0
23 RTN
24 Y=Y-1:IFY=0Y=22
25 RTN
26 Y=Y+1:IFY=23Y=1
27 RTN