何も分からん人向け
https://qiita.com/Hiroto_Aso/items/ddd87f81e42ed24a1f0c
落ち物避けゲーム.py
import pyxel
import random
class App:
def __init__(self):
# ウィンドウの幅と高さの設定
pyxel.init(160, 120, title="落ち物回避ゲーム")
# プレイヤーの初期設定
self.player_x = 75
self.player_y = 110
self.player_width = 10
self.player_height = 5
self.player_speed = 3
# 敵(落ちブロック)のリスト
self.enemies = []
self.enemy_speed = 2 # 落下速度
self.enemy_timer = 0 # 敵生成タイマー
self.enemy_interval = 30 # 敵生成の間隔(フレーム数)
pyxel.run(self.update, self.draw)
def update(self):
# プレイヤーの左右移動の処理
if pyxel.btn(pyxel.KEY_LEFT):
self.player_x = max(0, self.player_x - self.player_speed)
if pyxel.btn(pyxel.KEY_RIGHT):
self.player_x = min(pyxel.width - self.player_width, self.player_x + self.player_speed)
# 敵生成タイマーの更新
self.enemy_timer += 1
if self.enemy_timer > self.enemy_interval:
# 新しい敵を画面上部に生成
enemy_x = random.randint(0, pyxel.width - 5) # 敵の幅は5ピクセル
enemy_y = 0
self.enemies.append([enemy_x, enemy_y])
self.enemy_timer = 0
# すべての敵の位置を更新
for enemy in self.enemies:
enemy[1] += self.enemy_speed
# 敵とプレイヤーとの衝突判定(単純な矩形同士の判定)
for enemy in self.enemies:
if (enemy[0] < self.player_x + self.player_width and enemy[0] + 5 > self.player_x and
enemy[1] < self.player_y + self.player_height and enemy[1] + 5 > self.player_y):
pyxel.quit() # 衝突したらゲーム終了
# 画面外に出た敵をリストから削除
self.enemies = [enemy for enemy in self.enemies if enemy[1] < pyxel.height]
def draw(self):
pyxel.cls(0)
# プレイヤーの描画
pyxel.rect(self.player_x, self.player_y, self.player_width, self.player_height, 11)
# 敵の描画
for enemy in self.enemies:
pyxel.rect(enemy[0], enemy[1], 5, 5, 8)
# 説明テキストの表示
pyxel.text(5, 5, "矢印キーで左右移動", 7)
if __name__ == "__main__":
App()
他のゲーム
https://kitao.github.io/pyxel/wasm/examples/10_platformer.html