The one-armed bandit (fruit machine)

Post Reply
Henko
Posts: 814
Joined: Tue Apr 09, 2013 12:23 pm
My devices: iPhone,iPad
Windows
Location: Groningen, Netherlands
Flag: Netherlands

The one-armed bandit (fruit machine)

Post by Henko »

This fruitmachine is programmed entirely as a function. It may be simply called from a host app, and removed by touching the “Boss!” Button. It leaves the background of the host app unchanged.
It requires the graphics mode, and will use the current “draw color” in the host app.
It fits on the iPad and on the iPhone.
IMG_1223.jpeg
IMG_1223.jpeg (382.79 KiB) Viewed 2995 times

Code: Select all


graphics ! draw color 0,0,0
bandit()
end

def bandit()
  ob=option_base() ! option base 0
  dim tok(7),rol(13),r_s(3),r_n(3),end(3),win(5),pay(5)
  for i=0 to 6 ! read tok(i) ! next i
  data 9884,58181,58182,58183,58184,58185,58186
  for i=0 to 12 ! read rol(i) ! next i
  data 2,5,4,6,1,3,0,3,6,5,1,2,4
  for i=0 to 4 ! read pay(i) ! next i
  data 1,3,2,5,10
  xp=100 ! yp=100
  if device_type$()="iPhone" then
    get orientation orient 
    set orientation landscape
    xp=10 ! yp=10
    end if
  page "band" set
  page "band" frame xp,yp,560,325
  page "band" color .5,.7,.7,1
  set buttons custom
  set buttons font size 100
  button "w0" text chr$(tok(2)) at 20,20 size 160,120
  button "w1" text chr$(tok(3)) at 200,20 size 160,120
  button "w2" text chr$(tok(4)) at 380,20 size 160,120
  set buttons font size 30
  t$="Bet (€ 1)  "&chr$(10137)
  button "pay" text t$ at 60,155 size 200,40
  button "h0" text "€ 1" at 300,155 size 60,40
  button "h1" text "€ 5" at 390,155 size 60,40
  button "h2" text "€ 20" at 480,155 size 60,40
  button "win" text "" at 20,210 size 240,40
  button "pot" text "Pot: € 100" at 20,270 size 240,40
  set buttons font size 40
  button "rol" text "start" at 300,210 size 100,100
  button "bos" text "Boss!" at 420,210 size 120,100
  init=1 ! running=0 ! inzet=1 ! winst=100
  for i=0 to 4 ! win(i)=int(inzet*pay(i)) ! next i
  randomize()
page "band" show
do slowdown
  if bp("bos") then
    page "band" hide
    if orient>0 then set orientation orient
    option base ob
    return
    end if
  for i=0 to 2
    if bp("h"&i) then
      if i=0 then inzet=1
      if i=1 then inzet=5
      if i=2 then inzet=20
      t$="Inzet (€ "&inzet&")  "&chr$(10137)
      button "pay" text t$
      for j=0 to 4 ! win(j)=int(inzet*pay(j)) ! next j
      end if
    next i
  if not running and bp("rol")=1 then
    running=1 ! tour=1 ! button "win" text ""
    winst-=inzet ! button "pot" text "Pot: € "&winst
    for i=0 to 2 ! r_s(i)=rnd(13) ! r_n(i)=3+rnd(4) ! next i
    while running
      for i=0 to 2
        if r_n(i)=0 then continue
        k=r_s(i)%13 ! r_s(i)+=1
        end(i)=rol(k)
        button "w"&i text chr$(tok(end(i)))
        next i
        pause .3
      running=0
      for i=0 to 2
        if r_n(i)>0 then
          running=1 ! r_n(i)-=1 ! break
          end if
        next i
      end while
    bwin=0
    if end(0)=end(1) then   ' check winnende combi
      if end(2)=end(1) then trip(end(1)) else dub(end(1))
      else ! if end(1)=end(2) then dub(end(1))
      end if
    skull=0
    for i=0 to 2 ! if end(i)=0 then skull+=1 ! next i
    bwin+=skull*win(1) ! winst+=bwin
    button "pot" text "Pot: € "&winst
    if bwin>0 then
      button "win" text "Win: € "&bwin
      beep
      end if
    end if
  until forever
end def

def dub(k)
if k=0 then res=bandit.win(2)
if k=1 then res=bandit.win(1)
if k>1 then res=bandit.win(0)
bandit.bwin=res ! bandit.winst+=res
button "pot" text "Pot: € "&bandit.winst
button "win" text "Win: € "&res
end def

def trip(k)
if k=0 then res=bandit.win(4)
if k=1 then res=bandit.win(3)
if k>1 then res=bandit.win(1)
bandit.bwin=res ! bandit.winst+=res
button "pot" text "Pot: € "&bandit.winst
button "win" text "Win: € "&res
end def

def db ! debug pause ! end def
def bp(a$) = button_pressed(a$)

Post Reply