{"id":2944,"date":"2022-09-17T11:44:21","date_gmt":"2022-09-17T11:44:21","guid":{"rendered":"https:\/\/picockpit.com\/raspberry-pi\/?p=2944"},"modified":"2023-08-23T10:43:28","modified_gmt":"2023-08-23T10:43:28","slug":"gaming-on-the-raspberry-pi-pico","status":"publish","type":"post","link":"https:\/\/picockpit.com\/raspberry-pi\/it\/gioco-sul-raspberry-pi-pico\/","title":{"rendered":"Giochi su Raspberry Pi Pico"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image-1024x576.jpg\" alt=\"giochi su raspberry pi pico\" class=\"wp-image-2946\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image-1024x576.jpg 1024w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image-300x169.jpg 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image-768x432.jpg 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image-1536x864.jpg 1536w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image-18x10.jpg 18w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg 1778w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In questo post voglio parlare del gioco su Raspberry Pi Pico.<\/p>\n\n\n\n<p>Ricordo il mio primo dumbphone, che all'epoca si chiamava \"telefono\". Poteva giocare a giochi semplici come Snake. Era all'avanguardia.<\/p>\n\n\n\n<p>Prima di allora, era necessario portare con s\u00e9 una console portatile separata che riproducesse Tetris o un sistema di gioco pi\u00f9 dinamico come il Gameboy.<\/p>\n\n\n\n<p>Il Raspberry Pi Pico \u00e8 un microcontrollore piuttosto potente se paragonato ai palmari degli anni Novanta. Naturalmente, ci offre la possibilit\u00e0 di giocare a giochi di quell'epoca.<\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Quanto \u00e8 potente il Raspberry Pi Pico<\/h2>\n\n\n\n<p>Rispetto a una console degli anni '80, il Raspberry Pi Pico \u00e8 estremamente potente.&nbsp;<\/p>\n\n\n\n<p>Se si programma un gioco simile ai requisiti di risorse di un gioco degli anni '80, il Raspberry Pi Pico probabilmente lo superer\u00e0 senza problemi.<\/p>\n\n\n\n<p>\u00c8 negli anni '90 che diventa un po' pi\u00f9 difficile affermare una conclusione cos\u00ec netta.<\/p>\n\n\n\n<p>Da un lato, se si pensa che si tratta di un dispositivo in grado di riprodurre giochi simili a quelli che si possono trovare su un Gameboy o su un telefono cellulare, probabilmente si rimarr\u00e0 soddisfatti.<\/p>\n\n\n\n<p>Tuttavia, alla fine degli anni '90 i giochi sono diventati molto pi\u00f9 impegnativi. Ad esempio, non potrete giocare a Quake 3 (un gioco del 1999) sul Pico.<\/p>\n\n\n\n<p>In realt\u00e0, il Raspberry Pi Pico \u00e8 in grado di riprodurre Doom (1993), ma \u00e8 stato un lavoro di sei mesi per la persona che lo ha codificato, perch\u00e9 \u00e8 stato un compito piuttosto difficile comprimere il gioco nei 2 MB di memoria del Raspberry Pi Pico.<\/p>\n\n\n\n<p>Quindi, pur disponendo di due processori a 133 MHz, il Pico ha una RAM e una memoria limitate, che lo rendono difficile da gestire.<\/p>\n\n\n\n<p>Vediamo come si comporta rispetto a un Gameboy:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Spec<\/td><td>Raspberry Pi Pico<\/td><td>Gameboy (1989)<\/td><td>Gameboy Color (1998)<\/td><\/tr><tr><td>Display<\/td><td>LCD a colori o e-ink, dipende dalla vostra immaginazione.<\/td><td>4 tonalit\u00e0 di grigio<\/td><td>10, 32, 56 colori<\/td><\/tr><tr><td>Risoluzione<\/td><td>Dipende dal display, ma \u00e8 limitato dalle risorse di Pico.<\/td><td>160x144px<\/td><td>160\u00d7144 px<\/td><\/tr><tr><td>CPU<\/td><td>133MHz dual core<\/td><td>4MHz<\/td><td>4MHz\/8MHz<\/td><\/tr><tr><td>RAM<\/td><td>264KB<\/td><td>8KB<\/td><td>32KB RAM, 16KB VRAM<\/td><\/tr><tr><td>Stoccaggio<\/td><td>2MB&nbsp;<\/td><td>Cartuccia Game Pak: 8MB ROM, 128KB RAM<\/td><td>Cartuccia Game Pak: 8MB ROM, 128KB RAM<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 giocare con il Pico e non con lo Zero\/Pi 4?<\/h2>\n\n\n\n<p>Bella domanda.<\/p>\n\n\n\n<p>Come sapete, Raspberry Pi Pico \u00e8 un microcontrollore, mentre Raspberry Pi Zero o Pi 4 sono microcomputer.<\/p>\n\n\n\n<p>Entrambi possono giocare, ma il Raspberry Pi Pico \u00e8 molto pi\u00f9 limitato.<\/p>\n\n\n\n<p>Detto questo, se voleste costruire un emulatore o un sistema di gioco a partire dal Raspberry Pi Zero o dal Pi 4s oggi (nel 2022), fareste meglio ad averne gi\u00e0 uno, altrimenti il vostro pi\u00f9 grande collo di bottiglia saranno le scorte.<\/p>\n\n\n\n<p>\u00c8 molto difficile ottenere un Pi Zero e piuttosto impegnativo ottenere un Pi 4.<\/p>\n\n\n\n<p>D'altra parte, il Pico \u00e8 abbondante. Inoltre si avvia quasi immediatamente, mentre il microcomputer Pis deve affrontare un lungo processo di avvio.<\/p>\n\n\n\n<p>Inoltre, il Pico dura molto di pi\u00f9. Se volete un'installazione mobile che funzioni per ore e sia portatile, farete molto meglio con il Pico.<\/p>\n\n\n\n<p>Infine, oltre alle scorte, anche il Pico \u00e8 abbondantemente disponibile.<\/p>\n\n\n\n<p>Per essere onesti con il Pi Zero e il Pi 4, con questi microcomputer \u00e8 possibile giocare a giochi migliori e ottenere risultati di emulazione migliori. Come si vedr\u00e0 nella prossima sezione, il Pico fatica a riprodurre i giochi che il Pi Zero o il Pi 4 sono in grado di riprodurre senza problemi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A quali giochi pu\u00f2 giocare il Raspberry Pi Pico?<\/h2>\n\n\n\n<p>Cominciamo a vedere cosa \u00e8 riuscito a fare la comunit\u00e0 di tinkering con il Raspberry Pi Pico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RP2040 Doom \u00e8 la risposta a \"sar\u00e0 Doom?\".<\/h3>\n\n\n\n<iframe loading=\"lazy\" width=\"813\" height=\"457\" src=\"https:\/\/www.youtube.com\/embed\/eDVazQVycP4\" title=\"RP2040 Doom: demo\/gioco di DOOM1 su Raspberry Pi Pico\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe>\n\n\n\n<p>S\u00ec! Il Raspberry Pi Pico pu\u00f2 giocare a Doom.<\/p>\n\n\n\n<p>Un ragazzo di nome Graham Sanderson di Austin, Texas, \u00e8 riuscito a portare Doom sul Raspberry Pi Pico.<\/p>\n\n\n\n<p>La sua formula magica?<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewbox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"while (!convice_myself_its_probably_impossible()) {    do_some_more();}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copia\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code data-no-translation=\"\"><span class=\"line\"><span style=\"color: #81A1C1\">while<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #88C0D0\">convice_myself_its_probably_impossible<\/span><span style=\"color: #D8DEE9FF\">()) <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">do_some_more<\/span><span style=\"color: #D8DEE9FF\">()<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Lui <a href=\"https:\/\/kilograham.github.io\/rp2040-doom\/\">ha spiegato nella sua documentazione del processo<\/a> che ha dovuto affrontare diverse restrizioni dovute alle specifiche hardware del Raspberry Pi Pico. Dopo tutto, non si tratta di un dispositivo destinato al gioco.<\/p>\n\n\n\n<p>Ciononostante, Graham decise di rendere il porting di Doom ancora pi\u00f9 difficile. Voleva l'esperienza autentica di Doom, il che significava avere una risoluzione di 320\u00d7200 (a colori), audio stereo, musica OPL2, salvataggi e caricamenti, multiplayer in rete e altre caratteristiche disponibili nel nome originale.<\/p>\n\n\n\n<p>L'inserimento di cos\u00ec tanti giochi nel Raspberry Pi Pico ha comportato problemi di memoria. Sia la RAM che lo spazio di archiviazione erano problemi fondamentali.<\/p>\n\n\n\n<p>In primo luogo, il Raspberry Pi Pico ha solo 2 MB di memoria, ma la versione shareware di Doom ha una dimensione doppia. Mentre altri sviluppatori potrebbero decidere di tagliare alcune caratteristiche come gli splash screen e il downsampling delle texture, Graham non ha voluto farlo.<\/p>\n\n\n\n<p>Anche la RAM era un altro problema: il codice sorgente di Chocolate Doom richiedeva circa 1 MB di RAM, mentre il Pico ne aveva solo 264 KB. La memoria \u00e8 limitata perch\u00e9 il rendering della grafica occupa un'enorme fetta di spazio nella RAM, ma la RAM \u00e8 anche molto importante per il buon funzionamento del gioco. Per gestire entrambi gli aspetti, Graham ha dovuto effettuare quella che ha chiamato \"liposuzione\".<\/p>\n\n\n\n<p>Per saperne di pi\u00f9, visitate il sito <a href=\"https:\/\/kilograham.github.io\/rp2040-doom\/\">la documentazione<\/a>, guardando <a href=\"https:\/\/www.youtube.com\/playlist?list=PL-_wCtHUfdDPi7i-4OIy5iQjQ3QSqq1Mh\">la sua playlist su YouTube<\/a> o <a href=\"https:\/\/github.com\/kilograham\/rp2040-doom\">revisione del codice<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Emulatore NES<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/1R9SiKq9iB0-wC9MtOn8X29eX4HiKXr8Meu9MS9SXpku1lL8GrI7TTmXvvLTU3Q_3SLcZS59K9L5saoAHXXyJyRsU5T8S0qSeiuTI5NQEg-shkcQvvVQ2tY9nEtFboRanYNyswCo5BMfDTN-JQQAwFzM6TAggyHkfOjosqKc92ICJtdw-R2jVIwjqw\" alt=\"\" style=\"width:711px;height:400px\" width=\"711\" height=\"400\"\/><\/figure>\n<\/div>\n\n\n<p>Il Raspberry Pi Pico \u00e8 stato trasformato con successo in un emulatore NES.<\/p>\n\n\n\n<p><a href=\"https:\/\/forums.emulator-zone.com\/index.php?threads\/using-a-rasp-pico-board-to-emulate-nes.26986\/\">In un thread del forum Emulator Zone<\/a>L'utente ropgar ha dichiarato che il Raspberry Pi Pico ha la potenza necessaria per emulare un NES e pu\u00f2 raggiungere i 60 fotogrammi al secondo e pu\u00f2 emulare perfettamente APU e PPP.<\/p>\n\n\n\n<p>Ropgar utilizza una tastiera PS\/2 come controller, ma \u00e8 possibile utilizzare anche il controller originale del NES.<\/p>\n\n\n\n<p>L'audio \u00e8 buono e non ci sono problemi con i video e la musica di sottofondo.<\/p>\n\n\n\n<p>Il Pico dispone di circa 1,5 MB di spazio flash per diversi giochi, che possono essere scelti premendo il tasto Caps Lock per passare da un gioco all'altro.&nbsp;<\/p>\n\n\n\n<p>I giochi che ropgar \u00e8 riuscito a caricare sulla sua demo sono Pacman, Arkanoids, DK, DK Jr, BubbleBobble, Galaga e molti altri.<\/p>\n\n\n\n<p>L'unico inconveniente \u00e8 che non esiste un codice sorgente pubblico o un tutorial su come farlo.<\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"895\" height=\"503\" src=\"https:\/\/www.youtube.com\/embed\/Kv9U1GouvYM\" title=\"Emulatore NES microcontrollato | 10 giochi in Flash | Raspberry Pi Pico RP2040 | VGA PS\/2 PWM Sound\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe>\n\n\n\n<h2 class=\"wp-block-heading\">Emulatore di Gameboy per Raspberry Pi Pico<\/h2>\n\n\n\n<p>\u00c8 possibile realizzare il proprio case per il Gameboy e poi utilizzare Raspberry Pi Pico per emulare il Gameboy.<\/p>\n\n\n\n<p>La parte difficile \u00e8 che non si tratta di una soluzione che ha avuto un grande successo. In altre parole, quello che costruite potrebbe funzionare, ma non sempre.<\/p>\n\n\n\n<p>Diamo un'occhiata alle opzioni disponibili.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Emulatore di Rust Gameboy (porta OxidGB Pico)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/YqgqoXlZzzwpFSfIREDXY6DSQk1izJhDctOpEW_Gp9PHFaOGpt-dp-R69kNfXM5KnNrYiVbPJ7lmFhWYmfzlaRpflY6n2nanDID8gDFPVybw_HioK14eqzPlXJCSo-Y_jd3lylN_Rinln6dDkHeJe7smlhNhrnlKiNP2Az1d5pIMWAJPRqHEqEBNQQ\" alt=\"\" style=\"width:563px;height:622px\" width=\"563\" height=\"622\"\/><figcaption class=\"wp-element-caption\">Immagine di u\/j_selby (Reddit)<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Quando ho visto l'immagine dei Pokemon sullo schermo, mi sono subito emozionato.<\/p>\n\n\n\n<p>Tuttavia, James Selby ha scritto delle sfide e dei difetti del suo emulatore di Gameboy, scritto in Rust, chiamato OxidGB Pico Port.<\/p>\n\n\n\n<p>\"\u00c8 stata una corsa, una corsa frustrante, ma che mi \u00e8 piaciuta molto dal punto di vista educativo\", ha detto Selby.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Problemi e vittorie<\/h4>\n\n\n\n<p>Ecco la sfida principale: <strong>L'emulatore Rust Gameboy \"non \u00e8 esattamente giocabile nel suo stato attuale, purtroppo\".<\/strong><\/p>\n\n\n\n<p>Selby ha detto che i giochi raggiungono solo circa 10 FPS perch\u00e9 il codice dell'emulatore \u00e8 un collo di bottiglia, oltre alla lentezza dell'interfaccia SPI con il display.<\/p>\n\n\n\n<p>\u00c8 possibile accelerare le cose, ma ci\u00f2 richiede tempo per la pianificazione e l'implementazione.<\/p>\n\n\n\n<p>L'input non \u00e8 stato configurato, poich\u00e9 i giochi non erano giocabili.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Test della porta Pico di OxidGB<\/h4>\n\n\n\n<p>Se volete provare, potete seguire le istruzioni di Selby sul suo sito web <a href=\"https:\/\/github.com\/j-selby\/oxidgb-pico\">Repository Github per la porta Pico di OxidGB.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Emulatore RP2040_GB<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/0bdDowSlnfTQhTg-3nLzDxFTEEVtOYep7mVxwdu8oNXkYXop897px8u7TI-bh2UXy-rwj0sq3kL0_D-lLA3BLazxbALrBdj_OxwAaEMg24RzadMnR9sOC_L1lo4nYDlbjzcyr6FX49J_ngR0ebA0D2m-1E3mU1ft1NYCLCUV62W64eS-JW8L3XfnXQ\" alt=\"\" style=\"width:687px;height:298px\" width=\"687\" height=\"298\"\/><figcaption class=\"wp-element-caption\">Hardware e configurazione dell'emulatore RP2040_GB, foto di Mahyar Koshkouei.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Un altro emulatore che si pu\u00f2 provare \u00e8 il <a href=\"https:\/\/github.com\/deltabeard\/RP2040-GB\">RP2040_GB<\/a>, che si basa sulla <a href=\"https:\/\/github.com\/deltabeard\/Peanut-GB\">Arachide-GB<\/a> emulatore.<\/p>\n\n\n\n<p>Le prestazioni dell'RP2040_GB sono discrete e Koshkouei afferma che la sua configurazione \"funziona a pi\u00f9 di 70 fps senza emulazione audio. Con il frame skip e l'interlacciamento, pu\u00f2 raggiungere i 120 fps\".<\/p>\n\n\n\n<p>Come si pu\u00f2 vedere, l'RP2040_GB sta giocando a Pokemon. I passaggi per inserire una ROM nell'RP2040 sono i seguenti:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00c8 necessario disporre dell'SDK Pico<\/li>\n\n\n\n<li>Convertire <strong>.gb<\/strong> o <strong>.gbc<\/strong> ROM a un file di intestazione C utilizzando l'opzione <strong>xxd <\/strong>programma<\/li>\n\n\n\n<li>Modificare il file convertito aggiungendo due righe di codice (nel readme di Github)<\/li>\n\n\n\n<li>Copiare la ROM nel <strong>src <\/strong>e compilare.<\/li>\n<\/ul>\n\n\n\n<p>Questo emulatore presenta alcune limitazioni:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\"Questo emulatore \u00e8 impreciso ed \u00e8 un lavoro in corso... alcuni giochi potrebbero funzionare in modo non corretto o non funzionare affatto\".&nbsp;<\/li>\n\n\n\n<li>I giochi per Gameboy Color generano un errore<\/li>\n\n\n\n<li>Non ottimizzato per il microcontrollore: Koshkouei ha suggerito che \"l'utilizzo di un'APU ottimizzata per spazio e velocit\u00e0\" pu\u00f2 essere utile.<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/github.com\/deltabeard\/RP2040-GB\">Vedere il repo Github di RP2040_GB qui.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compilazione di mega giochi con Raspberry Pi Pico<\/h2>\n\n\n\n<iframe loading=\"lazy\" width=\"893\" height=\"502\" src=\"https:\/\/www.youtube.com\/embed\/hXO0toLjDh0\" title=\"Compilazione di giochi MEGA Adafruit RPI Pico\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe>\n\n\n\n<p>La parte migliore di questo progetto \u00e8 che \u00e8 semplice e le istruzioni sono adeguate per iniziare rapidamente a creare una console di gioco Raspberry Pi Pico.<\/p>\n\n\n\n<p>Roger B\u00fchler ha incluso parti, istruzioni e dimostrazioni nel suo Github.<\/p>\n\n\n\n<p>La Mega Games Compilation contiene i seguenti giochi:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Tiny Gilbert<\/li>\n\n\n\n<li>Piccolo trucco<\/li>\n\n\n\n<li>Tiny Invaders v3.1<\/li>\n\n\n\n<li>Tiny Pinball v2<\/li>\n\n\n\n<li>Tiny Pacman v1.2<\/li>\n\n\n\n<li>Tiny Bomber v1.3<\/li>\n\n\n\n<li>Tiny Bike v1.2<\/li>\n\n\n\n<li>Tiny Bert 1.1<\/li>\n\n\n\n<li>Tiny Arkanoid v2<\/li>\n\n\n\n<li>Tris piccolo v2.1e<\/li>\n\n\n\n<li>Targa minuscola<\/li>\n\n\n\n<li>Piccolo DDug<\/li>\n\n\n\n<li>Tiny Missile v1.1<\/li>\n\n\n\n<li>Tiny Lander v1.0 ( da Roger Buehler )<\/li>\n\n\n\n<li>Piccolo Morpione<\/li>\n\n\n\n<li>Tubo piccolo<\/li>\n<\/ol>\n\n\n\n<p>Le parti necessarie sono le seguenti:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Raspberry Pi Pico<\/li>\n\n\n\n<li>Display OLED SSD1309 128x64px SPI (display da 2,42\" con rapporto 2:1)<\/li>\n\n\n\n<li>Cicalino piezoelettrico<\/li>\n\n\n\n<li>Cinque pulsanti<\/li>\n\n\n\n<li>Lavagna per pane<\/li>\n\n\n\n<li>Cavi di emergenza<\/li>\n\n\n\n<li>Opzionale: resistenze da 10 ohm, condensatore elettrolitico da almeno 10 V e 220uF<\/li>\n<\/ol>\n\n\n\n<p>\u00c8 inoltre necessario <a href=\"https:\/\/github.com\/adafruit\/Adafruit_SSD1306\">Libreria SSD1306 di Adafruit<\/a>.<\/p>\n\n\n\n<p><strong>Ecco come collegare il display:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GND -&gt; GND del display&nbsp;<\/li>\n\n\n\n<li>3V3(OUT) -&gt; Display VCC&nbsp;<\/li>\n\n\n\n<li>GP16 -&gt; Visualizzazione DC (comando dati)&nbsp;<\/li>\n\n\n\n<li>GP17 -&gt; Visualizzazione CS (Selezione canale)&nbsp;<\/li>\n\n\n\n<li>GP18 -&gt; Display SCL (orologio)&nbsp;<\/li>\n\n\n\n<li>GP19 -&gt; Display SDA (MOSI)&nbsp;<\/li>\n\n\n\n<li>GP20 -&gt; Display RES (Reset)<\/li>\n<\/ul>\n\n\n\n<p><strong>E per collegare i pulsanti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GP15 -&gt; pulsante SU&nbsp;<\/li>\n\n\n\n<li>GP14 -&gt; pulsante DOWN&nbsp;<\/li>\n\n\n\n<li>GP13 -&gt; pulsante SINISTRA&nbsp;<\/li>\n\n\n\n<li>GP12 -&gt; pulsante DESTRA&nbsp;<\/li>\n\n\n\n<li>GP11 -&gt; pulsante FIRE (tutti i pulsanti su GND)<\/li>\n<\/ul>\n\n\n\n<p><strong>E per collegare il cicalino piezoelettrico:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GP10 -&gt; Cicalino(+)&nbsp;<\/li>\n\n\n\n<li>GND -&gt; Buzzer (-)<\/li>\n<\/ul>\n\n\n\n<p><strong>Installazione del software:<\/strong><\/p>\n\n\n\n<p>Per installare il software, \u00e8 necessario utilizzare l'IDE Arduino.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gioco simile al Tamagotchi su Raspberry Pi Pico (Pico-Tamachibi)<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/vq6-LhQ68o08Xgayc7U4roNHKcOCGtwxk8YL8nOnI33WP_yJlFjnxd2KDdtLgJn92vx2RRhSUb4Rn4OsP8vZNtQsmUjaUCUPc7JXmWvipgWewiXzSISGQ1qJWK8VtvT3lp1iypd3npcQzC4mL3NLTYhCAkGxXgpJoNYzBMsKEST4dSc4FeRU2Jqy3Q\" alt=\"\" style=\"width:727px;height:406px\" width=\"727\" height=\"406\"\/><\/figure>\n<\/div>\n\n\n<p>Perch\u00e9 si chiama Pico-Tamachibi?<\/p>\n\n\n\n<p>Secondo Kevin McAleer, il creatore di questo dispositivo, \"tama\" significa \"uovo\" e \"chibi\" si riferisce alla grafica in cui il personaggio ha una grande testa.&nbsp;<\/p>\n\n\n\n<p>Creare il Tamachibi \u00e8 facile perch\u00e9 Kevin illustra ogni fase del processo nel suo tutorial di 90 minuti.<\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"1280\" height=\"720\" src=\"https:\/\/www.youtube.com\/embed\/btG3Pd8ZlBw\" title=\"Codice per animali domestici virtuali in MicroPython su Raspberry Pi Pico - Pico-Tamachibi\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe>\n\n\n\n<h2 class=\"wp-block-heading\">Costruite la vostra macchina da gioco<\/h2>\n\n\n\n<p>Se volete creare la vostra macchina da gioco Raspberry Pi Pico, ci sono due modi generali per farlo: acquistare un kit gi\u00e0 pronto o costruirlo da soli.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kit pronti per l'uso e hardware di gioco Raspberry Pi Pico fai da te<\/h2>\n\n\n\n<p>Sebbene sia possibile partire da zero, \u00e8 preferibile evitare la fatica di costruire il proprio sistema e acquistare un pacchetto gi\u00e0 pronto.<\/p>\n\n\n\n<p>Esistono alcuni kit basati sull'RP2040 che consentono di passare direttamente alla riproduzione o allo sviluppo dei propri giochi.<\/p>\n\n\n\n<p>Vediamo il Picosistema Pimoroni e poi confrontiamolo con il processo di costruzione di qualcosa di simile utilizzando i singoli pezzi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pimoroni Picosystem<\/h2>\n\n\n\n<p>Diamo un'occhiata al Picosistema Pimoroni.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"451\" src=\"https:\/\/lh3.googleusercontent.com\/6X2vym5Y-3rckNiwIQlPQlGAso1RbIGb-n9hETg6DPjKQGijYEqkk8p_WKD0sSOm9AeMhyLWM9hfKjBZgGx0_YQRvYEWqaEyK0sRjr7urrC4KOcZdl8JXVkIHYJI0DZ8ysG6_MC7BiZRaP_5AJFq7i19PzHAgL0nba9lRg06jnhuWXp2adZgN6SCIQ\"><\/p>\n\n\n\n<p>Come si pu\u00f2 vedere, \u00e8 molto pi\u00f9 grande del Raspberry Pi Pico W, ma questo anche perch\u00e9 ha un D-pad a quattro vie, quattro pulsanti, uno schermo LCD, una batteria agli ioni di litio, un altoparlante piezoelettrico e una porta USB-C, tra le altre aggiunte.<\/p>\n\n\n\n<p>Ha lo stesso processore e la stessa RAM, poich\u00e9 sia il Picosystem che il Pico utilizzano il chip RP2040. Ecco le specifiche complete:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Alimentato da RP2040 (Dual Arm Cortex M0+ con 264kB di SRAM)<\/li>\n\n\n\n<li>16 MB di flash QSPI con supporto XiP<\/li>\n\n\n\n<li>LCD SPI IPS da 1,54\u2033 a colori (modalit\u00e0 240\u00d7240 e 120\u00d7120)<\/li>\n\n\n\n<li>D-pad e pulsanti<\/li>\n\n\n\n<li>Batteria LiPo da 525 mAh (6 ore e pi\u00f9)<\/li>\n\n\n\n<li>Cicalino piezoelettrico\/altoparlante<\/li>\n\n\n\n<li>Pulsante di accensione\/spegnimento<\/li>\n\n\n\n<li>LED RGB<\/li>\n\n\n\n<li>Programmabile e ricaricabile tramite USB-C (cavo non incluso)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Modalit\u00e0 grafiche<\/strong><\/h3>\n\n\n\n<p>PicoSystem supporta due modalit\u00e0 grafiche.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>240\u00d7240: la risoluzione nativa dell'LCD<\/li>\n\n\n\n<li>120\u00d7120: modalit\u00e0 pixel raddoppiati (risparmia RAM)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Come si presenta il gioco sul Picosystem?<\/h3>\n\n\n\n<p>Giocare con il Picosystem \u00e8 facile. Basta premere il pulsante di accensione per accedere al gioco precaricato Super Square Bros.<\/p>\n\n\n\n<p>Il gioco \u00e8 un semplice platform simile a Mario.<\/p>\n\n\n\n<p>Pimoroni ha incluso anche altri giochi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/scorpion-games-uk.itch.io\/super-square-bros\">Super Square Bros.<\/a> di Scorpion Games - Un platform a quadrilateri rimbalzante <strong>(gioco precaricato)<\/strong><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/Gadgetoid\/32blit-dots\/releases\">Puntini<\/a> - Rompicapo con i puntini. Create catene di due o pi\u00f9 punti e gareggiate per ottenere il punteggio pi\u00f9 alto.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/32blit\/rocks-and-diamonds\/releases\">Rocce e diamanti<\/a> - Classico gioco di schivare le rocce e afferrare i diamanti.<\/li>\n\n\n\n<li><a href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0174\/1800\/files\/blit_v0.2.0_32blit-32blit-sdk-geometry.uf2?v=1633970589\">Geometria<\/a> - Distruggi i massi spaziali con i laser per creare massi spaziali pi\u00f9 piccoli!<\/li>\n\n\n\n<li><a href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0174\/1800\/files\/blit_v0.2.0_32blit-32blit-sdk-scrolly-tile.uf2?v=1633970589\">Salita arcobaleno<\/a> - Il Dark Souls dei puzzle a salto verticale generati proceduralmente. Buona fortuna.<\/li>\n\n\n\n<li><a href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0174\/1800\/files\/blit_v0.2.0_Daft-Freak-super-blit-kart.uf2?v=1634037972\">Super Blit Kart<\/a> di Daft_Freak - Un gioco di corse basato su \"Mode7\".<\/li>\n<\/ul>\n\n\n\n<p>Per installare questi giochi, procedere come segue:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scaricare il file.<\/li>\n\n\n\n<li>Collegare il Picosystem al PC<\/li>\n\n\n\n<li>Tenere premuto il tasto X e premere il tasto di accensione.<\/li>\n\n\n\n<li>Il Picosystem deve essere montato come unit\u00e0 chiamata RPI-RP2.<\/li>\n\n\n\n<li>Copiare il file .uf2 scaricato sull'unit\u00e0. Verr\u00e0 caricato automaticamente.<\/li>\n<\/ul>\n\n\n\n<p>Per qualche motivo, il mio cavo da USB-C a USB-C non ha funzionato, ma il cavo da USB-A a USB-C ha funzionato con Picosystem. Se il LED rosso non si accende, provare con un altro cavo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Programmare i propri giochi<\/h3>\n\n\n\n<p>La parte migliore di Picosystem \u00e8 che fornisce un sistema per creare i propri giochi.<\/p>\n\n\n\n<p>Piuttosto che codificare da zero, PicoSystem viene fornito con una speciale API che pu\u00f2 aiutarvi a creare i vostri giochi.<\/p>\n\n\n\n<p>Inoltre, elimina gran parte del noioso lavoro necessario per acquistare i singoli componenti, come lo schermo LCD, i pulsanti, i fili dei ponticelli, la breadboard e poi per capire le librerie e i pacchetti necessari per far funzionare tutti questi componenti.<\/p>\n\n\n\n<p>L'API di PicoSystem contiene funzioni per disegnare sullo schermo, per emettere audio, funzioni hardware e altre funzioni di utilit\u00e0. In questo modo \u00e8 pi\u00f9 facile costruire il proprio gioco.<\/p>\n\n\n\n<p>Proprio come il Raspberry Pi Pico, il PicoSystem pu\u00f2 essere codificato in C++ o MicroPython.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c8 facile programmare un gioco con il Picosystem?<\/h3>\n\n\n\n<p>Vi consiglio di avere un po' di tempo e di pazienza per costruire il vostro gioco con il Picosystem.<\/p>\n\n\n\n<p>La documentazione offre le nozioni di base per iniziare, ma sarebbe meglio se si avesse una conoscenza preliminare della programmazione dei giochi.<\/p>\n\n\n\n<p>La sfida pi\u00f9 grande per i principianti \u00e8 che non ci sono molte risorse che insegnano a codificare progetti di esempio. Tuttavia, ecco un elenco di riferimenti che vi aiuteranno:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/pimoroni\/picosystem\/tree\/main\/micropython\">Guida Picosystem MicroPython (in readme)<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/pimoroni\/picosystem\/tree\/main\/micropython\/examples\/picosystem\">Esempi di Picosystem MicroPython<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/pimoroni\/picosystem\">Picosystem C++ Github<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/pimoroni\/picosystem\/tree\/main\/examples\">Esempi di Picosystem C++<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/wiki.picosystem.com\/en\/c++\/cheatsheet\">Picosystem API cheatsheet, oltre al convertitore di immagini e font<\/a> (sulla barra laterale)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sistema fai da te: Creare l'hardware<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.youmaketech.com\/raspberry-pi-pico-retrogaming-system\/\">La guida di YouMakeTech<\/a> Il libro illustra al lettore come realizzare una console di gioco completa di custodia, sistema audio e saldature permanenti.<\/p>\n\n\n\n<p>Per il nostro confronto, vediamo quanto costerebbe costruire un'unit\u00e0 fai-da-te rispetto al Picosystem, che \u00e8 un kit completo.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><\/td><td>Il sistema di gioco di YMT<\/td><td>Pimoroni Picosystem<\/td><\/tr><tr><td>Caso<\/td><td>Opzionale, stampato in 3D ($4,47 per i progetti STL, pi\u00f9 filamento e costi di noleggio\/operazione della stampante 3D)<\/td><td>Incluso<\/td><\/tr><tr><td>Raspberry Pi Pico<\/td><td>$5 per Pico H perch\u00e9 sono necessari i connettori.<\/td><td>Incluso<\/td><\/tr><tr><td><a href=\"https:\/\/buyzero.de\/products\/waveshare-9092-0-96inch-oled-gerade-vertikale-stiftleiste?_pos=2&amp;_sid=c5e379f04&amp;_ss=r\">Display OLED<\/a><\/td><td>$15 (display da 0,96 pollici)<\/td><td>Incluso<\/td><\/tr><tr><td>Pulsanti<\/td><td>Trascurabile<\/td><td>Incluso<\/td><\/tr><tr><td><a href=\"https:\/\/buyzero.de\/products\/breadboard-kit?variant=39481121374388\">Lavagna per pane<\/a><\/td><td>$15 (kit breadboard)<\/td><td>Incluso<\/td><\/tr><tr><td>Fili di ponticello<\/td><td>Incluso nel kit di breadboard<\/td><td>Incluso<\/td><\/tr><tr><td>Viti<\/td><td>Fino a $1<\/td><td>Incluso<\/td><\/tr><tr><td>Piezo<\/td><td>Trascurabile&nbsp;<\/td><td>Incluso<\/td><\/tr><tr><td><strong>Costo totale<\/strong><\/td><td>$40,47, esclusi i costi di stampa 3D<\/td><td>$70<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Vediamo quindi i costi finali per i diversi livelli di configurazione fai-da-te:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Impostazione<\/strong><\/td><td><strong>Costi<\/strong><\/td><\/tr><tr><td>Nessuna batteria<\/td><td>$40,47 esclusi i costi di stampa 3D<\/td><\/tr><tr><td>Batteria Lipo<\/td><td>$8<\/td><\/tr><tr><td>Pimoroni Pico Lipo<\/td><td>$16,39 - $4 (dato che stiamo usando il sostituto del Pimoroni Pico, possiamo dedurre il costo del Raspberry Pi Pico)<\/td><\/tr><tr><td>Totale per un kit a batteria<\/td><td>$60,86 escluse le spese di stampa 3D<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Solo un'avvertenza: YouMakeTech dice che \u00e8 possibile costruirlo per meno di $20. Dalle mie ricerche, tuttavia, i costi per una configurazione fai-da-te che corrisponda al Picosystem non differiscono molto, soprattutto se si considerano il software e la convenienza.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/FiLN-p2QdPG59_fRj0q-0bH2W37KsnaaHC5IwHf2sFCsAe7iVU_zKNecqpcVLmjOeVC_ht3T5L_ONcPuC3eCODvHvYxar5mS-tnmf_wiJAi47JZfG0NV00NLMYN_U0k7k-89gxbynldhvCNXx-QSzlhDyD3qkOCBqTlTbXRNf0270w1j0LqTuXPE8A\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Il prototipo di YouMakeTech che ha due pulsanti, uno schermo e pu\u00f2 giocare a Pong<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Detto questo, il fai-da-te \u00e8 una grande opportunit\u00e0 di apprendimento. Un aspetto che mi ha messo in difficolt\u00e0 \u00e8 stato lo schermo. Mentre l'esempio di YouMakeTech utilizza una connessione I2C, lo schermo che avevo io utilizzava un'interfaccia SPI a 4 pin. Questo richiede un cambiamento nella codifica o una modifica all'hardware per poter procedere. Se vi piacciono le sfide, la strada del fai-da-te fa per voi.<\/p>\n\n\n\n<p>Quali sono i vantaggi del fai-da-te rispetto al Picosystem?<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Pro e contro<\/td><td>FAI DA TE<\/td><td>Picosistema<\/td><\/tr><tr><td>Montaggio dell'hardware<\/td><td>Fai tutto da te<\/td><td>Non si fa nulla da soli<\/td><\/tr><tr><td>Software<\/td><td>Non c'\u00e8 molto aiuto qui. \u00c8 necessario autocostruirsi tutto e imparare a far funzionare ogni componente.<\/td><td>\u00c8 necessario imparare l'API di Picosystem<\/td><\/tr><tr><td>Opportunit\u00e0 di apprendimento<\/td><td>Opportunit\u00e0 di apprendimento pi\u00f9 ampia perch\u00e9 si mettono insieme parti disparate<\/td><td>Pi\u00f9 piccolo. \u00c8 gi\u00e0 pronto e il software sar\u00e0 la pi\u00f9 grande opportunit\u00e0 di apprendimento.<\/td><\/tr><tr><td>Estensibilit\u00e0<\/td><td>Dal momento che l'avete costruito voi, potete modificare lo schermo LCD, aggiungere altri pulsanti, aggiungere LED, ecc.<\/td><td>Non molto, a meno che non si voglia smontare un sistema completo.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creazione del gioco simile a Pong sul sistema Picosystem contro il fai-da-te<\/h2>\n\n\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"451\" src=\"https:\/\/lh3.googleusercontent.com\/RJq_cXB7E4foNOgagGJn3Dzcdlq3HwokXK7CgGKMkdkiGG7RNAdWhN0dKkejbY0GQiYaN9GGwxEQAv7Vv_SO9npoBi7pMIf3VSiKf_a_nfhBFkbJBzvFbWFcuEmMlf1XuvQHWvfm8YGU--7r4Vj1sI-X9ffH_z0OVY-ZhjuQLyhmCvHs0jHTlrg8Kg\"><\/p>\n\n\n\n<p>Un mio curioso esperimento consiste nel capire quanto impegno richieda sviluppare un gioco utilizzando il Picosystem rispetto a farlo da zero.<\/p>\n\n\n\n<p>Per confrontare i due sistemi, costruir\u00f2 un gioco simile a Pong per un solo giocatore sia sul sistema fai-da-te di YouMakeTech che su Picosystem.<\/p>\n\n\n\n<p>La premessa del gioco \u00e8 semplice. \u00c8 un gioco simile a Pong per un solo giocatore che assegna 10 punti ogni volta che la palla rimbalza sulla paletta. Se la palla cade sul fondo dello schermo, si riceve il messaggio \"Game Over\".<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"blob:https:\/\/picockpit.com\/fea315db-91fe-48eb-99ef-83129db07775\"><\/video><\/figure>\n\n\n\n<p>La creazione del gioco su entrambi i sistemi segue un semplice flusso di lavoro che porta a Thonny.<\/p>\n\n\n\n<p>\u00c8 necessario flashare MicroPython sul Pico e poi utilizzare Thonny per codificare il programma.&nbsp;<\/p>\n\n\n\n<p>Il MicroPython da flashare sul Picosystem \u00e8 diverso dal file ufficiale MicroPython UF2, quindi assicuratevi di aver flashato quello giusto perch\u00e9 il Picosystem funzioner\u00e0 con la versione ufficiale di MicroPython. Solo che non funzioner\u00e0 come previsto.<\/p>\n\n\n\n<p>Esaminiamo ora alcune differenze fondamentali tra i due. Escludo la logica di gioco e mi limito a confrontare le differenze nell'interazione hardware-software e nei modelli di programmazione.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/YouMakeTech\/PicoRetroGamingSystem\/blob\/main\/PicoPong.py\">Potete vedere il codice di YouMakeTech qui.<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prima differenza: codice hardware<\/h3>\n\n\n\n<p>Le cose sono molto \"grezze\" con la strada dell'autocostruzione. Ecco un po' di codice per inizializzare il display, il GPIO e i pulsanti che non \u00e8 necessario fare con il Picosystem:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewbox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"from machine import Pin, PWM, I2C,from ssd1306 import SSD1306_I2C\u2026# Buttonsup = 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 GP18buzzer = 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)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copia\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code data-no-translation=\"\"><span class=\"line\"><span style=\"color: #D8DEE9\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">machine<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">PWM<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">I2C<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">ssd1306<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">import<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">SSD1306_I2C<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u2026<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"># <\/span><span style=\"color: #8FBCBB\">Buttons<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">up<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(2<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">IN<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">PULL_UP<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">down<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">IN<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">PULL_UP<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">left<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(4<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">IN<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">PULL_UP<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">right<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(5<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">IN<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">PULL_UP<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">button1<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(6<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">IN<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">PULL_UP<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">button2<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(7<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">IN<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">PULL_UP<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"># <\/span><span style=\"color: #8FBCBB\">Buzzer<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">connected<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">GP18<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">buzzer<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">PWM<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(18))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"># <\/span><span style=\"color: #8FBCBB\">OLED<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">Screen<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">connected<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">GP14<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #8FBCBB\">SDA<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #8FBCBB\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">GP15<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #8FBCBB\">SCL<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">i2c<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">machine<\/span><span style=\"color: #D8DEE9FF\">.<\/span><span style=\"color: #8FBCBB\">I2C<\/span><span style=\"color: #D8DEE9FF\">(1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">sda<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(14)<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">scl<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">Pin<\/span><span style=\"color: #D8DEE9FF\">(15)<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">freq<\/span><span style=\"color: #D8DEE9FF\"> = 400000)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8FBCBB\">oled<\/span><span style=\"color: #D8DEE9FF\"> = <\/span><span style=\"color: #8FBCBB\">SSD1306_I2C<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #8FBCBB\">SCREEN_WIDTH<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">SCREEN_HEIGHT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">i2c<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Seconda differenza: API di Picosystem<\/h3>\n\n\n\n<p>Se state scrivendo codice sul Picosystem, dovrete scrivere all'interno del suo sistema.<\/p>\n\n\n\n<p>Nell'esempio di YouMakeTech, tutta la logica di gioco \u00e8 incapsulata all'interno di un file <strong>mentre Vero<\/strong> loop. Questo include l'interazione con i pulsanti, il rilevamento delle collisioni e il disegno sullo schermo.<\/p>\n\n\n\n<p>Nel Picosystem, si richiede di scrivere all'interno di tre funzioni. <strong>init(), update() <\/strong>e <strong>disegnare()<\/strong>.<\/p>\n\n\n\n<p>Nel mio codice, tutta la logica del gioco \u00e8 scritta in <strong>aggiornamento() <\/strong>compresa la gestione delle collisioni e l'interazione con il D-pad.<\/p>\n\n\n\n<p>In un semplice gioco di Pong, sono state utilizzate alcune funzioni dell'API che hanno reso le cose un po' pi\u00f9 semplici:<\/p>\n\n\n\n<p><strong>interseca(x1, y1, w1, h1, x2, y2, w2, h2)&nbsp; <\/strong>\u00e8 probabilmente il pi\u00f9 grande aiuto in questo caso. Si passano le coordinate e le dimensioni dei due quadrati e il risultato \u00e8 vero se c'\u00e8 un'intersezione. In questo caso, i due rettangoli sono la palla e la barra (alias paletta). Il difetto della funzione intersects() \u00e8 che non rileva il lato in cui avviene la collisione, quindi ho dovuto scrivere del codice aggiuntivo per gestire le collisioni sul lato della barra.<\/p>\n\n\n\n<p>L'API di Picosystem si far\u00e0 notare quando si svilupperanno giochi pi\u00f9 complicati, dato che dispone gi\u00e0 di un metodo per i framebuffer, l'uscita audio, il blending, ecc.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Codice per il gioco simile a Pimoroni Picosystem Pong<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewbox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"#bar_pos_x = pixels from left, e.g. 0 from leftbar_pos_x = 50#bar_pos_y = pixels from top, e.g. 100px from topbar_pos_y = 100BAR_WIDTH = 30LENGTH_CONSTANT = 5ball_speed = 1ball_pos_x = 10ball_pos_y = 10ball_dx = 2ball_dy = 2score = 0game_over = Falsedef 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 &gt; 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 &gt;= 120 - LENGTH_CONSTANT :        ball_pos_x = 120 - LENGTH_CONSTANT        reverse_ball_dx()            if ball_pos_y &gt;= 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(&quot;Game Over&quot;, 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()\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copia\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code data-no-translation=\"\"><span class=\"line\"><span style=\"color: #D8DEE9FF\">#<\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">pixels<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">left<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">e<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">g<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">left<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">50<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">#<\/span><span style=\"color: #D8DEE9\">bar_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">pixels<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">top<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">e<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">g<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\"> 100<\/span><span style=\"color: #D8DEE9\">px<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">from<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">top<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">bar_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">100<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">BAR_WIDTH<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">30<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">5<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ball_speed<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ball_dx<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ball_dy<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">score<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">game_over<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">False<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">update<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">tick<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">bar_pos_y<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_speed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">score<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">game_over<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">reverse_ball_dx<\/span><span style=\"color: #D8DEE9FF\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">ball_dx<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dx<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">reverse_ball_dy<\/span><span style=\"color: #D8DEE9FF\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">global<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">ball_dy<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dy<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_dy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">button<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">LEFT<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #D8DEE9\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">button<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">RIGHT<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #D8DEE9\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">120<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> BAR_WIDTH <\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\"> :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">reverse_ball_dx<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">120<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> LENGTH_CONSTANT <\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">120<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">reverse_ball_dx<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">120<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> LENGTH_CONSTANT <\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">game_over<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">True<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">reverse_ball_dy<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">intersects<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">bar_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">BAR_WIDTH<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">reverse_ball_dy<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">score<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #<\/span><span style=\"color: #D8DEE9\">main<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">intersection<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">of<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">bar<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">they<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">intersect<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">check<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">they<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">are<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">intersecting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">the<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">sides<\/span><span style=\"color: #ECEFF4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #<\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">not<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">sides<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">e<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">top<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #D8DEE9\">reverse<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Y<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">direction<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Or<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">reverse<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">X<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">direction<\/span><span style=\"color: #ECEFF4\">.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">intersects<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">bar_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            #<\/span><span style=\"color: #D8DEE9\">intersecting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">left<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">reverse_ball_dx<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">intersects<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">BAR_WIDTH<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">bar_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            #<\/span><span style=\"color: #D8DEE9\">intersecting<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">on<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">right<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">reverse_ball_dx<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">draw<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">tick<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> game_over<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">pen<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">clear<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">pen<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">text<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Game Over<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">35<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">60<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">pen<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">clear<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">pen<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">15<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #<\/span><span style=\"color: #D8DEE9\">draw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">bar<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #D8DEE9\">paddle<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">frect<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">bar_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">bar_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">BAR_WIDTH<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        #<\/span><span style=\"color: #D8DEE9\">draw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">the<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">frect<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">ball_pos_x<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ball_pos_y<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9\">LENGTH_CONSTANT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">text<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">score<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">80<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">20<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">start<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Avete un gioco da consigliare?<\/h2>\n\n\n\n<p>Se avete un gioco per Raspberry Pi Pico, lasciate un commento qui sotto con un URL.<\/p>\n\n\n\n<p>E se volete dare un'occhiata alla nostra serie di Progetti Paragon, andate <a href=\"https:\/\/picockpit.com\/raspberry-pi\/category\/paragon-projects\/\">qui<\/a>.<\/p>\n<div class=\"shariff shariff-align-center shariff-widget-align-left shariff-buttonstretch\"><ul class=\"shariff-buttons theme-white orientation-horizontal buttonsize-medium\"><li class=\"shariff-button twitter shariff-nocustomcolor\" style=\"background-color:#595959\"><a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fit%2Fgioco-sul-raspberry-pi-pico%2F&text=Gaming%20on%20the%20Raspberry%20Pi%20Pico\" title=\"Condividi su X\" aria-label=\"Condividi su X\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#000; color:#000\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#000\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\"><path fill=\"#000\" d=\"M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#000\">condividi<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button facebook shariff-nocustomcolor\" style=\"background-color:#4273c8\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fit%2Fgioco-sul-raspberry-pi-pico%2F\" title=\"Condividi su Facebook\" aria-label=\"Condividi su Facebook\" role=\"button\" rel=\"nofollow\" class=\"shariff-link\" style=\"; background-color:#3b5998; color:#3b5998\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#3b5998\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 18 32\"><path fill=\"#3b5998\" d=\"M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#3b5998\">condividi<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button telegram shariff-nocustomcolor\" style=\"background-color:#4084A6\"><a href=\"https:\/\/telegram.me\/share\/url?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fit%2Fgioco-sul-raspberry-pi-pico%2F&text=Gaming%20on%20the%20Raspberry%20Pi%20Pico\" title=\"Condividi su Telegram\" aria-label=\"Condividi su Telegram\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#0088cc; color:#0088cc\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#0088cc\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 32 32\"><path fill=\"#0088cc\" d=\"M30.8 6.5l-4.5 21.4c-.3 1.5-1.2 1.9-2.5 1.2L16.9 24l-3.3 3.2c-.4.4-.7.7-1.4.7l.5-7L25.5 9.2c.6-.5-.1-.8-.9-.3l-15.8 10L2 16.7c-1.5-.5-1.5-1.5.3-2.2L28.9 4.3c1.3-.5 2.3.3 1.9 2.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#0088cc\">condividi<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button reddit shariff-nocustomcolor\" style=\"background-color:#ff5700\"><a href=\"https:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fit%2Fgioco-sul-raspberry-pi-pico%2F\" title=\"Condividi su Reddit\" aria-label=\"Condividi su Reddit\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#ff4500; color:#ff4500\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#ff4500\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\"><path fill=\"#ff4500\" d=\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#ff4500\">condividi<\/span>&nbsp;<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>In questo post voglio parlare del gioco su Raspberry Pi Pico. Ricordo il mio primo dumbphone, che all'epoca si chiamava \"telefono\". Poteva giocare a giochi semplici come Snake. Era una novit\u00e0 assoluta. Prima di allora, era necessario portare con s\u00e9 un palmare separato che riproducesse Tetris o un gioco pi\u00f9 dinamico...<\/p>","protected":false},"author":2,"featured_media":2946,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[525,528,510,527,187,526],"class_list":["post-2944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-raspberry-pi-pico","tag-gameboy","tag-picosystem","tag-pimoroni","tag-pong","tag-raspberry-pi","tag-tamagotchi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Gaming on the Raspberry Pi Pico | PiCockpit<\/title>\n<meta name=\"description\" content=\"Gaming on the Raspberry Pi Pico is an awesome way to emulate consoles and is a great platform to learn to program your own games.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/picockpit.com\/raspberry-pi\/it\/gioco-sul-raspberry-pi-pico\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gaming on the Raspberry Pi Pico | PiCockpit\" \/>\n<meta property=\"og:description\" content=\"Gaming on the Raspberry Pi Pico is an awesome way to emulate consoles and is a great platform to learn to program your own games.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/picockpit.com\/raspberry-pi\/it\/gioco-sul-raspberry-pi-pico\/\" \/>\n<meta property=\"og:site_name\" content=\"PiCockpit\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pi3gshop\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-17T11:44:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-23T10:43:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1778\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"raspi berry\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@pi3g\" \/>\n<meta name=\"twitter:site\" content=\"@pi3g\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"raspi berry\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/\"},\"author\":{\"name\":\"raspi berry\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/person\\\/7af3a7a8c999bc722029ef9ca9d78eee\"},\"headline\":\"Gaming on the Raspberry Pi Pico\",\"datePublished\":\"2022-09-17T11:44:21+00:00\",\"dateModified\":\"2023-08-23T10:43:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/\"},\"wordCount\":3348,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/featured-image.jpg\",\"keywords\":[\"Gameboy\",\"picosystem\",\"Pimoroni\",\"Pong\",\"Raspberry Pi\",\"Tamagotchi\"],\"articleSection\":[\"Raspberry Pi Pico\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/\",\"name\":\"Gaming on the Raspberry Pi Pico | PiCockpit\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/featured-image.jpg\",\"datePublished\":\"2022-09-17T11:44:21+00:00\",\"dateModified\":\"2023-08-23T10:43:28+00:00\",\"description\":\"Gaming on the Raspberry Pi Pico is an awesome way to emulate consoles and is a great platform to learn to program your own games.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#primaryimage\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/featured-image.jpg\",\"contentUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/featured-image.jpg\",\"width\":1778,\"height\":1000,\"caption\":\"games on raspberry pi pico\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/gaming-on-the-raspberry-pi-pico\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Pi Pico\",\"item\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/category\\\/raspberry-pi-pico\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Gaming on the Raspberry Pi Pico\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#website\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\",\"name\":\"PiCockpit\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\",\"name\":\"PiCockpit.com\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Screenshot-from-2023-07-24-15-01-24.png\",\"contentUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Screenshot-from-2023-07-24-15-01-24.png\",\"width\":1165,\"height\":283,\"caption\":\"PiCockpit.com\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pi3gshop\",\"https:\\\/\\\/x.com\\\/pi3g\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/person\\\/7af3a7a8c999bc722029ef9ca9d78eee\",\"name\":\"raspi berry\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"caption\":\"raspi berry\"},\"description\":\"I'm here to help you with all your Raspberry Pi related questions &amp; love to share about new project ideas for the Raspberry Pi, and give quick tips. Of course I'll also help you with PiCockpit and how to make your Raspberry Pi even easier to use with this raspberry pi monitoring solution :-)\",\"sameAs\":[\"https:\\\/\\\/picockpit.com\"],\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/it\\\/author\\\/raspi-berry\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gioco su Raspberry Pi Pico | PiCockpit","description":"Il gioco su Raspberry Pi Pico \u00e8 un modo fantastico per emulare le console ed \u00e8 un'ottima piattaforma per imparare a programmare i propri giochi.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/picockpit.com\/raspberry-pi\/it\/gioco-sul-raspberry-pi-pico\/","og_locale":"it_IT","og_type":"article","og_title":"Gaming on the Raspberry Pi Pico | PiCockpit","og_description":"Gaming on the Raspberry Pi Pico is an awesome way to emulate consoles and is a great platform to learn to program your own games.","og_url":"https:\/\/picockpit.com\/raspberry-pi\/it\/gioco-sul-raspberry-pi-pico\/","og_site_name":"PiCockpit","article_publisher":"https:\/\/www.facebook.com\/pi3gshop","article_published_time":"2022-09-17T11:44:21+00:00","article_modified_time":"2023-08-23T10:43:28+00:00","og_image":[{"width":1778,"height":1000,"url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg","type":"image\/jpeg"}],"author":"raspi berry","twitter_card":"summary_large_image","twitter_creator":"@pi3g","twitter_site":"@pi3g","twitter_misc":{"Scritto da":"raspi berry","Tempo di lettura stimato":"16 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#article","isPartOf":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/"},"author":{"name":"raspi berry","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/person\/7af3a7a8c999bc722029ef9ca9d78eee"},"headline":"Gaming on the Raspberry Pi Pico","datePublished":"2022-09-17T11:44:21+00:00","dateModified":"2023-08-23T10:43:28+00:00","mainEntityOfPage":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/"},"wordCount":3348,"commentCount":1,"publisher":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#primaryimage"},"thumbnailUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg","keywords":["Gameboy","picosystem","Pimoroni","Pong","Raspberry Pi","Tamagotchi"],"articleSection":["Raspberry Pi Pico"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/","url":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/","name":"Gioco su Raspberry Pi Pico | PiCockpit","isPartOf":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#primaryimage"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#primaryimage"},"thumbnailUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg","datePublished":"2022-09-17T11:44:21+00:00","dateModified":"2023-08-23T10:43:28+00:00","description":"Il gioco su Raspberry Pi Pico \u00e8 un modo fantastico per emulare le console ed \u00e8 un'ottima piattaforma per imparare a programmare i propri giochi.","breadcrumb":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#primaryimage","url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg","contentUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2022\/09\/featured-image.jpg","width":1778,"height":1000,"caption":"games on raspberry pi pico"},{"@type":"BreadcrumbList","@id":"https:\/\/picockpit.com\/raspberry-pi\/gaming-on-the-raspberry-pi-pico\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/picockpit.com\/raspberry-pi\/"},{"@type":"ListItem","position":2,"name":"Raspberry Pi Pico","item":"https:\/\/picockpit.com\/raspberry-pi\/category\/raspberry-pi-pico\/"},{"@type":"ListItem","position":3,"name":"Gaming on the Raspberry Pi Pico"}]},{"@type":"WebSite","@id":"https:\/\/picockpit.com\/raspberry-pi\/#website","url":"https:\/\/picockpit.com\/raspberry-pi\/","name":"PiCockpit","description":"","publisher":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/picockpit.com\/raspberry-pi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization","name":"PiCockpit.com","url":"https:\/\/picockpit.com\/raspberry-pi\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/logo\/image\/","url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-24-15-01-24.png","contentUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-24-15-01-24.png","width":1165,"height":283,"caption":"PiCockpit.com"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pi3gshop","https:\/\/x.com\/pi3g"]},{"@type":"Person","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/person\/7af3a7a8c999bc722029ef9ca9d78eee","name":"bacca di raspi","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","caption":"raspi berry"},"description":"Sono qui per aiutarvi con tutte le vostre domande relative al Raspberry Pi e amo condividere nuove idee di progetto per il Raspberry Pi, e dare consigli veloci. Naturalmente vi aiuter\u00f2 anche con PiCockpit e come rendere il vostro Raspberry Pi ancora pi\u00f9 facile da usare con questa soluzione di monitoraggio per Raspberry Pi :-)","sameAs":["https:\/\/picockpit.com"],"url":"https:\/\/picockpit.com\/raspberry-pi\/it\/author\/raspi-berry\/"}]}},"_links":{"self":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/posts\/2944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/comments?post=2944"}],"version-history":[{"count":8,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/posts\/2944\/revisions"}],"predecessor-version":[{"id":4882,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/posts\/2944\/revisions\/4882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/media\/2946"}],"wp:attachment":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/media?parent=2944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/categories?post=2944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/it\/wp-json\/wp\/v2\/tags?post=2944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}