MENU
  • HOME
  • プログラミングスクール
    • Scratch(スクラッチ)プログラミング教室|宜野湾・沖縄|クロスウェーブ
    • MakeCode
    • Roblox(ロブロックス)
    • Python(パイソン)AI・自動化コース
    • Unity(ユニティ)3Dゲーム開発コース|ロブロックスの次に挑む本格ゲーム制作
    • プログラミング教室 社会人向け/無料体験あり
      • JavaScript・TypeScript Webアプリ開発コース
      • Ruby on Rails Webサービス制作コース|最速でアイデアを形にする起業家エンジニアへ
      • SQL・データベース構築コース|ITインフラの裏側を支えるデータ操作術
    • AI(生成AI)・データサイエンス
  • 動画編集・YouTuber育成
    • SNS/SNS運用/SNSスクール
  • Webクリエイター育成
  • Webサイト・コンテンツ制作
    • マインクラフト ワールド制作
    • メタバース ワールド制作
    • ご当地RPG制作
  • イベント
  • ブログ
  • 沖縄マイクラ部
    • お知らせ
    • アクセス・地図(宜野湾)
    • マインクラフト ワールド制作
    • すずきたかまさ(鈴木孝昌)プロフィール ― 沖縄マイクラ部・クロスウェーブ代表
マイクラ×沖縄で全国大会TBS賞受賞!沖縄マイクラ部(クロスウェーブ)は 現役エンジニア直接指導のプログラミングスクール。月謝8,800円通い放題。 宜野湾・うるま・北谷。無料体験受付中。
マイクラ 沖縄|沖縄マイクラ部・クロスウェーブ【マインクラフトカップ全国大会出場の本格派プログラミング教室】
  • HOME
  • プログラミングスクール
    • Scratch(スクラッチ)プログラミング教室|宜野湾・沖縄|クロスウェーブ
    • MakeCode
    • Roblox(ロブロックス)
    • Python(パイソン)AI・自動化コース
    • Unity(ユニティ)3Dゲーム開発コース|ロブロックスの次に挑む本格ゲーム制作
    • プログラミング教室 社会人向け/無料体験あり
      • JavaScript・TypeScript Webアプリ開発コース
      • Ruby on Rails Webサービス制作コース|最速でアイデアを形にする起業家エンジニアへ
      • SQL・データベース構築コース|ITインフラの裏側を支えるデータ操作術
    • AI(生成AI)・データサイエンス
  • 動画編集・YouTuber育成
    • SNS/SNS運用/SNSスクール
  • Webクリエイター育成
  • Webサイト・コンテンツ制作
    • マインクラフト ワールド制作
    • メタバース ワールド制作
    • ご当地RPG制作
  • イベント
  • ブログ
  • 沖縄マイクラ部
    • お知らせ
    • アクセス・地図(宜野湾)
    • マインクラフト ワールド制作
    • すずきたかまさ(鈴木孝昌)プロフィール ― 沖縄マイクラ部・クロスウェーブ代表
  • HOME
  • プログラミングスクール
  • 動画編集・YouTuber育成
  • Webクリエイター育成
  • Webサイト・コンテンツ制作
  • イベント
  • ブログ
  • 沖縄マイクラ部
マイクラ 沖縄|沖縄マイクラ部・クロスウェーブ【マインクラフトカップ全国大会出場の本格派プログラミング教室】
  • HOME
  • プログラミングスクール
    • Scratch(スクラッチ)プログラミング教室|宜野湾・沖縄|クロスウェーブ
    • MakeCode
    • Roblox(ロブロックス)
    • Python(パイソン)AI・自動化コース
    • Unity(ユニティ)3Dゲーム開発コース|ロブロックスの次に挑む本格ゲーム制作
    • プログラミング教室 社会人向け/無料体験あり
      • JavaScript・TypeScript Webアプリ開発コース
      • Ruby on Rails Webサービス制作コース|最速でアイデアを形にする起業家エンジニアへ
      • SQL・データベース構築コース|ITインフラの裏側を支えるデータ操作術
    • AI(生成AI)・データサイエンス
  • 動画編集・YouTuber育成
    • SNS/SNS運用/SNSスクール
  • Webクリエイター育成
  • Webサイト・コンテンツ制作
    • マインクラフト ワールド制作
    • メタバース ワールド制作
    • ご当地RPG制作
  • イベント
  • ブログ
  • 沖縄マイクラ部
    • お知らせ
    • アクセス・地図(宜野湾)
    • マインクラフト ワールド制作
    • すずきたかまさ(鈴木孝昌)プロフィール ― 沖縄マイクラ部・クロスウェーブ代表
  1. ホーム
  2. Blog
  3. プログラミング
  4. Python
  5. PythonとPyxelでFlappy Birdを作る完全ガイド|小3以上向け・はじめてのゲーム開発

