プログラミング - pcn金沢kanazawa.pcn.club/pub/wp-content/uploads/data/programing1-1.pdf ·...
TRANSCRIPT
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/)
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
ゲームを作ってみよう
1
コンピュータ( IchigoJam)はプログラムを作らないと動かない。
プログラムを打ち込んで遊ぶのも楽しいけど、自分でゲーム作っている、工夫する/考えることも楽しいぞ!
「イチゴ集め」
~人が歩き回って イチゴを集める
今回のテーマは
自分で作ったゲームを、友達に遊んでもらうとカッコイイぞ!そして次回のコンテストに出そう!
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
基本操作コマンド
2
RUN
プログラムを動かしてみよう
LIST
もう一度プログラムの中身を表示
※キーボードの F5キーでも「RUN」と同じ動きをする
※キーボードの F4キーでも「LIST」と同じ動きをする
現在のプログラムを消して…NEW
CLS
一度画面をきれいに消して…
※キーボードの F1キーでも「CLS」と同じ動きをする
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
変数って?
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
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
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
プログラミング基礎
6
条件分岐
こういう図をフローチャートと言う。
繰り返し
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
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
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 (待ち時間)
プログラムを少し待つ
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 とは、不揃いの、任意の 意味
ランダム
ふぞろ にんい
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 とは、時を刻む (カチカチ言う) 意味
ティック
きざ
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行から移らない)
ほら、読めるでしょ?
すごい!
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
ゲームを作ろう(1)
13
「イチゴ集め」~人が歩き回って イチゴを集める
今回のテーマは
時間切れタイマ
点数
人
イチゴ どこに表示されるか?判らない
上下左右に歩き回る
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 とは、位置を示すの意味
ロケート
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 とは、点数 の意味
スコア
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, , ,
キャラクタ$(略してキャラ$)と呼ばれる
ダラー
ダラー
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
文字コード表
17
使用例)
? CHR$(#F9)と叩くと
が表示される
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
画面マップで設計
18
・キャラクタをどこに書く?・変数名は何を使う?
方眼紙に横32文字、高さ24行、の枠を書く。ほうがんし
設計 : プログラムを書く前に、決めておく
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
文字コード と同じ値
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) 書いて、すぐ消す
※チラつく
※チラつく
(関係ないところも消す)
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
→ 続く
続き→
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
判定
22
動かした座標が一致したら
・加点/減点・音鳴らす・キャラクタを変える・何か表示する・ゲーム終了 (Game End)
条件
処理 (どうする)
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
プログラムを完成させよう
23
時間切れタイマ
点数
人
イチゴ どこに表示されるか?判らない
上下左右に歩き回る
LC A,B
LC X,Y
T, TICK()
G
・変数名は何を使う?
設計 : プログラムを書く前に、決めておく
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)
初期値
初期画面の表示
キャラクタを動かす
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
PCN金沢(http://kanazawa.pcn.club/), IchigoJam(http://ichigojam.net/)
次回予告
26
「迷路を歩いてお宝ゲットするゲーム」を作るぞ!