DIY videopokeri "JokeriPokeri"

Liittynyt
06.11.2016
Viestejä
1 510
Laitetaas tänne ketjuntynkää tulevasta projektista:

Pitkään tehnyt mieli hankkia kotiin pajatso, jokeripokeri tms. peliautomaatti, mutta rayn kamppeissa hinnat lähentelee useampaa tonnia jota ei nyt tee mieli laittaa tuollaiseen kiinni, joten tehdään sitten siis itse. Tässä vähän alustavaa suunnitelmaa mitä tulossa:

Hankittuja osia:
-Raspberry pi 3 B+
-Rahalukko: https://ebay.to/33g8VTt
-Usb-enkooderi: https://ebay.to/2qOG5Lz
-8 kanavainen relekortti solenoidien ohjaamiseen: https://ebay.to/377RSFB
-solenoidit: https://ebay.to/2CKqGi7
-diodit solenoidien kytkentään: https://ebay.to/2Oa0AdE
-muutama servo: https://ebay.to/2CICdhR

Ostoslistalla:
-Näyttö joko 24" 1080p tai jokin klassisempi 4:3 kuvasuhteella oleva littunäyttö. Riippuu muusta lopullisesta hardiksesta ja koteloinnin koosta kumpi on passelimpi
- Näppäimet: Näitä mietin: https://ebay.to/2ptRy2Z mutta eivät täysin miellytä silmää. Vaativat myös paljon tilaa asennukseen.
-mahdollisesti jokin windows pohjainen laitos (nuc?) raspin tilalle jos linux alkaa nyppiä
-3D tulostin?
-Arduino?

Softa:
- Pelin itsessään tulen tekemään Unitylla ja C#:lla.
- Mahdollinen python kikkare ohjaamaan voittojen maksua jos tarpeen, pitäisi tosin onnistua myös Unityn kautta.

Kaappi/kotelo
-Koitetaan pitää niin kompaktina kuin rahankäsittely/voittojen maksu mekaniikka antaa myöten.
________________________________________________________

Alustavasti tarkoituksena siis tehdä kopio Ray:n klassisesta pokeripelistä tuplauksineen. Grafiikat yritän pitää ajan hengen mukaisena. Kehitysympäristönä tosiaan Unity ja kielenä C# kun näistä on aiempaa kokemusta ja Unitylla tälläisen tunkkaa kasaan suht nopeasti.

Jotain logiikkaa jo väännetty valmiiksi mutta nyt lähinnä odotan että kiinanpojat kuskaa osat perille. Rahalukko tärkeimpänä jotta pääsen mallailemaan rahojen lajittelun ja voittojen maksun mekaniikkaa.

Tällä hetkellä ideana ihan mekaaninen lajittelija(näitä on youtube pullollaan) joka pudottaa kolikot putkiin koon perusteella. Putkien alapäässä sitten solenoidilla/servolla ohjattu kolikon pudottaja voittojen maksuun/ lippaaseen pudottamiseen.

Tarkoituksena että automaatti hyväksyy 10snt, 20snt, 50snt, 1e ja 2e kolikot. Voittoja maksetaan euron, kahden ja 20snt kolikoilla (50snt varauksella) ja muut pudotetaan suoraan lippaaseen.

Softa pitää myös kirjaa rahojen kokonaismäärästä sekä yksittäisten kolikoiden määrästä. Näin ei mahdollisteta suurempia voittoja kuin on mahdollista maksaa ja putkien täyttyessä voidaan kolikoita pudottaa lippaaseen.

Paljon tekstiä :D Myöhemmin tulossa kuvia yms. kunhan osat ja muut saapuu. Kommentit, ideat ja ehdotukset tervetulleita, varsinkin projektin edetessä. Tällä hetkellä kaipaan tietoa projektiin mahdollisesti sopivista napeista jos joltain löytyy kokemusta kun en omaa silmä miellyttäviä ole vielä löytänyt.
 
Viimeksi muokattu:
Tää on varsin mielenkiintonen projekti. Kätevästi saa kavereilta sit kaljarahat tuolla tienattua :D
 
Kuulostaa mahtavalta projektilta! Haluan tietysti itse viritellä samanlaisen jos saat raspilla/arduinolla toimimaan :)
 
