Raspberry Pi Picoでゲームを楽しむ
この記事では、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のリソースでは限界があります。 | 160x144px | 160×144 px |
CPU | 133MHzデュアルコア | 4MHz | 4MHz/8MHz |
RAM | 264KB | 8KB | 32kb 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)
スクリーンに映し出されたポケモンの映像を見て、私はすぐに興奮しました。
しかし、James Selbyは、実際にRustで書いたOxidGB Pico Portというゲームボーイエミュレータの課題と欠点について書いている。
セルビーは、「これは乗り物だ。イライラする乗り物だが、教育の観点からは十分に楽しめる乗り物だ」と語った。
問題点と勝因
ここからが本題です。 Rust Gameboyエミュレータは、"残念ながら現状では遊べない"。
セルビー氏によると、ゲームは10FPS程度しか出ないが、これはエミュレータのコードがボトルネックになっていることと、ディスプレイへのSPIインターフェースが遅いことが原因だという。
スピードアップすることは可能ですが、そのためには企画と実行に時間が必要です。
ゲームが遊べなかったので、入力は未設定です。
OxidGB Picoポートのテスト
セルビーは、このようなことをするために、彼の OxidGB Pico PortのGithubレポです。
RP2040_GBエミュレータ
もう一つ試せるエミュレータは RP2040_GBをベースにしています。 ピーナッツ-GB エミュレータを使用します。
RP2040_GBの性能はまずまずで、越後上越は「オーディオエミュレーションなしで70fps以上で動作する」と述べている。フレームスキップとインターレースを使用すれば、最大120fpsで動作させることができます" と述べています。
ご覧のように、RP2040_GBはポケモンをプレイしています。RP2040にROMを入れる手順は、このようになっています。
- Pico SDK が必要です。
- コンバート ドットジェイビー または ジー・エス・ビー・シー ROM を C のヘッダーファイルに xxd プログラム
- 変換後のファイルに2行のコードを追加して修正します(Githubのreadmeにあります)。
- ROMをコピーする サーカス フォルダに移動してコンパイルしてください。
このエミュレータにはいくつかの制限があります。
- "このエミュレータは不正確であり、非常に未完成です...一部のゲームは正しく動作しないか、全く動作しないかもしれません。"
- ゲームボーイカラーのゲームでエラーが発生する
- マイコンに最適化されていない。スペースとスピードに最適化されたAPUを使う」ことが有効であると越後井は提案する。
Raspberry Pi Picoでメガゲームコンパイレーション
このプロジェクトの良いところは、シンプルで、Raspberry Pi Picoゲーム機をすぐに始められるような十分な手順があることです。
Roger Bühler氏のGithubには、部品、説明書、デモが掲載されています。
Mega Games Compilationには、以下のゲームが収録されています。
- タイニー・ギルバート
- タイニートリック
- タイニーインベーダー v3.1
- Tiny Pinball v2
- タイニーパックマン v1.2
- タイニーボンバー v1.3
- Tiny Bike v1.2
- タイニーバート 1.1
- タイニーアルカノイドv2
- Tiny Tris v2.1e
- タイニー・プラーク
- タイニーDDug
- タイニーミサイル v1.1
- Tiny Lander v1.0 ( by Roger Buehler )
- タイニーモルピオン
- タイニーパイプ
必要なパーツは以下の通りです。
- Raspberry Pi Pico
- SSD1309 128x64px SPI有機ELディスプレイ(2.42インチ表示、2:1比)
- ピエゾブザー
- 5ボタン
- ブレッドボード
- ジャンパケーブル
- オプション: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節約)
ピコシステムでのゲームとはどのようなものですか?
ピコシステムでのゲームは簡単です。電源ボタンを押すだけで、スーパースクウェアブラザーズというゲームがプリインストールされています。
このゲームは、マリオによく似たシンプルなプラットフォーマーです。
ピモロニは他のゲームも収録しています。
- スーパースクウェアブラザーズ Scorpion Gamesによる - 弾むような四角形のプラットフォーマー。 (プリロードゲーム)
- ドット - ドット絵のパズルゲーム。2つ以上の連鎖を作り、最大得点を競いましょう。
- 岩とダイヤモンド - 岩を避け、ダイヤモンドをつかむ古典的なゲーム。
- ジオメトリー - レーザーでスペースボルダーを粉砕して、より小さなスペースボルダーを作ろう
- レインボーアセント - プロシージャルで生成された垂直ジャンプパズルのDark Soulsです。幸運を祈る。
- スーパーブリットカート by Daft_Freak - "Mode7 "ベースのレースゲーム。
これらのゲームをインストールするには、次の操作を行います。
- ダウンロードしてください。
- 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 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セットアップのコストは、特にソフトウェアや利便性を考慮すると、それほど大きな差はないようです。
とはいえ、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リリースで動作します。ただ、意図したようには動作しません。
では、両者の根本的な違いについて見ていきましょう。ここではゲームロジックを除き、ハードとソフトのインタラクションやプログラミングパターンの違いのみを比較しています。
第一の違い:ハードウェアコード
DIYルートでは、物事が非常に「生々しい」のです。ここでは、ディスプレイ、GPIO、ボタンを初期化するコードを紹介しますが、Picosystemでは必要ありません。
from machine import Pin, PWM, I2C,
from ssd1306 import SSD1306_I2C
…
# Buttons
up = Pin(2, Pin.IN, Pin.PULL_UP)
down = Pin(3, Pin.IN, Pin.PULL_UP)
left = Pin(4, Pin.IN, Pin.PULL_UP)
right = Pin(5, Pin.IN, Pin.PULL_UP)
button1 = Pin(6, Pin.IN, Pin.PULL_UP)
button2 = Pin(7, Pin.IN, Pin.PULL_UP)
# Buzzer connected to GP18
buzzer = PWM(Pin(18))
# OLED Screen connected to GP14 (SDA) and 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 = pixels from left, e.g. 0 from left
bar_pos_x = 50
#bar_pos_y = pixels from top, e.g. 100px from top
bar_pos_y = 100
BAR_WIDTH = 30
LENGTH_CONSTANT = 5
ball_speed = 1
ball_pos_x = 10
ball_pos_y = 10
ball_dx = 2
ball_dy = 2
score = 0
game_over = False
def update(tick):
global bar_pos_x
global bar_pos_y
global ball_pos_x
global ball_pos_y
global ball_dx
global ball_dy
global ball_speed
global score
global game_over
def reverse_ball_dx():
global ball_dx
ball_dx = ball_dx * -1
def reverse_ball_dy():
global ball_dy
ball_dy = ball_dy * -1
ball_pos_x += ball_dx
ball_pos_y += ball_dy
if button(LEFT) and 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 <= 0 :
ball_pos_x = 0
reverse_ball_dx()
if 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
reverse_ball_dy()
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()
score += 10
#main intersection of ball and bar. if they intersect, check if they are intersecting on the sides.
#if not on sides (i.e. on top) reverse Y direction. Or else, reverse X direction.
if intersects(bar_pos_x,bar_pos_y,1,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
#intersecting on left
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):
#intersecting on right
reverse_ball_dx()
ball_pos_x += 2
def draw(tick):
if game_over:
pen(0,0,0)
clear()
pen(15,15,15)
text("Game Over", 35, 60)
else:
pen(0, 0, 0)
clear()
pen(15,15,15)
#draw bar (paddle)
frect(bar_pos_x,bar_pos_y,BAR_WIDTH,LENGTH_CONSTANT)
#draw the ball
frect(ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT)
text(str(score), 80, 20)
start()
お勧めのゲームはありますか?
Raspberry Pi Pico用のゲームをお持ちの方は、下のコメント欄にURLをご記入ください。
パラゴン・プロジェクト・シリーズをご覧になりたい方は、こちらへどうぞ。 これ.
ピモロニ・システムには、性能を向上させるために小型FPGAのような外部アクセサリー/デバイスを使用できるコードがあるのですか?