PythonとPyxelでFlappy Birdを作る完全ガイド|小3以上向け・はじめてのゲーム開発

2026 2/23
Blog プログラミング Python
Python Pyxel
2026年2月23日
PythonとPyxelでFlappy Birdを作る完全ガイド|小3以上向け・はじめてのゲーム開発

「Scratchはできるようになった。次は文字でゲームを作ってみたい」

そんな小学校3年生以上の子どもたちと保護者の方へ。この記事では、Python(パイソン)とPyxel(ピクセル)でFlappy Bird風ゲームを完成まで作る流れを、順番に解説します。

「コードは難しそう」と感じるかもしれません。大丈夫です。この記事は、手順だけではなく「このコードは何をしているか」と「動かないときの直し方」をセットで説明します。

ゴールは2つです。

  • 1本のゲームを最後まで完成させる
  • Pythonの基礎文法をゲームの中で体験する
あわせて読みたい
Scratchでつくる Flappy Bird|小3以上向け・一人で完成できるていねい解説 「ゲームを作ってみたいけど、どこから始めればいいんだろう?」 「Scratchは少し触ったことがあるけど、ちゃんと完成までいけるかな?」 そんな気持ちの小学校3年生以...
あわせて読みたい
PICO-8でFlappy Birdを作る完全ガイド|小3以上向け・はじめてのLuaゲーム開発 「Scratchは作れた。次はコードでゲームを作ってみたい」 そんな小学校3年生以上の子どもたちと保護者の方へ。この記事では、PICO-8(ピコエイト)でFlappy Bird風ゲー...
目次

はじめに:PythonとPyxelを3分で理解

まずは公式情報を確認しておくと安心です。

  • Python公式サイト:Welcome to Python.org
  • Pyxel公式サイト:Pyxel Official

Pythonは、読みやすく書きやすい言語です。プログラミングの入門から、AIやデータ分析、Web開発まで幅広く使われています。

Pyxelは、Pythonでレトロゲームを作るための軽量ゲームエンジンです。画面サイズ、ドット絵、効果音を小さく管理できるため、子どもの最初のゲーム開発にとても向いています。

Luaの学習にもつながるようにしたい方は、Roblox Studioで学ぶLuaプログラミング入門もあわせて読むと、言語の違いが整理しやすくなります。コース全体はプログラミングスクール詳細で確認できます。

なぜ最初にFlappy Birdを作るの?

Flappy Bird風ゲームには、ゲーム制作の基本がまとまっています。

  • 重力(何もしないと落ちる)
  • 入力(押したら跳ぶ)
  • 障害物生成(一定間隔で出す)
  • 当たり判定(ぶつかったら終了)
  • スコア管理(通過したら加点)

この5つは、ほかのアクションゲームでもそのまま使える重要な基礎です。

先に準備するもの

  1. Python 3.10以上をインストール
  2. ターミナルで pip install pyxel
  3. 作業フォルダーに main.py を作成

ここでのコツは「一気に全部書かない」ことです。1ステップ書いたら実行して確認、を繰り返すと、エラーを早く直せます。

先に設計図を持とう

今回のゲームは4つの部品でできています。

  • 鳥の物理(落下とジャンプ)
  • 土管の生成と移動
  • 当たり判定(ゲームオーバー)
  • スコア表示

迷ったら「今どの部品を作っているか」に戻ると、整理しやすくなります。

コード手順(少しずつ積み上げる)

ステップ1:まずは画面を出す

main.py に次を書いて実行します。

import pyxel


class App:
    def __init__(self):
        pyxel.init(160, 120, title="Flappy Bird Pyxel")
        pyxel.run(self.update, self.draw)

    def update(self):
        pass

    def draw(self):
        pyxel.cls(12)
        pyxel.text(50, 56, "flappy bird start", 7)


App()

確認ポイント:

  • 水色の画面が出る
  • 文字が表示される

ステップ2:鳥を表示する

import pyxel