Täähän on mielenkiintoinen projekti.

Joko olet jonkinlaiset napit tilannut tuohon? Itsellä olisi yhteen toiseen projektiin tarvis isolle valaistulle painikkeelle mutta sellaiselle joka ei tarvi hirveesti tilaa syvyys suunnassa.
 
Täähän on mielenkiintoinen projekti.

Joko olet jonkinlaiset napit tilannut tuohon? Itsellä olisi yhteen toiseen projektiin tarvis isolle valaistulle painikkeelle mutta sellaiselle joka ei tarvi hirveesti tilaa syvyys suunnassa.

En ole vielä. Tuntuu että noi kaikki arcade tyyppiset napit pohjautuu lopulta samaan designiin ja ainoastaan napin ulkomuoto muuttuu. varmaan päädyn tilaamaan nuo aloituspostauksessa mainitut napit
 
Onkos tää proju kuopattu, vai vieläkö hengissä? Kiinnostavan olonen ainakin :D
 
Onkos tää proju kuopattu, vai vieläkö hengissä? Kiinnostavan olonen ainakin :D

Vielä on hengissä. Kamoja odottelen vieläkin valitettavasti. Koodia on jonkin verran puskettu ja 3d mallinnettu tuota maksumekanismia. Vielä odottelen nappeja, solenoideja yms kikkareita. 3d tulostin vielä hankintaan niin pääsee joskus valmistamaankin.
 
Tämmöstä joskus nuorempana myös haaveillut, siistiä kun teet! Seuraan miten käy projektissa‍
 
Pientä päivitystä.

1. Voitonmaksumekanismiin odotellaan yhä solenoideja. Muut tavarat alkaa aikalailla olla perillä. Vielä pitäisi saada 3d mallit valmiiksi mekanismista ja tulostella osia.

2. Tälläinen harakanpesä tuli kolvailtua kasaan:
thumbnail_IMG_20200503_235655.jpg

Simppelisti siis rahalukon virtajohtimiin lisätty molex liitin virransyöttöä (12v) varten. Molex siksi koska kaapissa sattui pyörimään ylimääräinen 12v ulkoinen virtalähde molex liittimellä. Onhan tuo toki ihan kätevä jos ei raspi jaksa softaa pyörittää niin sisään voisi heittää jonkun itx kikkareen niin saisi tuollekkin sitten virran suoraan samalta virtalähteeltä.

Rahalukolta ulos taas lähtee signal ja counter piuhat joihin kolvailtu tuohon usb-encoderiin sopiva 2 pinninen liitin eli rahalukko toimii ikäänkuin yhtenä nappina.
Rahalukkoon ohjelmoin näillä ohjeilla kaikki eurokolikot (0.05-2e). Hyvin tuntuu tunnistuvan vaikka kiinanvehje onkin. Lähinnä vääriä negatiivisia tullut, yhtään väärää positiivistä ei.

Rahalukko siis lähettää jokaisen kolikon kohdalla tietyn määrän pulsseja encoderille, itse ohjelmoin lähettämään 1-7 pulssia (0.05e-2e). Ja encoder välittää pulssit näppäimen painalluksena koneelle. ( Itse ohjelmoin tähän numpad1:sen käyttämällä antimicro nimistä sovellusta.) Unityyn kirjoitin scriptin lukemaan noita saapuvia pulsseja(painalluksia). Softa tunnistaa kolikot laskemalla montako perättäistä painallusta tulee tietyllä intervallilla, tähän laitoin intervalliksi 0.15s kun rahalukon pulssien nopeus on maksimilla ja tuntuu toimivan hyvin, välillä saattaa missata jonkun kolikon tai lukee väärän jos ihan peräkanaa kolikot tukkii sisään, koodia twiikkaamalla ehkä tuon saisi poistettua.

Tällähetkellä pulssit luetaan tälläisellä kikkareella :facepalm::facepalm::facepalm: (parannusehdotuksia saa heittää ):

