<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://air.imag.fr/index.php?action=history&amp;feed=atom&amp;title=D%C3%A9veloppement_BasicCard%2FGamblingCard%2FGAMBLER.BAS</id>
	<title>Développement BasicCard/GamblingCard/GAMBLER.BAS - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://air.imag.fr/index.php?action=history&amp;feed=atom&amp;title=D%C3%A9veloppement_BasicCard%2FGamblingCard%2FGAMBLER.BAS"/>
	<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=D%C3%A9veloppement_BasicCard/GamblingCard/GAMBLER.BAS&amp;action=history"/>
	<updated>2026-06-21T10:17:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://air.imag.fr/index.php?title=D%C3%A9veloppement_BasicCard/GamblingCard/GAMBLER.BAS&amp;diff=19754&amp;oldid=prev</id>
		<title>Donsez: Created page with &quot;&lt;source lang=&quot;blitzbasic&quot;&gt; Rem Gambling BasicCard Source Code Rem ------------------------------------------------------------------ Rem Copyright (C) 2002 Didier DONSEZ Rem -...&quot;</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=D%C3%A9veloppement_BasicCard/GamblingCard/GAMBLER.BAS&amp;diff=19754&amp;oldid=prev"/>
		<updated>2014-12-03T14:00:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;source lang=&amp;quot;blitzbasic&amp;quot;&amp;gt; Rem Gambling BasicCard Source Code Rem ------------------------------------------------------------------ Rem Copyright (C) 2002 Didier DONSEZ Rem -...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;blitzbasic&amp;quot;&amp;gt;&lt;br /&gt;
Rem Gambling BasicCard Source Code&lt;br /&gt;
Rem ------------------------------------------------------------------&lt;br /&gt;
Rem Copyright (C) 2002 Didier DONSEZ&lt;br /&gt;
Rem ------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Rem  GAMBLING CARD&lt;br /&gt;
&lt;br /&gt;
Rem  Bet program for the Gambling Card&lt;br /&gt;
&lt;br /&gt;
Option Explicit&lt;br /&gt;
Option Base Explicit&lt;br /&gt;
&lt;br /&gt;
#Include GAMBLING.DEF &amp;#039; Declarations common to BasicCard and Terminal programs&lt;br /&gt;
rem #Include DEALER.KEY&lt;br /&gt;
&lt;br /&gt;
#Include CARDUTIL.DEF&lt;br /&gt;
#Include COMMERR.DEF&lt;br /&gt;
#Include COLOURS.DEF&lt;br /&gt;
&lt;br /&gt;
Open Log File &amp;quot;Gambler.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Call WaitForCard()&lt;br /&gt;
ResetCard : Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
Rem  Check that the application name is correct&lt;br /&gt;
Private Name$ : Call GetApplicationID (Name$) : Call CheckSW1SW2()&lt;br /&gt;
If Name$ &amp;lt;&amp;gt; ApplicationName$ Then Print &amp;quot;This is not a ePurse Card!&amp;quot; : Exit&lt;br /&gt;
&lt;br /&gt;
Rem  Display the card data&lt;br /&gt;
&lt;br /&gt;
Private Amount&amp;amp;, PINCount&lt;br /&gt;
Call GetCardData (Amount&amp;amp;, PINCount, Name$)&lt;br /&gt;
If SW1SW2 = swNotPersonalised Then Print &amp;quot;Card has not been personalised&amp;quot;: Exit&lt;br /&gt;
Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
Call GetBalance(Amount&amp;amp;)&lt;br /&gt;
If SW1SW2 = swNotPersonalised Then Print &amp;quot;Card has not been personalised&amp;quot;: Exit&lt;br /&gt;
Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FgCol = Cyan: Print &amp;quot;Customer: &amp;quot; ; : FgCol = BrightYellow: Print Name$&lt;br /&gt;
FgCol = Cyan: Print &amp;quot;Balance: &amp;quot;;&lt;br /&gt;
FgCol = BrightYellow: Print Str$ (Amount&amp;amp; / 100) &amp;quot;.&amp;quot; ;&lt;br /&gt;
If Amount&amp;amp; Mod 100 &amp;lt; 10 Then Print &amp;quot;0&amp;quot; ;&lt;br /&gt;
Print Str$ (Amount&amp;amp; Mod 100)&lt;br /&gt;
&lt;br /&gt;
Rem  Try automatic algorithm selection first:&lt;br /&gt;
Rem Call StartEncryption (P1=0, P2=1, Rnd)&lt;br /&gt;
Rem If SW1SW2 = swUnknownAlgorithm Then&lt;br /&gt;
  Rem  That didn&amp;#039;t work, so it must be a Compact BasicCard:&lt;br /&gt;
  Rem Call StartEncryption (P1=&amp;amp;H12, P2=1, Rnd)&lt;br /&gt;
