Bandit Casino - Twoje własne kasyno na Arduino Uno

Typ_projektu
Arduino
Zdjecie główne
Krótki opis projektu

Bandit Casino to innowacyjny projekt na platformie Arduino Uno, który zamienia niewielki ekran OLED w tętniące życiem wirtualne kasyno. Wcielając się w postać rabusia, gracz swobodnie eksploruje mapę i wchodzi w interakcje z wybranymi stołami do gry. Projekt łączy w sobie mechanikę poruszania się w stylu RPG z trzema w pełni funkcjonalnymi grami hazardowymi: Jednorękim Bandytą, Blackjackiem oraz Ruletką. Całość opiera się na zaawansowanym systemie zarządzania budżetem, oferując pełne doświadczenie – od wielkich wygranych po całkowite bankructwo.

Niezbędne elementy
  • Arduino Uno

  • Wyświetlacz OLED 128x64 (sterownik SH1106 lub SSD1306)

  • 6 Przycisków typu Tact-Switch

  • Płytka stykowa i przewody połączeniowe

Opis projektu

Wprowadzenie i Mechanika Główna Zasadniczym elementem odróżniającym ten projekt od standardowych gier na Arduino jest otwarta struktura rozgrywki. Gracz, używając przycisków kierunkowych, steruje postacią rabusia na głównej sali kasyna. Zaimplementowany system kolizji na bieżąco analizuje pozycję postaci, uniemożliwiając jej przechodzenie przez narysowane stoły i meble. Gdy gracz zbliży się do wybranego stanowiska, interfejs dynamicznie podpowiada możliwość wciśnięcia przycisku akcji, co płynnie przenosi go do konkretnej minigry.

System Ekonomii i Bank Gra opiera się na wirtualnej walucie. Gracz rozpoczyna zabawę z budżetem 500 dolarów, a jego celem jest pomnożenie tej kwoty. W przypadku braku gotówki na zakłady, można udać się do wirtualnego "Banku", który pozwala na doładowanie konta o 100, 500 lub 1000 dolarów. Aby gra miała swoje logiczne zakończenie, zaimplementowano mechanikę "Game Over" – po całkowitym wyzerowaniu salda i powrocie na salę główną, system wyświetla ekran bankruta i całkowicie blokuje urządzenie, wymuszając fizyczny reset mikrokontrolera.

Zasady działania dostępnych gier:

  • Jednoręki Bandyta (Slot Machine): Klasyczny automat, w którym gracz ustala stawkę (10, 25, 50 lub 100 dolarów), a maszyna losuje symbole na trzech bębnach. Bębny zatrzymują się z różnym opóźnieniem, potęgując napięcie. Wygrana zależy od wylosowanej kombinacji – sparowanie dwóch symboli zwraca stawkę, a trafienie trzech takich samych znaków uruchamia odpowiedni mnożnik wygranej.

  • Blackjack: Zaawansowana karcianka rozgrywana przeciwko wirtualnemu krupierowi. System wiernie odwzorowuje zasady z prawdziwych kasyn: gracz może dobierać karty, korzystać z opcji "Double Down", a nawet wykupić "Ubezpieczenie", gdy krupier odkryje Asa. Animacja rozdawania kart krok po kroku uatrakcyjnia rozgrywkę.

  • Ruletka: Najbardziej rozbudowana pod kątem interfejsu gra w kasynie. Gracz korzysta z zaawansowanego "kuponu", na którym może jednocześnie postawić do trzech niezależnych zakładów w jednej rundzie. Opcje obstawiania obejmują m.in. kolory (Red/Black), parzystość (Even/Odd), konkretne tuziny oraz dokładne numery od 0 do 36. Animacja spowalniającego koła i podsumowanie wyników nadają grze niesamowitego realizmu.

Rozwiązania Techniczne i Architektura Sercem oprogramowania jest wydajna maszyna stanów (enum GameState), która kieruje pracą mikrokontrolera. Dzięki niej kod jest zoptymalizowany i w danym momencie procesor obsługuje wyłącznie tę grę, która jest aktualnie wyświetlana na ekranie. Obsługa sześciu fizycznych przycisków działa w pełni asynchronicznie – wykorzystanie funkcji millis() zamiast delay() gwarantuje błyskawiczną reakcję na wciśnięcia i płynność animacji. Największym wyzwaniem technicznym w projekcie był limit zaledwie 2 KB pamięci RAM w układzie Arduino Uno. Aby pomieścić wszystkie grafiki, użyto dyrektywy PROGMEM, która wymusza zapisywanie stałych wartości oraz tablic bezpośrednio w pamięci Flash, zapewniając stabilność i brak "crashy" podczas długiej rozgrywki.

Zdjęcia
kod programu

ZIP poniżej

Pliki_projektu
Youtube
Tagi
ArduinoUno OLED kasyno rpg blackjack ruletka sloty