class App:
    def __init__(self):
        pyxel.init(160, 120, title="Flappy Bird Pyxel")
        self.bird_x = 32
        self.bird_y = 60
        self.bird_r = 3
        pyxel.run(self.update, self.draw)

    def update(self):
        pass

    def draw(self):
        pyxel.cls(12)
        pyxel.circ(self.bird_x, self.bird_y, self.bird_r, 10)


App()

確認ポイント:

  • 左側に鳥(丸)が見える

ステップ3:重力を入れる

self.bird_vy = 0

update() を次のように変更します。

def update(self):
    self.bird_vy += 0.2
    self.bird_y += self.bird_vy

確認ポイント:

  • 鳥が下に落ちる

ステップ4:ジャンプを入れる

def update(self):
    self.bird_vy += 0.2

    if pyxel.btnp(pyxel.KEY_SPACE) or pyxel.btnp(pyxel.GAMEPAD1_BUTTON_A):
        self.bird_vy = -2.6

    self.bird_y += self.bird_vy

確認ポイント:

  • スペースキーで上に跳ぶ

ステップ5:土管を1本出して動かす

__init__() に追加します。

self.pipe_x = 160
self.pipe_w = 10
self.gap_y = 50
self.gap_h = 28

update() に追加します。

self.pipe_x -= 1
if self.pipe_x < -self.pipe_w:
    self.pipe_x = 160

draw() に追加します。

pyxel.rect(self.pipe_x, 0, self.pipe_w, self.gap_y, 3)
pyxel.rect(self.pipe_x, self.gap_y + self.gap_h, self.pipe_w, 120, 3)

確認ポイント:

  • 土管が右から左へ動く

ステップ6:土管を複数にする

__init__() に追加します。

self.pipes = []
self.frame = 0

update() の土管処理を置き換えます。

self.frame += 1

if self.frame % 45 == 0:
    gap_y = pyxel.rndi(30, 70)
    self.pipes.append({"x": 160, "w": 10, "gap_y": gap_y, "gap_h": 28, "passed": False})

for p in self.pipes:
    p["x"] -= 1

self.pipes = [p for p in self.pipes if p["x"] > -12]

draw() の土管描画を置き換えます。

for p in self.pipes:
    pyxel.rect(p["x"], 0, p["w"], p["gap_y"], 3)
    pyxel.rect(p["x"], p["gap_y"] + p["gap_h"], p["w"], 120, 3)

確認ポイント:

  • 土管が時間差で複数出る

ステップ7:当たり判定とゲームオーバー

__init__() に追加します。

self.gameover = False

update() の最初に追加します。

if self.gameover:
    if pyxel.btnp(pyxel.KEY_SPACE):
        self.reset()
    return

同じく update() の後半に追加します。

if self.bird_y < 0 or self.bird_y > 119:
    self.gameover = True

for p in self.pipes:
    hit_x = (self.bird_x + self.bird_r > p["x"]) and (self.bird_x - self.bird_r < p["x"] + p["w"])
    hit_top = self.bird_y - self.bird_r < p["gap_y"]
    hit_bottom = self.bird_y + self.bird_r > p["gap_y"] + p["gap_h"]
    if hit_x and (hit_top or hit_bottom):
        self.gameover = True

draw() の最後に追加します。

if self.gameover:
    pyxel.rect(44, 48, 72, 22, 0)
    pyxel.text(64, 56, "game over", 8)
    pyxel.text(54, 64, "press space", 7)

ステップ8:スコアを入れて完成

__init__() に追加します。

self.score = 0

update() の土管ループ内に追加します。

if (not p["passed"]) and (p["x"] + p["w"] < self.bird_x):
    p["passed"] = True
    self.score += 1

draw() に追加します。

pyxel.text(4, 4, f"score:{self.score}", 7)

コピペで動く完成形コード(このまま全部貼り付け)

下のコードを main.py にまるごと貼り付けて実行してください。

import pyxel