Rem End If&lt;br /&gt;
Rem Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
Rem  Verify the PIN&lt;br /&gt;
&lt;br /&gt;
Private PIN$&lt;br /&gt;
Do &amp;#039; PIN attempts&lt;br /&gt;
  PIN$ = &amp;quot;&amp;quot;&lt;br /&gt;
  FgCol = Cyan: Print &amp;quot;Enter PIN (Esc to abort): &amp;quot; ;&lt;br /&gt;
  FgCol = BrightYellow&lt;br /&gt;
  Do &amp;#039; Keys pressed&lt;br /&gt;
    Private Key$&lt;br /&gt;
    Key$ = InKey$&lt;br /&gt;
    Select Case Key$&lt;br /&gt;
&lt;br /&gt;
      Case Chr$ (27) : Print : Exit &amp;#039; Esc&lt;br /&gt;
&lt;br /&gt;
      Case Chr$ (13) &amp;#039; Enter&lt;br /&gt;
        If Len (PIN$) = 4 Then Print: Exit Do &amp;#039; Exit Keys pressed loop&lt;br /&gt;
&lt;br /&gt;
      Case Chr$ (8) &amp;#039; Backspace&lt;br /&gt;
        If Len (PIN$) &amp;lt;&amp;gt; 0 Then&lt;br /&gt;
          PIN$ = Left$ (PIN$, Len (PIN$) - 1)&lt;br /&gt;
          CursorX = CursorX - 1&lt;br /&gt;
          Print &amp;quot; &amp;quot; ;&lt;br /&gt;
          CursorX = CursorX - 1&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
      Case Else&lt;br /&gt;
        If Len (Key$) = 1 And Len (PIN$) &amp;lt;&amp;gt; 4 Then&lt;br /&gt;
          Print &amp;quot;*&amp;quot; ;&lt;br /&gt;
          PIN$ = PIN$ + Key$&lt;br /&gt;
        End If&lt;br /&gt;
&lt;br /&gt;
    End Select&lt;br /&gt;
  Loop &amp;#039; Keys pressed&lt;br /&gt;
&lt;br /&gt;
Call VerifyPIN (PIN$)&lt;br /&gt;
Select Case SW1SW2&lt;br /&gt;
  Case swPINErrorsExceeded : Print &amp;quot;Too many PIN errors - card disabled&amp;quot; : Exit&lt;br /&gt;
  Case swInvalidPIN: Print &amp;quot;Invalid PIN&amp;quot;&lt;br /&gt;
  Case Else : Call CheckSW1SW2() : Exit Do &amp;#039; Exit PIN attempts loop&lt;br /&gt;
End Select&lt;br /&gt;
&lt;br /&gt;
Loop &amp;#039; PIN attempts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do &amp;#039;  Get the action to perform&lt;br /&gt;
&lt;br /&gt;
FgCol = Cyan: Print &amp;quot;Action (e.g. ! or +50 or -10.25 or *10 or pileface or goldrush or exit): &amp;quot; ;&lt;br /&gt;
Private Action$, Len@&lt;br /&gt;
Private LastAction$=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FgCol = BrightYellow: Line Input Action$&lt;br /&gt;
Action$ = Trim$ (Action$) &amp;#039; Remove leading and trailing spaces&lt;br /&gt;
&lt;br /&gt;
If Action$ = &amp;quot;!&amp;quot; Then&lt;br /&gt;
    Action$=LastAction$&lt;br /&gt;
