Raspberry Pi Picoでゲームを楽しむ

ラズベリーパイ・ピコでのゲーム

初めて買ったダムフォンは、当時「電話」と呼ばれていたのを覚えています。スネークのような簡単なゲームをプレイすることができました。当時は最先端でしたね。

それ以前は、テトリスが遊べる携帯ゲーム機を別に持ち歩くか、ゲームボーイのようなダイナミックなゲーム機を持ち歩くしかなかったのです。

Raspberry Pi Picoは、90年代のハンドヘルド機の性能と比較すると、かなり強力なマイコンです。当然、その時代のゲームをプレイすることも可能です。

Raspberry Pi Picoの性能は?

80年代のゲーム機と比較すると、Raspberry Pi Picoは非常にパワフルです。 

1980年代のゲームのリソース要件に近いものをプログラムすれば、Raspberry Pi Picoはおそらく難なくこなせるでしょう。

90年代に入ってから、そのような明確な結論を出すことが少し難しくなってきました。

一方で、ゲームボーイや携帯電話にあるようなゲームができるデバイスと考えれば、おそらく満足できるはずです。

しかし、90年代後半のゲームはもっと負荷がかかるようになりました。例えば、PicoでQuake 3(1999年のゲーム)をプレイすることはないでしょう。

実際、Raspberry Pi Picoは『Doom』(1993年)をプレイできますが、Raspberry Pi Picoが持つ2MBのストレージにゲームを圧縮するのはかなり難しい作業だったため、コーディングした人は半年がかりで取り組んだそうです。

そのため、Picoは133MHzのプロセッサを2つ搭載していますが、RAMやストレージに制限があり、難しいのです。

ゲームボーイとの比較を見てみよう。

スペックRaspberry Pi Picoゲームボーイ(1989年)ゲームボーイカラー(1998年)
ディスプレイカラー液晶、電子インク、それはあなたの想像力次第です。4階調グレースケール10色、32色、56色
解像度お使いのディスプレイにもよりますが、Picoのリソースでは限界があります。160x144px160×144 px
CPU133MHzデュアルコア4MHz4MHz/8MHz
RAM264KB8KB32kb RAM, 16kb VRAM
ストレージ2MB ゲームパックカートリッジ:8MB ROM、128KB RAMゲームパックカートリッジ:8MB ROM、128KB RAM

なぜ、Zero/Pi 4ではなくPicoでゲームをするのか?

いい質問ですね。

ご存知の通り、Raspberry Pi Picoはマイコン、Raspberry Pi ZeroやPi 4はマイクロコンピュータです。

どちらもゲームができますが、Raspberry Pi Picoの方がより制限されます。

とはいえ、今(2022年)Raspberry Pi ZeroやPi 4sからエミュレータやゲームシステムを作ろうと思ったら、すでに持っていないと最大のボトルネックは在庫になってしまいますよね。

Pi Zeroを手に入れるのは非常に難しく、Pi 4を手に入れるのはかなり難易度が高いです。

一方、Picoは豊富です。また、マイコン・ピスが長い起動時間を必要とするのに対し、ほぼ即座に起動する。

また、Picoはより長持ちします。もし、何時間も動作し、持ち運び可能なモバイルセットアップが欲しいなら、Picoの方がずっと良いでしょう。

最後に、在庫以外ではピコも潤沢です。

Pi ZeroとPi 4を公平に見て、これらのマイコンではより良いゲームをプレイし、より良いエミュレーション結果を得られることは間違いないでしょう。次のセクションで説明するように、Picoは、ZeroやPi 4が軽々とこなすようなゲームをプレイするのに苦労しているのです。

Raspberry Pi Picoはどんなゲームができるのですか?

まずは、Raspberry Pi Picoでティンキングコミュニティがどんな遊び方をしているのかを見ていきます。

RP2040 Doomは、"Will it Doom? "の答えです。

やったー!Raspberry Pi PicoはDoomをプレイできるのです。

テキサス州オースティンのグラハム・サンダーソンという人が、Raspberry Pi PicoにDoomを移植することに成功したんだ。

彼のマジックフォーミュラ?