class App:
    def __init__(self):
        pyxel.init(160, 120, title="Flappy Bird Pyxel")
        self.reset()
        pyxel.run(self.update, self.draw)

    def reset(self):
        self.bird_x = 32
        self.bird_y = 60
        self.bird_r = 3
        self.bird_vy = 0
        self.pipes = []
        self.frame = 0
        self.score = 0
        self.gameover = False

    def update(self):
        if pyxel.btnp(pyxel.KEY_R):
            self.reset()
            return

        if self.gameover:
            if pyxel.btnp(pyxel.KEY_SPACE):
                self.reset()
            return

        self.frame += 1

        self.bird_vy += 0.2
        if pyxel.btnp(pyxel.KEY_SPACE) or pyxel.btnp(pyxel.GAMEPAD1_BUTTON_A):
            self.bird_vy = -2.6
        self.bird_y += self.bird_vy

        if self.frame % 45 == 0:
            gap_y = pyxel.rndi(30, 70)
            self.pipes.append(
                {"x": 160, "w": 10, "gap_y": gap_y, "gap_h": 28, "passed": False}
            )

        for p in self.pipes:
            p["x"] -= 1

            if (not p["passed"]) and (p["x"] + p["w"] < self.bird_x):
                p["passed"] = True
                self.score += 1

        self.pipes = [p for p in self.pipes if p["x"] > -12]

        if self.bird_y < 0 or self.bird_y > 119:
            self.gameover = True

        for p in self.pipes:
            hit_x = (self.bird_x + self.bird_r > p["x"]) and (
                self.bird_x - self.bird_r < p["x"] + p["w"]
            )
            hit_top = self.bird_y - self.bird_r < p["gap_y"]
            hit_bottom = self.bird_y + self.bird_r > p["gap_y"] + p["gap_h"]
            if hit_x and (hit_top or hit_bottom):
                self.gameover = True
                break

    def draw(self):
        pyxel.cls(12)

        for p in self.pipes:
            pyxel.rect(p["x"], 0, p["w"], p["gap_y"], 3)
            pyxel.rect(p["x"], p["gap_y"] + p["gap_h"], p["w"], 120, 3)

        pyxel.circ(self.bird_x, self.bird_y, self.bird_r, 10)
        pyxel.text(4, 4, f"score:{self.score}", 7)
        pyxel.text(4, 112, "space:jump  r:reset", 1)

        if self.gameover:
            pyxel.rect(44, 48, 72, 22, 0)
            pyxel.text(64, 56, "game over", 8)
            pyxel.text(54, 64, "press space", 7)


App()

実行方法:

  1. ターミナルで python main.py
  2. スペースキーでジャンプ
  3. R キーでリセット

つまずきやすいポイントと対策

1. No module named pyxel が出る

  • pip install pyxel を実行
  • 複数Python環境の場合は python -m pip install pyxel を使う

2. 画面が開いてすぐ閉じる

  • App() の呼び出しが最下部にあるか確認
  • エラーがターミナルに出ていないか確認

3. 鳥が跳ばない

  • pyxel.btnp(pyxel.KEY_SPACE) があるか
  • self.bird_vy = -2.6 がifの中にあるか

4. スコアが増えすぎる

  • passed フラグが更新されているか確認
  • not p["passed"] の条件があるか確認

5. 難しすぎる

  • 重力 0.2 -> 0.16
  • ジャンプ -2.6 -> -2.9
  • 土管間隔 45 -> 55

改造アイデア(自分の作品にする)

  • 鳥を丸からドット絵に変える(pyxel.blt)
  • スタート画面を追加する
  • ベストスコア保存を追加する
  • 効果音とBGMを追加する
  • 難易度を時間で上げる

まとめ

PythonとPyxelでFlappy Bird風ゲームを作ると、Scratchで学んだ考え方が「コードとして動く感覚」につながります。最初は長く見えるコードでも、部品ごとに分ければ必ず理解できます。

まずは1本完成させてください。完成した時点で、もう立派なゲーム開発者です。

Python以外の道も広げたい方は、ロブロックス(Roblox)コース詳細やAI・データサイエンスコースもオススメです。教室全体は沖縄のマインクラフト・プログラミング教室 クロスウェーブから確認できます。

教室の場所やアクセスは教室へのアクセスにまとめています。プロフィールはすずきたかまさ(鈴木孝昌)プロフィール ― 沖縄マイクラ部・クロスウェーブ代表をご覧ください。


今すぐ、LINEから無料体験を予約できます。「見学だけでもいいですか?」という問い合わせも大歓迎です。まずは一度、教室の雰囲気を体験しに来てください。

今すぐLINEで無料体験を予約する

沖縄マイクラ部プログラミングスクール「クロスウェーブ」 代表:鈴木孝昌 (Google/Meta本社招待・政府PM・日本ソフトウェア大賞・マイクラカップTBS賞) 沖縄県宜野湾市伊佐2-20-15伊佐ビル2F

マイクラ部への参加方法