Koodi:
if (Input.GetKeyDown(KeyCode.Keypad1))
        {
            if (firstImpulse)
            {
                pulseCount++;
              
                timeStamp = Time.time + interval;
                firstImpulse = false;
            }
            else if(!firstImpulse && Time.time <= timeStamp)
            {
                pulseCount++;
                timeStamp = Time.time + interval;
            }
        }
        if (pulseCount != 0 && Time.time >= timeStamp)
        {
            CheckForCoin();
            Debug.Log(moneycount);
            pulseCount = 0;
            firstImpulse = true;
        }

3. Softapuolella taas näyttää muuten tältä:
pokeri.JPG


Tähän mennessä softaan implementoitu:

- Edellämainittu kolikkojen lukeminen ja lisääminen saldoon
- Panoksen vaihto ( 0.2e > 0.4e > 0.6e > 0.8e > 1e > 0.2e.)
- Voittojen päivitys taulukkoon panoksen mukaan.
- Korttien ja pakan luonti, pakan sekoitus.
- Korttien jakaminen pöydälle.
- Vaihdettavien korttien valinta ( täytyy vaihtaa korttien lukitukseen koska syystä x (kännipäissäni) ohjelmoin tämän lukitsemaan vaihdettavat kortit :facepalm:)
- Uusien korttien jako valittujen tilalle.
- Käsien analysointi, palauttaa parhaimman mahdollisista voitoista.
- Gamestaten resetointi eli onnistuu useampi kierros putkeen.

Vielä tehtävää mitä nyt tulee mieleen:
- Voittojen laskenta käden perusteella
- Tuplaus ( isompi/pienempi kuin 7)
- Jokerin lisäys pakkaan(??)
- Käsien analysointi esim. Suora niin että 10-J-Q-K-A onnistuu, ässä siis tällähetkellä vain 1.
- Voittojen maksu. ( kunhan saan hardiksen kuntoon).
- Grafiikat. Custom kortit/16-bit kortit?? tällä hetkellä kortit revitty jostain copyright free sivulta. Muutenkin yleisilmettä kuntoon.
- Animaatiot, esim korttien sekoitus/jakaminen.

Tämähän on siitä reilu että perustuu tosiaan täysin sattumaan, ennen jokaista kierrosta kaikki kortit palautetaan pakkaan ja pakka sekoitetaan. Eli täysin samat mahdollisuudet kuin rly pakastakin jaettuna. Tosin täytyy varmaan sen verran muokata että voiton maksuun ei saa suurempaa saldoa kuin koneessa on kolikoita eli joku funkkari tarkastamaan ettei kierroksen voitto voi olla suurempi kuin koneessa olevat rahat. Kolikkojen lajeista ja määristä pidetään siis kirjaa eli koneessa olevat rahat tulevat olemaan koko ajan tiedossa.

Ideoita/ehdotuksia? Muutamaan kysymykseen ainakin kaipaan mielipiteitä:

- Jokeri? Kyllä/ei? mahdollistaisi esim Vitoset ja näin uuden voittoluokan.
- Grafiikat? 16-bit?

Jos joku koodari/pelikoneista enemmän tietävä tätä lukee niin seuraava kysymys kaipaa vastausta:

Miten jaotella voitonmaksu eri kolikko lajien kesken? Joku algoritmi tähän nyt tarvittaisiin jolla kolikoille tietty painotus kun voitonmaksuun menevä summa ylittää tietyn rajan. esim. 2 euron voitonmaksu maksettaisiin aina 2 euron kolikolla tai 10 euroa = 4x2e + 2x1e tms. Eli miten jaotella voitonmaksu niin että maksimoidaan kapasiteetti per kolikkolaji kun tiedetään kolikkojen määrä koneessa x kpl/maksimi.

Pitkä postaus, pahoittelut siitä. Koodin voin ehkä puskea johonkin nähtäville jos muita sattuu kiinnostamaan. Huutaa tosin refaktorointia :rofl2:
 
Jos joku koodari/pelikoneista enemmän tietävä tätä lukee niin seuraava kysymys kaipaa vastausta:

Miten jaotella voitonmaksu eri kolikko lajien kesken? Joku algoritmi tähän nyt tarvittaisiin jolla kolikoille tietty painotus kun voitonmaksuun menevä summa ylittää tietyn rajan. esim. 2 euron voitonmaksu maksettaisiin aina 2 euron kolikolla tai 10 euroa = 4x2e + 2x1e tms. Eli miten jaotella voitonmaksu niin että maksimoidaan kapasiteetti per kolikkolaji kun tiedetään kolikkojen määrä koneessa x kpl/maksimi.