Else&lt;br /&gt;
    LastAction$=Action$&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
Select Case Left$ (Action$, 1)&lt;br /&gt;
&lt;br /&gt;
  Case &amp;quot;+&amp;quot;&lt;br /&gt;
    Rem Credit&lt;br /&gt;
    Amount&amp;amp; = (100 * Val! (Mid$ (Action$, 2), Len@)) + 0.5&lt;br /&gt;
    Call IncreaseAmount (Amount&amp;amp;) : Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
  Case &amp;quot;-&amp;quot;&lt;br /&gt;
    Rem Debit&lt;br /&gt;
    Amount&amp;amp; = (100 * Val! (Mid$ (Action$, 2), Len@)) + 0.5&lt;br /&gt;
    Call DecreaseAmount (Amount&amp;amp;) : Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
  Case &amp;quot;*&amp;quot;&lt;br /&gt;
    Rem Bet&lt;br /&gt;
    Amount&amp;amp; = (100 * Val! (Mid$ (Action$, 2), Len@)) + 0.5&lt;br /&gt;
    Call Bet(Amount&amp;amp;) : Call CheckSW1SW2()&lt;br /&gt;
    If Amount&amp;amp; = 0 Then&lt;br /&gt;
        FgCol = BrightRed: Print &amp;quot;Loss: &amp;quot;;&lt;br /&gt;
    Else&lt;br /&gt;
        FgCol = BrightRed: Print &amp;quot;Win : &amp;quot;;&lt;br /&gt;
        FgCol = BrightYellow: Print Str$ (Amount&amp;amp; / 100) &amp;quot;.&amp;quot; ;&lt;br /&gt;
        If Amount&amp;amp; Mod 100 &amp;lt; 10 Then Print &amp;quot;0&amp;quot; ;&lt;br /&gt;
        Print Str$ (Amount&amp;amp; Mod 100)&lt;br /&gt;
    End If&lt;br /&gt;
&lt;br /&gt;
  Case &amp;quot;p&amp;quot;&lt;br /&gt;
    Rem SetWinnings and SetBounds for Pile ou Face (0 or 2)&lt;br /&gt;
    Call SetWinnings(2,0,2,-1,-1,-1,-1,-1,-1,-1,-1) : Call CheckSW1SW2()&lt;br /&gt;
    Call SetBounds(2,2,4,-1,-1,-1,-1,-1,-1,-1,-1) : Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
  Case &amp;quot;g&amp;quot;&lt;br /&gt;
    Rem SetWinnings and SetBounds for Gold Rush (0 or 2 or 5)&lt;br /&gt;
    Call SetWinnings(3,0,2,5,-1,-1,-1,-1,-1,-1,-1) : Call CheckSW1SW2()&lt;br /&gt;
    Call SetBounds(3,6,8,9,-1,-1,-1,-1,-1,-1,-1) : Call CheckSW1SW2()&lt;br /&gt;
&lt;br /&gt;
  Case &amp;quot;e&amp;quot;&lt;br /&gt;
    Rem Exit&lt;br /&gt;
    Exit Do&lt;br /&gt;
&lt;br /&gt;
  Case Else&lt;br /&gt;
    FgCol = BrightRed: Print &amp;quot;Invalid action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Select&lt;br /&gt;
&lt;br /&gt;
Close Log File&lt;br /&gt;
&lt;br /&gt;
Call GetBalance(Amount&amp;amp;)&lt;br /&gt;
FgCol = Cyan: Print &amp;quot;Balance: &amp;quot;;&lt;br /&gt;
FgCol = BrightYellow: Print Str$ (Amount&amp;amp; / 100) &amp;quot;.&amp;quot; ;&lt;br /&gt;
If Amount&amp;amp; Mod 100 &amp;lt; 10 Then Print &amp;quot;0&amp;quot; ;&lt;br /&gt;
Print Str$ (Amount&amp;amp; Mod 100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loop &amp;#039; Action&lt;br /&gt;
&lt;br /&gt;
REM Didier : End Encrytion is missing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Donsez</name></author>
	</entry>
</feed>