create every day - 福野泰介の一日一創

かめをプログラミングするイチゴがりゲーム on IchigoJam1画面プログラム - 逐次処理の体感学習ゲーム

2017/07/23 23:55:00
#IchigoJam #KidsIT 

朝のプログラム
1 起きる
2 朝ごはん食べる
3 歯を磨く
4 着替える
5 荷物を持つ
6 家を出る

コンピューターにやってほしいことをやってほしい順に書く(プログラムする)と、その通りに順番にやってくれます(逐次処理)。
順番を入れ替えて、着替える前に家を出てしまったり、起きる前に朝ごはんを食べるとかするとおもしろいことになりますね!
どういう順序でやるとうまくいくか、あれこれ試して、考えて、うまくいくまでとことん実験できるのがコンピューターのいいところ。


人気のロボットスクールも、30年前流行したタートルグラフィックスも基本は一緒。 手軽に遊べるIchigoJam上でこの基本が学べるタートルゲーム「KAMEGAME(かめがめ)」をつくってみました。 プログラミング初心者向けです。

100 S=1:LET[0],226,225,227,224,0,1,0,-1,-1,0,1,0 110 CLS:SRND S:FORI=1TOS 120 X=RND(16)+8:Y=RND(16)+4:IF SCR(X,Y) CONT 130 LC X,Y:?CHR$(255):NEXT 140 X=15:Y=11:D=0:T=S 150 LC X,Y:?CHR$([D]) 160 LC0,0:INPUT N:N=1 170 C=SCR(N,0):IF C=0 GOTO160 180 LC X,Y:?"*" 190 IF C=ASC("F") X=X+[D+4]:Y=Y+[D+8] 200 IF C=ASC("B") X=X-[D+4]:Y=Y-[D+8] 210 IF C=ASC("R") D=(D+1)%4 220 IF C=ASC("L") D=(D+3)%4 230 LC X,Y:IF SCR()=255 T=T-1 240 ?CHR$([D]):WAIT10 250 IF T N=N+1:GOTO170 260 LC5,22:?"CLEAR!":S=S+1:WAIT60:GOTO110 RUN

プログラムはテレビ1画面以内に収まりました。(RUN on IchigoJam web)

実行すると画面内にイチゴ(キャラクターコード255)が登場するので、次の4つのコマンドを駆使して食べ尽しましょう!
F: まえへすすむ (Forward)
B: うしろへもどる (Back)
R: みぎむけ (Right)
L: ひだりむけ (Left)
入力したら エンターキー (コマンドは何度も打ち直しできます)

キャラクターを亀に変えて、遊んでみよう! (RUN on IchigoJam web)

10 POKE224*8,34,28,254,255,254,28,34,0,0,68,56,127,255,127,56,68,28,28,93,62,62,62,93,8,16,186,124,124,124,186,56,56

オリジナルキャラへ改造する方法
キャラクターを好きな形に変えよう

C=224:?CHR$(C):FORI=1TO8:?C;I-1;" POKE";C;"*8+";I-1;",`";BIN$(PEEK(C*8+I-1),8):NEXT ■ 2240 POKE224*8+0,`00100010 2241 POKE224*8+1,`00011100 2242 POKE224*8+2,`11111110 2243 POKE224*8+3,`11111111 2244 POKE224*8+4,`11111110 2245 POKE224*8+5,`00011100 2246 POKE224*8+6,`00100010 2247 POKE224*8+7,`00000000 OK GOTO2240 OK

[Insert]キーで、入力モードを上書きモードに変えて、0と1を使って8x8の絵を左向きの絵を描こう。
2240〜2247のすべての行でエンターキーを押して記憶させて、GOTO2240 でキャラクターのパターンが書き換わるよ!

右向きキャラクターを回転させて、4方向のキャラクターをつくるプログラム

10000 FORI=0TO3:?CHR$(224+I);:NEXT:? 10010 LET[0],224,226,225,227 10020 FORK=0TO2:FORI=0TO7:M=0 10030 FORJ=0TO7:IF PEEK([K]*8+J)&(1<<(7-I)) M=M+1<<J 10040 NEXT:POKE[K+1]*8+I,M:NEXT GOTO2240

うまくできたかな?
回転させてみて直したくなったら、LIST 2240,2247 でキャラクター設定のプログラムを出して、書き換えればOK!

10 GOSUB 2240 10050 RETURN

プログラムの先頭でキャラクターパターン設定と、回転プログラムを呼び出すようにすれば、完成!

キャラクターパターンをPEEKコマンドで読み出して、短くしておくと容量が節約できるよ!

?"10 POKE224*8";:FORI=0TO8*4-1:?",";PEEK(224*8+I);:NEXT:?

やってみよう!
KAMEGAME(かめがめ)に点数システムを導入して、友達や大人と競争してみよう!

1画面プログラムとは?

MSX時代、画面にちょうど収まるサイズのプログラムが、1画面部門と呼ばれ、打ち込みやすく、アイデア満載で人気でした!
IchigoJamの場合は、LISTコマンドでスクロールしない32文字x22行以内のプログラムを1画面プログラムと呼ぶことにします。
楽しい1画面プログラムに、ぜひ挑戦ください!

links
- こどもパソコンIchigoJam
- プログラミング言語は何から学ぶべきか? ロボットプログラミングゲームをIchigoJamでプログラミング! C言語の教科書「Springs of C」より
- 4方向に動くキャラを生成するBASICプログラム - よこはまYYラボさん来鯖
- MSXユーザーのためのIchigoJam入門 - MSX Advent Calendar 2015

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image