FIT2-2024b 第05回 リスト
事前課題の提出、 10/28時点で7件しかありませんでした!
次回以降実際に制作に入りますので、テーマの決定を何卒!
前回授業の振り返り
「ボールとパッドの接触判定」
最終的にはこんなコードになったはず
code:python
def update():
global ballx, bally, vx, vy, padx, speed, score
# 中略
if bally >= 195 and padx - 20 <= ballx <= padx + 20:
# padとボールが接触したとみなす
score = score + 100 # スコアを増やす
bally = 0 # y座標を0 (上辺)に戻す
ballx = pyxel.rndi(0, 199) # x座標はランダムに再設定
speed = speed + 0.5 # ボールを少し早くする
座標の位置関係を図にすると分かりやすい
https://gyazo.com/c90a2092e8c9c7612e7e41871e25f9e6
bally >= 195 = ボールがpadと同じ高さ以下になった
padx - 20 <= ballx <= padx + 20 padの左右幅内にボールの中心座標がある
上記が両立していれば「接触」と判定
⇔ 外周が掠っただけでは接触としない
本日の講義
https://gyazo.com/66284aaff04edc63f132d983605aa7d8
ボールを複数同時に制御する方法を教えます
リストを使ってボールを増やす際のコードの捉え方
for文で0, 1, 2と数字が取り出されるため、各リストのindexを使い X番目のボール を表現している
ballx[0], bally[0], vx[0], vy[0] … 1個目のボール
ballx[1], bally[1], vx[1], vy[1] … 2個目のボール
ballx[2], bally[2], vx[2], vy[2] … 3個目のボール
https://gyazo.com/1f6158ef976ee924992a4a1e14def2c5
B-10-3までは必修課題
B-10-4は任意課題とします
改めて、ミニプロジェクトについて
今日の講義が終われば、ゲーム開発に必要な要素技術は全て抑えたことになります
何を作るか、考え始めよう
wasdでダンジョン内を移動するゲーム
code:python
import pyxel
# 10x10のマップを二重配列で定義
map = [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, # mapの各数字が何に該当するかを定義
field = 0
block = 9
character = 1
# キャラクターのx,y座標
char_x = 5
char_y = 5
# mapを10x10にしたので、1マスの縦横幅は20
cell_width = 20
def update():
global char_x, char_y
# WASDでキャラクター移動 and 移動先がblockだったら移動キャンセル
char_x -= 1
char_y += 1
char_x += 1
char_y -= 1
def draw():
pyxel.cls(7)
# マップを描画
for x, row in enumerate(map):
for y, cell in enumerate(row):
color = 7
if cell == block:
color = 0
pyxel.rect(x * cell_width, y * cell_width, cell_width, cell_width, color)
# キャラクターを描画
pyxel.rect(char_x * cell_width, char_y * cell_width, cell_width, cell_width, 5)
pyxel.init(200, 200)
pyxel.run(update, draw)
https://gyazo.com/744ac606303dd4fa18a40592e4a68773
SA2名の成果物紹介も時間があれば
本日の課題
B-10-3までは必須課題
B-10-4は任意課題 (加点要素)
企画書 は是非考え始めるように、再来週までに一次提出が望ましいです