FIT2-2022b 第04回 簡単なゲーム
https://gyazo.com/821beacdbb6ab2beaf113e467c6c8f40
前回授業の復習
イベントループ
ゲームの動きをなめらかに実現するための考え方
以下コードでもアニメーションは実現できるが、計算が終わり次第描画されるため「PCが重いとゆっくり動く」「軽いと早く動く」不安定なゲームになってしまう
code:python
import pyxel
pyxel.init(200, 200)
a = 0
while True:
a = a + 1
pyxel.cls(7)
pyxel.circ(a, a, 10, 0)
pyxel.flip()
pyxel.runを利用すれば、update,drawが1/30秒ごとに一定のリズムで実行されるので便利
code:python
import pyxel
a = 0
def update():
global a
a += 1
def draw():
global a
pyxel.circ(a, a, 10, 0)
pyxel.run(update, draw)
gobal宣言
関数間同士で変数は共有されないため、以下のコードでは動かない。
global aを各関数の冒頭で書くことで、関数を跨いでも共通の「a」を使えるようになる
code:python
import pyxel
a = 0
def update():
a += 1 # a = a + 1
# エラーになる (aを定義する前に参照しようとしてるよ、と怒られる)
def draw():
pyxel.cls(7)
pyxel.circ(a, a, 10, 0)
pyxel.run(update, draw)
動く方向の管理
code:python
import pyxel
pyxel.init(200, 200)
a = 0
va = 1
def update():
global a, va
a += va
# エラーにならない(global宣言によりaは4行目定義の値、vaは5行目定義の値を参照する)
if a > 200:
elif a < 0:
def draw():
global a, va
pyxel.cls(7)
pyxel.circ(a, a, 10, 0)
pyxel.run(update, draw)
キー入力
code:python
import pyxel
pyxel.init(200, 200)
a = 0
def update():
global a
if pyxel.btn(pyxel.KEY_ENTER):
# ENTERキーが押下されている状態であれば以下処理を行う
a += 1
if pyxel.btnp(pyxel.KEY_SPACE):
# スペースキーが押された瞬間だけ以下処理を行う
def draw():
pyxel.run(update, draw)
今回の講義
https://gyazo.com/8c6ae86d00f299d0530b377d2d4164b8
落ちるボールをキャッチするゲームを作ります!
ボールキャッチゲーム
https://scrapbox.io/files/63587ae062b3ae002254a98c.mov
「ランダムな値」の生成方法と実用
タイピング試験
不要…?
今週の課題
今回もB-9-1まで必須提出
B-9-2は応用問題 (Sを取りたい方)
次回授業で「リスト」を教われば主要な技術要素は終わり!
次回授業を経て何を作るかを考え始めましょう