while (!convice_myself_its_probably_impossible()) {。
    do_some_more()を実行します。

彼は は、そのプロセスのドキュメントで説明されています。 Raspberry Pi Picoが持つハードウェアの仕様から、複数の制約に直面したこと。なにしろ、ゲームをするためのデバイスではないのですから。

それにもかかわらず、グラハムはDoomの移植をさらに難しくすることも決定した。彼はDoomの本物の体験を求めた。それは、320×200(カラー)の解像度、ステレオサウンド、OPL2の音楽、セーブとロード、ネットワークマルチプレイヤーなど、オリジナル名で利用できる機能を持つことを意味した。

Raspberry Pi Picoにこれだけのゲームを詰め込むということは、メモリに課題があるということです。RAMとストレージの両方が重要な問題でした。

まず、Raspberry Pi Picoのストレージは2MBしかありませんが、シェアウェア版の『Doom』はその2倍の容量があります。他の開発者は、スプラッシュスクリーンやテクスチャのダウンサンプリングなど、特定の機能をカットすることを決断するかもしれませんが、Grahamはそれを望まなかったのです。

RAMも問題で、Chocolate Doomのソースコードが約1MBのRAMを必要とするのに対し、Picoは約264KBしかありません。グラフィックのレンダリングがRAMの大きな容量を占めるため、メモリは厳しいのですが、RAMはゲームをスムーズに動かすためにも非常に重要なものです。この2つを両立させるために、Grahamは "脂肪吸引 "と呼ばれる方法をとる必要がありました。

にアクセスし、詳細をご覧ください。 文書化を見ている。 彼のYouTubeプレイリスト または 校正刷り.

ファミコンエミュレータ

Raspberry Pi Picoをファミコンエミュレータにすることに成功しました。

エミュレータゾーンフォーラムのスレッドでRaspberry Pi Picoはファミコンをエミュレートするパワーがあり、60フレーム/秒が可能で、APUとPPPを完璧にエミュレートできるとユーザーのropgar氏は言っています。

ロップガーはPS/2キーボードをコントローラーとして使用しますが、ファミコン純正のコントローラーも使用可能です。

サウンドも良好で、映像やゲームBGMに不具合はありません。

Picoには約1.5MBのフラッシュ容量が残っており、Caps Lockを押してゲームを切り替えて選択することができます。 

パックマン、アルカノイド、DK、DK Jr、バブルボブル、ギャラガなど、様々なゲームが搭載されています。

一つ難点があるとすれば、その方法についてのソースコードやチュートリアルが公開されていないことです。

Raspberry Pi Pico用ゲームボーイエミュレータ

ゲームボーイのケースを自作し、Raspberry Pi Picoでゲームボーイのエミュレーションをすることができます。

ここで厄介なのは、実は大きな成功を収めているものではないことです。つまり、作ったものがうまくいくかもしれませんが、いつもそうとは限らないのです。

では、どのような選択肢があるのか、見ていきましょう。

Rust Gameboy エミュレータ (OxidGB Pico Port)

画像:u/j_selby(Reddit)

スクリーンに映し出されたポケモンの映像を見て、私はすぐに興奮しました。

しかし、James Selbyは、実際にRustで書いたOxidGB Pico Portというゲームボーイエミュレータの課題と欠点について書いている。

セルビーは、「これは乗り物だ。イライラする乗り物だが、教育の観点からは十分に楽しめる乗り物だ」と語った。

問題点と勝因

ここからが本題です。 Rust Gameboyエミュレータは、"残念ながら現状では遊べない"。

セルビー氏によると、ゲームは10FPS程度しか出ないが、これはエミュレータのコードがボトルネックになっていることと、ディスプレイへのSPIインターフェースが遅いことが原因だという。

スピードアップすることは可能ですが、そのためには企画と実行に時間が必要です。

ゲームが遊べなかったので、入力は未設定です。 

OxidGB Picoポートのテスト

セルビーは、このようなことをするために、彼の OxidGB Pico PortのGithubレポです。

RP2040_GBエミュレータ

RP2040_GBエミュレータのハードウェアとセットアップ、写真:Mahyar Koshkouei。

もう一つ試せるエミュレータは RP2040_GBをベースにしています。 ピーナッツ-GB エミュレータを使用します。

RP2040_GBの性能はまずまずで、越後上越は「オーディオエミュレーションなしで70fps以上で動作する」と述べている。フレームスキップとインターレースを使用すれば、最大120fpsで動作させることができます" と述べています。

ご覧のように、RP2040_GBはポケモンをプレイしています。RP2040にROMを入れる手順は、このようになっています。

  • Pico SDK が必要です。
  • コンバート ドットジェイビー または ジー・エス・ビー・シー ROM を C のヘッダーファイルに xxd プログラム
  • 変換後のファイルに2行のコードを追加して修正します(Githubのreadmeにあります)。
  • ROMをコピーする サーカス フォルダに移動してコンパイルしてください。

このエミュレータにはいくつかの制限があります。

  • "このエミュレータは不正確であり、非常に未完成です...一部のゲームは正しく動作しないか、全く動作しないかもしれません。" 
  • ゲームボーイカラーのゲームでエラーが発生する
  • マイコンに最適化されていない。スペースとスピードに最適化されたAPUを使う」ことが有効であると越後井は提案する。

RP2040_GBのGithubリポジトリはこちらです。

Raspberry Pi Picoでメガゲームコンパイレーション

このプロジェクトの良いところは、シンプルで、Raspberry Pi Picoゲーム機をすぐに始められるような十分な手順があることです。

Roger Bühler氏のGithubには、部品、説明書、デモが掲載されています。

Mega Games Compilationには、以下のゲームが収録されています。

  1. タイニー・ギルバート
  2. タイニートリック
  3. タイニーインベーダー v3.1
  4. Tiny Pinball v2
  5. タイニーパックマン v1.2
  6. タイニーボンバー v1.3
  7. Tiny Bike v1.2
  8. タイニーバート 1.1
  9. タイニーアルカノイドv2
  10. Tiny Tris v2.1e
  11. タイニー・プラーク
  12. タイニーDDug
  13. タイニーミサイル v1.1
  14. Tiny Lander v1.0 ( by Roger Buehler )
  15. タイニーモルピオン
  16. タイニーパイプ

必要なパーツは以下の通りです。

  1. Raspberry Pi Pico
  2. SSD1309 128x64px SPI有機ELディスプレイ(2.42インチ表示、2:1比)
  3. ピエゾブザー
  4. 5ボタン
  5. ブレッドボード
  6. ジャンパケーブル
  7. オプション:10Ωの抵抗、10V以上の電解コンデンサー、220uF

また、以下のものが必要です。 Adafruit社製 SSD1306ライブラリ.

ここでは、ディスプレイの接続方法について説明します。

  • GND -> ディスプレイGND 
  • 3V3(OUT)→ディスプレイVCC 
  • GP16 → DC(データコマンド)表示 
  • GP17 → CS(チャンネルセレクト)表示 
  • GP18 -> ディスプレイ SCL (Clock) 
  • GP19→ディスプレイSDA(MOSI) 
  • GP20→ディスプレイRES(リセット)

そして、ボタンをつなげること。

  • GP15→ボタンUP 
  • GP14→ボタンDOWN 
  • GP13→ボタンLEFT 
  • GP12→ボタンRIGHT 
  • GP11 -> ボタン FIRE (全ボタンを GND に接続)

そして、ピエゾブザーを接続すること。

  • GP10→ブザー(+) 
  • GND -> ブザー(-)

ソフトウェアのインストール。

インストールするためには、Arduino IDEを使用する必要があります。

Raspberry Pi Picoで作るたまごっちのようなゲーム(ピコたまちび)

なぜピコタマチビというのですか?

このデバイスを開発したKevin McAleerによると、「tama」は「卵」、「chibi」はキャラクターの頭が大きいグラフィックを意味するそうです。 

90分のチュートリアルで、ケビンさんがすべてのステップを説明してくれるので、「たまちび」の作成は簡単です。

自分だけのゲーム機を作る

Raspberry Pi Picoのゲーム機を自作する場合、既製品のキットを購入する方法と、自作する方法の2つが一般的です。

既製キット vs DIY Raspberry Pi Pico ゲーミングハードウェア

ゼロから始めることも可能ですが、自分でシステムを構築する手間を省き、既成のパッケージを購入することもできます。

RP2040をベースにしたキットは、そのままゲームのプレイや開発に取りかかることができるものがいくつかあります。

ピモロニ・ピコシステム」を見てから、同じようなものを個別の部品で作るプロセスと比較してみましょう。

ピモロニ・ピコシステム

それでは、「ピモロニ・ピコシステム」を見てみましょう。

見ての通り、Raspberry Pi Pico Wよりもかなり大きいのですが、それもそのはず、4方向Dパッド、4ボタン、液晶画面、リチウムイオン電池、ピエゾスピーカー、USB-Cポートなど、さまざまな機能が追加されているからです。

PicosystemとPicoの両方がRP2040チップを使用しているため、同じプロセッサとRAMを搭載しています。これが全仕様です。

  • RP2040(デュアルアームCortex M0+、264kB SRAM)を搭載。
  • XiPをサポートする16MBのQSPIフラッシュ
  • 1.54型カラーSPI IPS液晶(240×240モード、120×120モード)
  • Dパッドとボタン
  • 525mAhリポバッテリー(6時間以上)
  • ピエゾブザー/スピーカー
  • オン/オフパワーボタン
  • RGB LED
  • USB-C経由でプログラム可能、充電可能(ケーブルは含まず)

グラフィックモード

PicoSystemは2つのグラフィックモードをサポートしています。

  • 240×240: 液晶ディスプレイのネイティブ解像度
  • 120×120:画素数倍モード(RAM節約)

ピコシステムでのゲームとはどのようなものですか?

ピコシステムでのゲームは簡単です。電源ボタンを押すだけで、スーパースクウェアブラザーズというゲームがプリインストールされています。

このゲームは、マリオによく似たシンプルなプラットフォーマーです。

ピモロニは他のゲームも収録しています。

これらのゲームをインストールするには、次の操作を行います。

  • ダウンロードしてください。
  • PicosystemをPCに接続します。
  • Xボタンを長押しして、電源ボタンを押す。
  • Picosystemは、RPI-RP2というドライブとしてマウントされているはずです
  • ダウンロードした.uf2ファイルをドライブにコピーします。自動的に読み込まれます。

なぜか、USB-C to USB-Cケーブルは動作しませんでしたが、USB-A to USB-Cケーブルはピコシステムで動作しました。もし、赤いLEDが点灯しない場合は、別のケーブルを試してみてください。

自分でゲームを作る

ピコシステムの最大の特徴は、自分でゲームを作るためのシステムを提供していることです。

PicoSystemには、ゼロからコーディングするのではなく、ゲーム制作を支援する特別なAPIが付属しています。

また、LCDスクリーン、ボタン、ジャンパー線、ブレッドボードなどの部品を個別に購入し、これらをすべて動作させるために必要なライブラリやパッケージを見つけ出すという面倒な作業も不要になります。

PicoSystemのAPIは、画面に物を描くための関数、音声を出力するための関数、ハードウェア関数、その他のユーティリティ関数を持っています。これを利用することで、ゲームを簡単に構築することができます。

Raspberry Pi Picoと同様に、PicoSystemはC++またはMicroPythonでコーディングすることができます。 

ピコシステムでゲームをプログラムするのは簡単ですか?

ピコシステムで自分のゲームを作るには、ある程度の時間と忍耐力が必要だと思います。

ドキュメントには基本的なことが書かれていますが、ゲームプログラミングの予備知識があった方が良いでしょう。

初心者の最大の課題は、サンプルプロジェクトのコーディング方法を教えてくれるリソースがあまりないことです。しかし、ここに参考となるリストがあります。

Picosystem MicroPythonガイド (readme内)

Picosystem MicroPythonの例

ピコシステムC++ Github

Picosystem C++ の例

Picosystem API チートシート、画像・フォント変換ツール (サイドバー上)

DIYシステムハードウェアの作成

YouMakeTechのガイド は、ケース、サウンドシステム、永久ハンダ付けを含む完全なゲーム機の作り方を解説しています。

ここでは、DIYでユニットを作る場合と、キット化されているピコシステムとの比較をしてみましょう。

YMTのゲームシステムピモロニ・ピコシステム
ケースオプションで3Dプリント(STL設計図代$4.47、フィラメント代、3Dプリンターレンタル・運用費込み)同梱物
Raspberry Pi Picoヘッダーが必要なため、Pico Hの$5。同梱物
有機ELディスプレイ$15(0.96インチディスプレイ)同梱物
ボタン無視できる同梱物
ブレッドボード$15 (ブレッドボードキット)同梱物
ジャンパー線ブレッドボードキットに含まれる同梱物
ネジ$1まで同梱物
ピエゾ無視できる 同梱物
総コスト$40.47 3Dプリント費用除く$70

それでは、DIYセットアップの階層別に、最終的なコストを見てみましょう。

セットアップ費用
バッテリーなし$40.47 3Dプリント費用除く
リポバッテリー$8
ピモロニ・ピコ・リポ$16.39 - $4 (ピモロニピコ交換用を使用しているので、Raspberry Pi Picoのコストを差し引くことができます)
電池式キットの場合合計$60.86 3Dプリント費用除く

ただ、注意点として、YouMakeTechでは、$20より安く組み立てられると書いてあります。しかし、私が調べたところ、Picosystemに匹敵するDIYセットアップのコストは、特にソフトウェアや利便性を考慮すると、それほど大きな差はないようです。

2つのボタンとスクリーンを持ち、ポンができるYouMakeTechのプロトタイプ

とはいえ、DIYルートは勉強になります。ひとつだけ苦労したのは、画面です。YouMakeTechのサンプルはI2C接続ですが、私が持っていた画面は4ピンのSPIインターフェースを使っていました。そのため、コードを変更するか、ハードウェアを改造しないと先に進めません。チャレンジ精神旺盛な方には、DIYが向いていると思います。

では、ピコシステムと比較して、DIYで行うことのメリットは何でしょうか?

長所/短所DIYピコシステム
ハードウェアの組み立て何でもDIYあなたは何もDIYしません
ソフトウェアここはあまり参考にならない。すべて自分でDIYし、各パーツの操作方法を学ぶのです。PicosystemのAPIを習得する必要がある
学習機会バラバラの部品をつなぎ合わせるので、より大きな学習機会が得られる小さくなる。既製品であり、ソフトウェアがここでの最大の学習機会になるだろう
拡張性自分で作ったのだから、液晶画面の変更、ボタンの増設、LEDの追加など、いろいろなことができる。システム全体をバラバラにしない限りは、それほどでもないでしょう。

ピコシステムVSDIYシステムでポンちゃん的ゲームを作る

ピコシステムを使ってゲームを開発するのと、ゼロから開発するのとで、どれくらいの労力がかかるのかを把握するのが、私の興味ある実験です。

この2つのシステムを比較するために、YouMakeTechのDIYシステムとPicosystemの両方で、1人用のポンのようなゲームを作ってみることにします。

このゲームの前提はシンプルです。一人用のポン菓子みたいなゲームで、ボールがパドルにバウンドするたびに10点入ります。画面下に落ちると「ゲームオーバー」になります。

両システムでのゲーム制作は、シンプルなワークフローで、すべてがThonnyにつながる。

MicroPythonをPicoにフラッシュして、Thonnyを使ってプログラムをコーディングすることになります。 

PicosystemでフラッシュするMicroPythonは、公式のMicroPython UF2ファイルとは異なるので、正しいものをフラッシュしてください。Picosystemは公式のMicroPythonリリースで動作します。ただ、意図したようには動作しません。

では、両者の根本的な違いについて見ていきましょう。ここではゲームロジックを除き、ハードとソフトのインタラクションやプログラミングパターンの違いのみを比較しています。

YouMakeTechのコードはこちらでご覧いただけます。

第一の違い:ハードウェアコード

DIYルートでは、物事が非常に「生々しい」のです。ここでは、ディスプレイ、GPIO、ボタンを初期化するコードを紹介しますが、Picosystemでは必要ありません。

from machine import Pin, PWM, I2C,
from ssd1306 import SSD1306_I2C
...
#ボタン
up = ピン(2, Pin.IN, Pin.PULL_UP)
ダウン = ピン(3、Pin.IN、Pin.PULL_UP)
左 = ピン(4、Pin.IN、Pin.PULL_UP)
右 = ピン(5、Pin.IN、Pin.PULL_UP)
button1 = ピン(6、Pin.IN、Pin.PULL_UP)
ボタン2 = ピン(7, ピン.IN, ピン.PULL_UP)

GP18に#のブザーを接続
ブザー = PWM(Pin(18))

# 有機 EL 画面が GP14(SDA)、GP15(SCL)に接続される
i2c = machine.I2C(1, sda = Pin(14), scl = Pin(15), freq = 400000)
oled = SSD1306_I2C(SCREEN_WIDTH, SCREEN_HEIGHT, i2c)

2つ目の違い。PicosystemのAPI

ピコシステムでコードを書くのであれば、そのシステムの中で書かなければならないでしょう。

YouMakeTechの例では、すべてのゲームロジックが while True のループがあります。これには、ボタン操作、衝突検出、画面への描画が含まれます。

ピコシステムでは、3つの機能の中で書くことが求められています。 init()、update() そして ドロー.

私のコードでは、ゲームのロジックはすべて update() コリジョンハンドリングやD-padとの連動を含む。

単純なPongゲームでは、私が使ったAPIの関数の中で、少し楽になったものがいくつかあります。

intersects(x1, y1, w1, h1, x2, y2, w2, h2)  は、おそらくここでの最大の助けになるだろう。2つの四角形の座標と大きさを渡して、交点があればtrueを返してくれる。この場合、2つの四角形はボールとバー(別名パドル)です。intersects()関数の欠点は、衝突がどちらの側で起こったかを検出しないことです。そのため、バーの側での衝突を処理するために追加のコードを書かなければなりませんでした。

PicosystemのAPIは、フレームバッファ、オーディオ出力、ブレンディングなどのメソッドをすでに持っていることから、より複雑なゲームを開発する際に真価を発揮することでしょう。 

Pimoroni Picosystem Pong-like gameのコード。

#bar_pos_x = 左からのピクセル、例:0 from left
バー_pos_x = 50
#bar_pos_y = 上からのピクセル、例:上からの100px
バー_pos_y = 100
バーの横幅 = 30

長さ_定数 = 5

ボールスピード = 1
ボール位置 x = 10
ボールの位置 = 10
ボール_dx = 2
ボール_dy = 2

スコア = 0
ゲームオーバー = False

def update(tick):
    
    グローバルバー_pos_x
    グローバルバー_pos_y
    グローバル ball_pos_x
    グローバルボールポジション
    グローバルなボール_dx
    グローバルボール速度
    グローバルなボールスピード(ball_speed
    グローバルなスコア
    グローバルゲームオーバー
    
    def reverse_ball_dx():
        グローバル ball_dx
        ball_dx = ball_dx * -1
        
    def reverse_ball_dy():
        グローバル ball_dy
        ball_dy = ball_dy * -1
    
    ball_pos_x += ball_dx
    ball_pos_y += ball_dy
    
    ボタン(LEFT)とbar_pos_x > 0の場合。
        bar_pos_x -= 1
    
    if button(RIGHT) and bar_pos_x < 120 - BAR_WIDTH :
        bar_pos_x += 1
        
    if ball_pos_x = 120 - LENGTH_CONSTANT :
        ball_pos_x = 120 - LENGTH_CONSTANT : ball_pos_x = 120 - LENGTH_CONSTANT.
        reverse_ball_dx()
        
    if ball_pos_y >= 120 - LENGTH_CONSTANT :
        game_over = True
        
    if ball_pos_y <= 0:
        ball_pos_y = 0
        リバースボールディ()
        
    if intersects(bar_pos_x,bar_pos_y,BAR_WIDTH,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
        
        reverse_ball_dy()
        スコア += 10
        
        1TP4ボールとバーの交差をメインに、交差していたら側面で交差しているかチェック。
        #if not on sides (i.e. on top) reverse Y direction.そうでなければ、X 方向を反転させる。
        if intersects(bar_pos_x,bar_pos_y,1,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT).LENGTH_CONSTANT.LENGTH_CONSTANT.LENGTH_CONSTANT.LENGTH_CONSTANT.LENGTH_CONSTANT:
            
            1TP4左側で交差する
            
            reverse_ball_dx()
            ball_pos_x -= 2
            
        if intersects(bar_pos_x + BAR_WIDTH,bar_pos_y,1,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
            
            1TP4右側で交差する
            
            reverse_ball_dx()
            ball_pos_x += 2

        
def draw(tick):
    
    if game_over:
        ペン(0,0,0)
        clear()
        ペン(15,15,15)
        テキスト("ゲームオーバー", 35, 60)
        
        
    さもなければ
        ペン(0, 0, 0)
        clear()
        ペン(15,15,15)
    
        #draw バー (パドル)
        frect(bar_pos_x,bar_pos_y,BAR_WIDTH,LENGTH_CONSTANT)
    
        #draw ボール
        frect(ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT)。
        テキスト(str(score), 80, 20)
    
start()

お勧めのゲームはありますか?

Raspberry Pi Pico用のゲームをお持ちの方は、下のコメント欄にURLをご記入ください。

コメントを残す