Výherní automat DAYTONA GAMBLER pro dosbox který stáhnete z domovské stránky dosboxu

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: KMP (Programy mladých programátorů)
gambler.jpgAutor: Martin Koleček
Program: Daytona.pasDefault.pasHisther.pasJackpot.pasLoading.pasMain.pasMaingame.pasMisc.pasMys.pasOvladani.pas
Soubor exe: Gambler.zip
Potřebné: Plus1000.pasPlus500.pasProdat.pasRiskscr.pasRoll.pasRollpre.pasRollproc.pasRolsetup.pasRskdolni.pasRskhorni.pas
Příklady: Saveload.pasScore.pasScreen.pasServis.pasSetbet.pasTestwin.pasUpdate5.pasWaitbtn.pasWinblink.pasWrivalce.pasZisky.pas

Výherní automat podle skutečného stroje Daytona 750. Podporuje Sound Blaster.
Rychlost hry je konfigurovatelná. Experimentálně podporuje ovládání dotykovým displayem pro Androidy.

POZOR:
  • než se objeví hra tak se to načítá poměrně velmi velmi dlouho takže buďte trpěliví
  • pokud nevíte co přesně děláte tak servisní nastavení raději nechte bez povšimnutí
  • reset v servisním nastavení resetuje pouze počítadlo výher a vkladů, ne nastavení hry
  • pokud už jste stačili popřehazovat servisní nastavení a hra je špatně hratelná, tak vymažte soubor GAMBLER.DAT, hra se uvede do "továrního nastavení"

O dosboxu:
  • pokud nevíte a neumíte tak se zeptejte někoho kdo ví a umí nebo si najděte informace o dosboxu na internetu
  • hodnota cycles pro GAMBLERA na PC je tak 10000 až 20000
  • hodnota cycles na mobilních zařízeních (tam používejte legální dosbox turbo) je tak 7000
  • nedávejte cycles max nebo cycles auto, párkrát to zkuste a najděte si správnou přesnou hodnotu
  • hra by neměla kazit zvuk nebo cukat obraz, pokud je cycles nastaveno optimálně v‘e jede hladce
  • DAYTONA GAMBLER je podomácku vyrobený freeware takže ho bezestrachu ‘iřte a ukazujte druhým jak se to hraje
  • totéž dosbox pro PC je freeware, dosbox turbo je komerční ale stojí jen 60 korun tak nebuďte piráti


Nastavení výhernosti:
V servisní obrazovce klávesou TAB měníte switch a nahoru dolů manipupuje s výherností rozsahy jsou 0 až 65000 v‘echny switche a číslo na něm vyrábí poměr mezi dvěma stavy, obvykle to bývá jestli je výhra nebo není výhra a číslo teda dělí na poměr mezi těmito stavy, vždy "0 až číslo" je jedna část, třeba jestli se riskovani povede nebo nepovede a "číslo až 65000" je druhá část možného výsledku. Nakonec rozhodne náhodné číslo z rozsahu "0 až 65535" , ale záleží na poměru na switchi co je pravděpodobněj‘í interval.


SWITCHE:
  • 2kč výhry = šance na výhru ve dvoukorunové hře {RollSetup bet 2, čím menší tím míň výher}
  • 4kč výhry = šance na výhru ve čtyřkorunové hře {RollSetup bet 4, čím menší tím míň výher}
  • 5kč výhry = šance na výhru v pětikorunové hře {RollSetup bet 5, čím menší tím míň výher}
  • 2kč Joker A = pravděpodobnost výsměchu Jokera na dvoukorunové hře {TestWin bet 2J, čím menší tím víc výher}
  • 2kč Joker B = pravděpodobnost zdvojnásobení Jokerem na dvoukorunové hře {TestWin bet 2J, čím menší tím míň výher}
  • 4kč Joker A = pravděpodobnost výsměchu Jokera na čtyřkorunové hře {TestWin bet 4J, čím menší tím víc výher}
  • 4kč Joker B = pravděpodobnost zdvojnásobení Jokerem na čtyřkorunové hře {TestWin bet 4J, čím menší tím míň výher}
  • 5kč Joker = pravděpodobnost zdvojnásobení Jokerem na pětikorunové hře {TestWin bet 5J, čím menší tím míň výher} (na 5kč hře se joker neposmívá)
  • riskovani = šance na zdvojnásobení riskem strany mince při náhodném risku {Risking vyhernost čím menší tím míň výher} (neplatí při risku postřehem; nebo při risku autostartem tam je poměr 1:1)