マイクラ部への参加を希望される方はLINEアカウントへ登録を頂くか、メールにて「webcrafts098@gmail.com」までご連絡をお願いします。

LINEで無料体験を申し込む

沖縄マイクラ部プログラミングスクール「クロスウェーブ」では、マインクラフトカップへの参加を目指す仲間を募集しています。子供たちへのプログラミング教育として「Python」「Scratch」「MakeCode」「JavaScript」「Unity」「Godot」などを指導しています。動画編集講座(Premiere Pro・DaVinci Resolve・CapCut)やHTML/CSSでのWeb制作講座も開催中です。

マイクラカップ参加希望の方へ

マイクラカップへの参加を希望される方は、人数把握のため以下のフォームからも申請をお願いします。申込時はマインクラフト教育版のライセンス費用が発生いたします。

→マイクラ部参加申込フォーム

開催地域

沖縄県宜野湾市

沖縄マイクラ部プログラミングスクール「クロスウェーブ」にて開催しています。

沖縄県うるま市

FMうるまにて開催しています。
FMうるま

沖縄マイクラ部について

沖縄マイクラ部は教室ではなく、親子の勉強会というスタイルで運営しています。保護者の方も一緒に参加していただけますので、お気軽にご参加ください。

お問い合わせ

お問い合わせはLINEオフィシャルアカウント、またはメール(webcrafts098@gmail.com)からお気軽にどうぞ。イベント情報は「開催イベント一覧」からご確認ください。

FAQ – よくあるご質問

宜野湾市外から通っている子はいますか?

はい、県内全域から多くのお子様が通われています。 宜野湾市内はもちろん、那覇市、浦添市、沖縄市、北谷町、そして南部は糸満市、北部は名護市から片道1時間近くかけて通ってくださるご家庭もございます。国道58号線沿いでアクセスが良く、専用駐車場も完備しているため、「遠くてもここなら通わせたい」と送迎してくださる保護者様に支えられています。

駐車場はありますか?

はい、教室のすぐ目の前に専用駐車場を完備しています。 送迎の際の駐車スペースに困ることはありません。国道からのアクセスもスムーズで、雨の日もお子様を安全に送り迎えいただけます。

他のプログラミング教室と何が違うのですか?

「現役エンジニアによる直接指導」と「全国大会での実績」が最大の違いです。 開発歴30年以上のプロが、単なる操作方法ではなく「論理的思考」を教えます。第7回マイクラカップでのTBS賞受賞など、沖縄県内でもトップクラスの実績を持つ「本物の学び」を体験いただけます。

パソコン未経験でも体験会に参加できますか?

もちろんです。全くの初心者からスタートした子がほとんどです。 お子様のペースに合わせた個別対応のカリキュラムです。大好きなマインクラフトを使うので、どの子も夢中になって取り組むうちに、自然とキーボード操作やプログラミングの基礎が身につきます。

沖縄県プログラミング教育完全ガイド

2026年最新版

沖縄県プログラミング教育完全ガイド

失敗しないスクール選びから、自治体の取り組み、将来のITスキルまで現役エンジニアが徹底解説!


完全ガイドを今すぐ読む

Instagramへの登録もお願いします

Insta

世界基準のIT教育と「マイクラ部」の日常をチェック!

Google・Meta本社招待の専門家による指導風景や、第7回マイクラカップTBS賞受賞の舞台裏、沖縄全41自治体のワールド制作の様子をInstagramで公開中。教室の活気あふれる雰囲気をご覧ください。

今すぐInstagramを見る

Blog プログラミング Python
Python Pyxel
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
お問い合わせ・無料体験申し込み
カテゴリー
新着記事
  • 子どもにプログラミングを学ばせるべきか。30年のエンジニア経験と現場から正直に答えます
    2026年5月10日
  • 沖縄でロブロックス(Roblox)プログラミング教室を選ぶ親へ|Luaで本物のクリエイターになる「本物の選び方」
    2026年5月9日
  • 沖縄マイクラ部がSNSとWebだけで満員御礼を実現している理由と、その舞台裏にあるマーケティング戦略
    2026年5月9日
アーカイブ
Instagramへの登録もお願いします
Insta

IT教育と「マイクラ部」をチェック!

Google・Meta本社招待の専門家による指導風景や、第7回マイクラカップTBS賞受賞の舞台裏、沖縄全41自治体のワールド制作の様子をInstagramで公開中。教室の活気あふれる雰囲気をご覧ください。

Instagramを見る

目次