Pitkä postaus, pahoittelut siitä. Koodin voin ehkä puskea johonkin nähtäville jos muita sattuu kiinnostamaan. Huutaa tosin refaktorointia :rofl2:

Minusta tuo kolikkojen optimointi kuulostaa Partition Problem -logiikalle, eli miten voit eri tavoin luoda maksun olemassa olevien kolikoiden joukosta:

Oletan, että ihmiset kuitenkin pelaavat eniten eurolla tai kahdella eurolla. Tällöin niitä kertyy laitteeseen eniten ja kannattaisi luoda algoritmi, joka pyrkii maksimoimaan niiden käytön (palauttamisen) voittoa maksaessa ja lopuksi kasaa pikkuhilut, optimoiden niiden tasaisen jakautumisen.
 
Minusta tuo kolikkojen optimointi kuulostaa Partition Problem -logiikalle, eli miten voit eri tavoin luoda maksun olemassa olevien kolikoiden joukosta:

Oletan, että ihmiset kuitenkin pelaavat eniten eurolla tai kahdella eurolla. Tällöin niitä kertyy laitteeseen eniten ja kannattaisi luoda algoritmi, joka pyrkii maksimoimaan niiden käytön (palauttamisen) voittoa maksaessa ja lopuksi kasaa pikkuhilut, optimoiden niiden tasaisen jakautumisen.

Jep, coin change algoritmejahan löytyy ja on aika perustavan laatuinen ohjelmointi tehtävä mutta kaikki ratkaisut enemmän ja vähemmän tähtäävät siihen että selvittäisiin minimimäärällä kolikoita ja tälläisen algoritmin olen jo implementoinutkin mutta ei ehkä ole optimi ratkaisu tähän tilanteeseen.

Ongelmahan on se että käytännössä kaikki kolikot ovat enemmän tai vähemmän saman paksuisia joten päällekkäin varastoidessa 20snt kolikot vievät 10x enemmän tilaa kuin 2 euron kolikot. Eli siinä mielessä on ihan ok ratkaisu tähdätä pienimpään määrään kolikkoja mutta sitten pienimmät jäävät lähes aina käyttämättä koska niillä paikattaisiin lähinnä desimaaleja ja muutoin ränniin laskettaisiin vain 1 tai 2 euron kolikkoja. :confused: Toki tästäkään ei sinänsä pitäisi olla ongelmaa jos olettaa että kolikko kapasiteetti on käytännössä täynnä millä tahansa hetkellä.

E: tietty tuohon voisi ihan hard-koodata tietyt skenaariot esim 1e voitot joko a) 5x20snt,b) 2x50snt tai c)1x1e kolikkojen määrästä riippuen ja loput skenaariot hoitaa algoritmillä
 
Vanhaa keskustelua mutta mielestäni tuota rahojen taspainotusta ei kannata hirveästi optimoida. Syy on että ainoat kolikot joita tulee useampia kappaleita voiton yhteydessä on 20snt ja 2e (tai muu suurin kolikko). Toki mikäli jokin kolikko on loppu niin tilanne muuttuu vähän mutta silti optimointi on mielestäni turhaa.
Mielestäni paras tapa toteuttaa "optimointi" olisi laittaa useampia putkiloita 2e ja ehkä 20snt kolikoita.
 
Tuo kolikoiden yleisyyden asettuminen selviää tuollaisessa laitteessa lähinnä vaan seuraamalla, koska tuota ei voi mihinkään julkiseen paikkaan laittaa, niin yleisten peliautomaattien käytösmallit ei myöskään toteudu. Tietysti se samalla myös mahdollistaa tuon tekemisen niin että käytössä on vain esim eruon panos, jolloin riittää että kone käyttää vain 1e ja 2e kolikkoa.
 

Statistiikka

Viestiketjuista
261 210
Viestejä
4 532 101
Jäsenet
74 774
Uusin jäsen
Swatmc

Hinta.fi

Back
Ylös Bottom