今日は「タイトルの表示」を学びます。
もくじ
今日書いたコード
結果:タイトルが表示される。ENTERキーを押すとプレイ画面に移行。
import pyxel
GAME_TITLE = "TAXI PICUP" #ゲームタイトル。定数を定義する
CAR_ACCEL_X = 0.06 #車の左右移動の加速度
CAR_ACCEL_UP = 0.04 #車の前移動の加速度
CAR_ACCEL_DOWN = 0.02 #車の後ろ移動の加速度
MAX_CAR_SPEED = 0.8 #車の最大速度
OBJECT_SPAWN_INTERVAL = 150 #オブジェクトの出現間隔
class OneKeyGame:
def __init__(self):
#pyxelを初期化する
pyxel.init(160, 120, title=GAME_TITLE)
#リソースファイルを読み込む
pyxel.load("taxi_picup.pyxres") #pyxel.load関数の呼び出し
#ゲームをリセットする
self.is_title = True
self.reset_game()
#アプリの実行を開始する
pyxel.run(self.update, self.draw)
#ゲームをリセットする
def reset_game(self): #ゲームで使う変数を一括で初期化
#得点を初期化する
self.score = 0
#出現タイマーを初期化する
self.timer = 0
#車を初期化する
self.car_x = (pyxel.width - 8) / 2 #X座標
self.car_y = pyxel.height / 4 #Y座標
self.car_vx = 0 #X移動の速度
self.car_vy = 0 #Y移動の速度
self.car_dir = 1 #車の左右の向き(-1:左, +1:右)
self.is_turbo = False #ターボ中かどうか
self.is_exploding = False #爆発中かどうか
#マップの配置を初期化する
self.survivors = [] #客の配置
self.rock = [] #岩の配置
#アプリを更新する
def update(self):
#タイトル画面の時はRETURNキーの入力を待つ
if self.is_title: #タイトル画面かの判定を追加
if pyxel.btnp(pyxel.KEY_RETURN): #キー入力の判定を追加
self.is_title = False #Falseに変え、ゲームプレイ中とする
self.reset_game() #reset_game関数の呼び出しを追加
#地面を描画する
def draw_ground(self): #draw_ground関数を追加
num_grads = 10 #グラデーションの数
grad_width = 4 #グラデーションの幅
grad_height = 160
grad_start_x = pyxel.width - grad_width * num_grads #描画開始位置
pyxel.cls(9)
for i in range(num_grads):
pyxel.dither((i + 1) / num_grads) #ディザリングを有効にする
pyxel.rect(
grad_start_x + i * grad_width,
0,
pyxel.width,
grad_height,
11,
)
pyxel.dither(1) #ディザリングを無効にする
#タイトルを描画する
def draw_title(self):
for i in range(1, -1, -1):
color = 10 if i == 0 else 8
pyxel.text(57, 50 +i, GAME_TITLE, color)
pyxel.text(42, 70, "- Press Enter Key -", 3)
#タクシーを描画する
def draw_car(self): #draw_car関数を追加
pyxel.blt( #pyxel.blt関数で画像を描画する
self.car_x,
self.car_y,
0,
8,
0,
8,
8,
0,
)
#スコアを描画する
def draw_score(self): #draw_score関数を追加
score = f"SCORE:{self.score:05}"
for i in range(1, -1, -1):
color = 7 if i == 0 else 0
pyxel.text(3 + i, 3, score, color)
#アプリを描画する
def draw(self):
#画面を描画する
self.draw_ground()
self.draw_car()
self.draw_score()
#タイトル画面の時はタイトルを描画する
if self.is_title: #タイトル画面かの判定を追加
self.draw_title() #draw_title関数の呼び出しを追加
OneKeyGame()

コードの要点
pyxel.btnp関数:呼び出された時のフレームでキーが押されたかどうか判定する関数
pyxel.btnp(key, [hold], [repeat])
keyは押されているか判定したいキーの名前
holdはrepeat処理が発生するまでのフレーム数を指定する ※省略可
repeatはholdが指定されている場合、holdで指定したフレーム以上キーを押し続けた時
repeatで指定した間隔でTrueを返す ※省略可