Procedure Prodat;
Const MaxPolozek = 13;
Var Ending: Boolean;
    polozka: Byte;
 
  Procedure ProdatVec;
  Begin
          Penize:=0;
          If VecProdata[Polozka]=False then
          Begin
            Case Polozka of
              0: Inc(Penize,1200000);
              1: Inc(Penize,12000);
              2: Inc(Penize,6500);
              3: Inc(Penize,2400);
              4: Inc(Penize,3600);
              5: Inc(Penize,1400);
              6: Inc(Penize,2900);
              7: Inc(Penize,4600);
              8: Inc(Penize,1250);
              9: Inc(Penize,3900);
             10: Inc(Penize,2500);
             11: Inc(Penize,10000);
             12: Inc(Penize,9000);
             13: Inc(Penize,15000);
            End; {Case End}
            VecProdata[Polozka]:=True;
            DatRec.vec[Polozka]:=False;
            Inc(DatRec.Hotovost,Penize);
            Penize:=0;
            If DatRec.SBEnable=True then SBPlayRaw(11)
                                    else PlaySound(1);
          End else
          Begin
            Case Polozka of
              0: Inc(Penize,1200000);
              1: Inc(Penize,12000);
              2: Inc(Penize,6500);
              3: Inc(Penize,2400);
              4: Inc(Penize,3600);
              5: Inc(Penize,1400);
              6: Inc(Penize,2900);
              7: Inc(Penize,4600);
              8: Inc(Penize,1250);
              9: Inc(Penize,3900);
             10: Inc(Penize,2500);
             11: Inc(Penize,10000);
             12: Inc(Penize,9000);
             13: Inc(Penize,15000);
            End; {Case End}
            If DatRec.Hotovost>=Penize then
            Begin
              Dec(DatRec.Hotovost,Penize);
              VecProdata[Polozka]:=False;
              DatRec.vec[Polozka]:=True;
            End;
            Penize:=0;
            If DatRec.SBEnable=True then SBPlayRaw(11)
                                    else PlaySound(1);
          End;
 
  End;
 
  Procedure ProdatScreen;
  Var I: Byte;
  Begin
    ClearPage(Buffer[3]);
    Ramecek(0,0,319,199,ColorGreenBright,Buffer[3]);
    WriteText(Buffer[1],160,0,5,5,1,268,5,'esc=exit',Buffer[3]);
    {kurzor}
    OutText(5,2+polozka*14,'>>>',Buffer[3]);
    {polozky}
    For I:=0 to MaxPolozek do
    Begin
      If VecProdata[I]=True then
      Case I of
        0: OutText(25,2+I*14,'Chalupa .................... prod no KŸ',Buffer[3]);
        1: OutText(25,2+I*14,'Auto ....................... prod no KŸ',Buffer[3]);
        2: OutText(25,2+I*14,'Motorka .................... prod no KŸ',Buffer[3]);
        3: OutText(25,2+I*14,'LedniŸka ................... prod no KŸ',Buffer[3]);
        4: OutText(25,2+I*14,'PraŸka ..................... prod no KŸ',Buffer[3]);
        5: OutText(25,2+I*14,'Televize ................... prod no KŸ',Buffer[3]);
        6: OutText(25,2+I*14,'Kolo ....................... prod no KŸ',Buffer[3]);
        7: OutText(25,2+I*14,'OběvacĄ stŘna .............. prod no KŸ',Buffer[3]);
        8: OutText(25,2+I*14,'Mikrovlnn  trouba .......... prod no KŸ',Buffer[3]);
        9: OutText(25,2+I*14,'PoŸĄtaŸ .................... prod no KŸ',Buffer[3]);
       10: OutText(25,2+I*14,'HernĄ Konzole .............. prod no KŸ',Buffer[3]);
       11: OutText(25,2+I*14,'P…jŸka ................... vyp…jŸeno KŸ',Buffer[3]);
       12: OutText(25,2+I*14,'D…chod ................... vyplaceno KŸ',Buffer[3]);
       13: OutText(25,2+I*14,'Věplata .................. vyplaceno KŸ',Buffer[3]);
      End {Case End}
      else
      Case I of
        0: OutText(25,2+I*14,'Chalupa ................... +1200000 KŸ',Buffer[3]);
        1: OutText(25,2+I*14,'Auto ........................ +12000 KŸ',Buffer[3]);
        2: OutText(25,2+I*14,'Motorka ...................... +6500 KŸ',Buffer[3]);
        3: OutText(25,2+I*14,'LedniŸka ..................... +2400 KŸ',Buffer[3]);
        4: OutText(25,2+I*14,'PraŸka ....................... +3600 KŸ',Buffer[3]);
        5: OutText(25,2+I*14,'Televize ..................... +1400 KŸ',Buffer[3]);
        6: OutText(25,2+I*14,'Kolo ......................... +2900 KŸ',Buffer[3]);
        7: OutText(25,2+I*14,'OběvacĄ stŘna ................ +4600 KŸ',Buffer[3]);
        8: OutText(25,2+I*14,'Mikrovlnn  trouba ............ +1250 KŸ',Buffer[3]);
        9: OutText(25,2+I*14,'PoŸĄtaŸ ...................... +3900 KŸ',Buffer[3]);
       10: OutText(25,2+I*14,'HernĄ Konzole ................ +2500 KŸ',Buffer[3]);
       11: OutText(25,2+I*14,'P…jŸka ...................... +10000 KŸ',Buffer[3]);
       12: OutText(25,2+I*14,'D…chod ....................... +9000 KŸ',Buffer[3]);
       13: OutText(25,2+I*14,'Věplata ..................... +15000 KŸ',Buffer[3]);
      End; {Case End}
    End;
    HideMouse;
    WaitRetrace;
    FlipPage(Buffer[3],Buffer[4]);
    ShowMouse;
  End;
 
