プログラミング - pcn金沢kanazawa.pcn.club/pub/wp-content/uploads/data/programing1-1.pdf ·...

27
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/) プログラミング ~ ゲームを作ろう (1/4) ※ライセンス ・この資料は、PCNグループ内で共有されている資料/プログラム を元に、引用/一部改編して作成しました。 CC BY IchigoJam (http://ichigojam.net), PCN (http://pcn.club/) ・画面に表示されているプログラムのフォントは、CC BY に基づき利用させて頂きます。 CC BY IchigoJam (http://ichigojam.net/), BALLOON a.k.a. Fu-sen. (http://15jamrecipe.jimdo.com/) ・また、本書は CC BY として 公開します。 CC BY ライセンスに基づいて複製/改変/再配布可能です。(著者表示は必須) CC BY PCN 金沢 (http://kanazawa.pcn.club/)

Upload: others

Post on 10-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラミング

~ ゲームを作ろう (1/4)

※ライセンス・この資料は、PCNグループ内で共有されている資料/プログラム を元に、引用/一部改編して作成しました。

CC BY IchigoJam (http://ichigojam.net), PCN (http://pcn.club/)・画面に表示されているプログラムのフォントは、CC BY に基づき利用させて頂きます。

CC BY IchigoJam (http://ichigojam.net/), BALLOON a.k.a. Fu-sen. (http://15jamrecipe.jimdo.com/)・また、本書は CC BY として 公開します。 CC BY ライセンスに基づいて複製/改変/再配布可能です。(著者表示は必須)

CC BY PCN 金沢 (http://kanazawa.pcn.club/)

Page 2: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

ゲームを作ってみよう

1

コンピュータ( IchigoJam)はプログラムを作らないと動かない。

プログラムを打ち込んで遊ぶのも楽しいけど、自分でゲーム作っている、工夫する/考えることも楽しいぞ!

「イチゴ集め」

~人が歩き回って イチゴを集める

今回のテーマは

自分で作ったゲームを、友達に遊んでもらうとカッコイイぞ!そして次回のコンテストに出そう!

Page 3: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

基本操作コマンド

2

RUN

プログラムを動かしてみよう

LIST

もう一度プログラムの中身を表示

※キーボードの F5キーでも「RUN」と同じ動きをする

※キーボードの F4キーでも「LIST」と同じ動きをする

現在のプログラムを消して…NEW

CLS

一度画面をきれいに消して…

※キーボードの F1キーでも「CLS」と同じ動きをする

Page 4: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラミングしてみよう(1) 書いて、動かす

10 A=13:B=320 ?A+B30 ?A*B

行番号 コマンド

プログラミングする時は、行の先頭に行番号をつける。

3

いくつかの命令を記憶しておけば、繰り返し動かすことができる。

いくつかの命令を定義することを、プログラミングする、という。

A,B,C,,,,Z という名前を付けた箱が26個ある。この箱に値を入れておくことができる。これを「変数A に 13を代入する」「~に~を記憶する」のように言うよ

…A B C Y Z

133

変数って?

Page 5: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

キーボードの方向キーを[↑] [→] [→] [→]…と打って、[*] の位置まで移動。

[Delete] キーで 1文字消して[/] を入力

プログラミングしてみよう(2) プログラムの変更

10 A=13:B=320 ?A+B30 ?A*B

30行目の「*」を「/」に変更してみよう。

10 A=13:B=320 ?A+B30 ?A/B

変更した行は、最後に忘れず「Enter」!

20

行を丸ごと消したい時は、行番号を書いて「Enter」。「CLS」「LIST」でもう一度、プログラムを表示しなおしてみよう。

4

Enter

Enter

Page 6: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

毎回、プログラムを叩くのは面倒だ。せっかく作ったプログラムだから、明日も使えるように保存しておこう。

SAVEは0~3 の4か所にできる。※SAVEはF3キーでも可能

プログラミングしてみよう(3) プログラムの保存

SAVE0

NEW 一度書いていたプログラムを消して…

LIST LISTで表示してみて、ちゃんと消えているか確認

LOAD0SAVEしたプログラムを呼び出してみよう※LOADはF2キーでも可能

LIST 呼び出したプログラムは表示できたかな?

5

Page 7: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラミング基礎

6

条件分岐

こういう図をフローチャートと言う。

繰り返し

Page 8: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラミング基礎(1) – 条件分岐

7

IF (条件) (処理)

条件に一致したら~

条件に一致したら~、そうじゃなかったら~

IF A=0 BEEP .. 等しければ~IF A<0 BEEP .. 0より小さければ~IF A<=0 BEEP .. 0以下ならば~IF A>0 BEEP .. 0より大きければ~IF A>=0 BEEP .. 0以上ならば~

IF A<>0 BEEP .. 等しくなければ~

IF (条件) (処理1) ELSE (処理2)

IF A>0 T=1 ELSE T=2

Page 9: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラミング基礎(1) – 条件分岐

8

IF (条件1) AND (条件2) (処理)

条件1、かつ条件2に一致したら~

IF A>0 AND B>0 T=3

IF (条件1) OR (条件2) (処理)

条件1、または条件2に一致したら~

IF A>0 OR B>0 T=4

条件1に一致し、条件2に一致したら~、そうじゃなかったら~

IF (条件1) IF (条件2) (処理2) ELSE (処理3)

IF A>0 IF B>0 T=5 ELSE T=6

Page 10: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラミング基礎(2) – 繰り返し

9

待ち時間は、60 で1秒間WAIT(120) とすれば 2秒間

GOTO (行番号)

行番号の位置に飛ぶ(戻る)

IF (条件) GOTO (行番号)

条件文(IF文) と合わせて使うことが多い

END

プログラムを終了させる

IF (条件) END

条件文(IF文) と合わせて使うことが多い

WAIT (待ち時間)

プログラムを少し待つ

Page 11: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

ゲームプログラム基礎(1) – 乱数

10

乱数 (Random ランダム)

RND(6) : 0~5のどれか→ RND(6)+1 でサイコロ(1~6)

10 A=RND(3)20 ?A30 WAIT 3040 GOTO 10

RND(2) : 0~1 のどれかRND(3) : 0~2 のどれか:

RND(50) = 0~49 のどれか:

RND(3) : 0~2 のどれか→ じゃんけん

0:グー, 1:チョキ, 2:パー

10 B=RND(6)+120 ?B30 WAIT 3040 GOTO 10

英語 RANDOM とは、不揃いの、任意の 意味

ランダム

ふぞろ にんい

Page 12: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

ゲームプログラム基礎(2) – 点数をつける

11

加点

経過時間

10 T=600:CLT20 V=T-TICK():? V30 IF V < 0 GOTO 10040 WAIT 5 50 GOTO 20100 ?”End”

CLTTICK()

S=S+1

減点

S=S-1

クリアティック1/60秒の時間値をゼロにする

1秒は 60。

時間切れ 英語 TICK とは、時を刻む (カチカチ言う) 意味

ティック

きざ

Page 13: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

反応速度ゲームを読んでみよう

12

反応速度ゲーム(LED光ったらすぐにボタン押せ!)

解説20 WAIT RND(180)+60

RND(180)とは 0~179 の乱数値を作るつまり 60~239 待つ

30 CLT経過時間を測定するタイマをゼロにする

50 ? TIK()ゲーム終了までの経過時間を表示する

40 IF BTN()=0 GOTO 40ボタンが押されるまで 待つ(40行から移らない)

ほら、読めるでしょ?

すごい!

Page 14: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

ゲームを作ろう(1)

13

「イチゴ集め」~人が歩き回って イチゴを集める

今回のテーマは

時間切れタイマ

点数

イチゴ どこに表示されるか?判らない

上下左右に歩き回る

Page 15: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

画面マップを書く

14

画面は横32文字、高さ24行。

位置指定:横0~31、高0~23⇒座標 5,21 のように表現する

指定した位置に書くLOCATE 16,12:PRINT “A”

省略形LC 16,12:? “A”

方眼紙に横32文字、高さ24行、の枠を書く。ほうがんし

英語 LOCATE とは、位置を示すの意味

ロケート

Page 16: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

PRINTの罠

15

わな

PRINT は改行される

10 CLS20 S=67030 LC 5,3:?“SCORE”:?S

40 LC 5,9:?“SCORE”;Sセミコロン「;」で繋げると横に繋げて表示する

PRINT 表示の後は改行される

LOCATEで表示位置を指定する

英語 SCORE とは、点数 の意味

スコア

Page 17: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

文字コード

16

各文字には文字コードと呼ばれる値が定義されている。

英数字

記号

IchigoJamには、ゲーム用の絵文字(キャラクタ文字)もある

ASCIIコードキャラクタコード

とも言う

アスキー

190 X=16:Y=20 200 A=3+RND(26)210 B=3+RND(12)220 CLS230 LC A,B:? CHR$(#FF)240 LC X,Y:? CHR$(#F9)

“0” = #30, ”1”=#31, , , ”9”=#39“A” = #41, ”B”=#42, , , ”N”=#4E, , ,

“+” = #2B, ”$”=#24, ”>”=#3E, , ,

キャラクタ$(略してキャラ$)と呼ばれる

ダラー

ダラー

Page 18: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

文字コード表

17

使用例)

? CHR$(#F9)と叩くと

が表示される

Page 19: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

画面マップで設計

18

・キャラクタをどこに書く?・変数名は何を使う?

方眼紙に横32文字、高さ24行、の枠を書く。ほうがんし

設計 : プログラムを書く前に、決めておく

Page 20: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

キャラクタを動かす(1)

19

位置を動かして書く

キー押した方向に動かすK = INKEY()

30↑

28 ← → 29↓31

ゲームで良く使うキーコード・ #20 [ ] (空白)・ #35 [5] 数字(#30~#39)・ #41 [A] 英大文字(#41~#5A)

120 X=10:Y=20

200 LC X,Y:? “A”210 WAIT 30220 Y=Y-1230 IF Y>5 GOTO 200

300 LC X,Y:? “V”310 WAIT 30320 Y=Y+1:X=X+1330 IF Y<21 GOTO 300

文字コード と同じ値

Page 21: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

キャラクタを動かす(2)

20

動かす、とは消すことが大切

1) 画面全体を消して、書く120 X=16:Y=20320 K=INKEY()330 IF K=28 IF X>3 X=X-1340 IF K=29 IF X<28 X=X+1350 IF K=30 IF Y>3 Y=Y-1360 IF K=31 IF Y<20 Y=Y+1365 CLS370 LC X,Y:? CHR$(#F9)390 GOTO 320

120 X=16:Y=20320 K=INKEY()330 IF K=28 IF X>3 X=X-1340 IF K=29 IF X<28 X=X+1350 IF K=30 IF Y>3 Y=Y-1360 IF K=31 IF Y<20 Y=Y+1370 LC X,Y:? CHR$(#F9)380 LC X,Y;? “ “390 GOTO 320

2) 書いて、すぐ消す

※チラつく

※チラつく

(関係ないところも消す)

Page 22: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

キャラクタを動かす(3)

21

毎回消さないキー押した時だけ消す

120 X=16:Y=20320 K=INKEY():

IF K=0 GOTO 320325 LC X,Y:? " "330 IF K=28 IF X>3 X=X-1340 IF K=29 IF X<28 X=X+1350 IF K=30 IF Y>3 Y=Y-1360 IF K=31 IF Y<20 Y=Y+1370 LC X,Y:? CHR$(#F9)390 GOTO 320

3) 前の位置を消して、次の位置に書く

4) 動かす前に、消して書く

120 X=16:Y=20320 K=INKEY()325 LC X,Y:? “ “330 IF K=28 IF X>3 X=X-1340 IF K=29 IF X<28 X=X+1350 IF K=30 IF Y>3 Y=Y-1360 IF K=31 IF Y<20 Y=Y+1370 LC X,Y:? CHR$(#F9)390 GOTO 320

→ 続く

続き→

Page 23: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

判定

22

動かした座標が一致したら

・加点/減点・音鳴らす・キャラクタを変える・何か表示する・ゲーム終了 (Game End)

条件

処理 (どうする)

Page 24: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラムを完成させよう

23

時間切れタイマ

点数

イチゴ どこに表示されるか?判らない

上下左右に歩き回る

LC A,B

LC X,Y

T, TICK()

G

・変数名は何を使う?

設計 : プログラムを書く前に、決めておく

Page 25: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラムを完成させよう(1/2)

24

1 'イチゴアツメ.1100 G=0120 X=16:Y=20130 T=1800:CLT

200 A=3+RND(26)210 B=3+RND(12)220 CLS 230 LC A,B:? CHR$(#FF)240 LC X,Y:? CHR$(#F9)250 LC 15,0:? "GET:";G:

300 LC 0,0:? "TIME:";T-TICK();" "310 LC X,Y:? " "320 K=INKEY()330 IF K=28 IF X>3 X=X-1340 IF K=29 IF X<28 X=X+1350 IF K=30 IF Y>3 Y=Y-1360 IF K=31 IF Y<20 Y=Y+1370 LC X,Y:? CHR$(#F9)

初期値

初期画面の表示

キャラクタを動かす

Page 26: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

プログラムを完成させよう(2/2)

25

400 IF T-TICK() <= 0 GOTO 500410 IF X=A AND Y=B G=G+1:GOTO 200420 GOTO 300

500 LC 10,14:? "GAME END"510 END

判定

ゲームEND

Page 27: プログラミング - PCN金沢kanazawa.pcn.club/pub/wp-content/uploads/data/Programing1-1.pdf · PCN金沢(¼‰, IchigoJam(¼‰ プログラミング ~ゲームを作ろう

PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)

次回予告

26

「迷路を歩いてお宝ゲットするゲーム」を作るぞ!