Begin
  Ending:=False;
  ProdatScreen;
  For polozka:=0 to 13 do If DatRec.Vec[polozka]=True then VecProdata[polozka]:=False
                                                      else VecProdata[polozka]:=True;
  polozka:=0;
  Repeat
    ProdatScreen;
    Wait(DatRec.fpsProdleva);
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=0) and (GetMouseY<14) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=0 then ProdatVec
                       else polozka:=0;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=14) and (GetMouseY<28) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=1 then ProdatVec
                       else polozka:=1;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=28) and (GetMouseY<42) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=2 then ProdatVec
                       else polozka:=2;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=42) and (GetMouseY<56) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=3 then ProdatVec
                       else polozka:=3;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=56) and (GetMouseY<70) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=4 then ProdatVec
                       else polozka:=4;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=70) and (GetMouseY<84) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=5 then ProdatVec
                       else polozka:=5;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=84) and (GetMouseY<98) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=6 then ProdatVec
                       else polozka:=6;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=98) and (GetMouseY<112) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=7 then ProdatVec
                       else polozka:=7;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=112) and (GetMouseY<126) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=8 then ProdatVec
                       else polozka:=8;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=126) and (GetMouseY<140) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=9 then ProdatVec
                       else polozka:=9;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=140) and (GetMouseY<154) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=10 then ProdatVec
                        else polozka:=10;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=154) and (GetMouseY<168) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=11 then ProdatVec
                        else polozka:=11;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=168) and (GetMouseY<182) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=12 then ProdatVec
                        else polozka:=12;
        End;
 
    If ((GetMouseX>=0*2) and (GetMouseX<=319*2) and
        (GetMouseY>=182) and (GetMouseY<196) and (GetButton1=1)) then
        Begin
          While GetButton1=1 do Begin End;
          If polozka=13 then ProdatVec
                        else polozka:=13;
        End;
 
{Up}    If Key[72]=True then
        Begin
          While Key[72]=True do WaitButton(72);
          If polozka>0 then Dec(polozka) else polozka:=MaxPolozek;
        End;
 
{Down}  If Key[80]=True then
        Begin
          While Key[80]=True do WaitButton(80);
          If polozka<MaxPolozek then Inc(polozka) else polozka:=0;
        End;
 
{Enter} If Key[28]=True then
        Begin
          While Key[28]=True do Begin End;
          ProdatVec;
        End;
 
{Esc} If ((Key[1]=True) or (GetButton2=1)) then
      Begin
        While ((Key[1]=True) or (GetButton2=1)) do Begin End;
        Ending:=True;
      End;
 
  Until Ending=True;
 
End;