| 1 |
#CFGamble |
| 2 |
# Todd Mitchell |
| 3 |
#The Python control file for Slot Machines and other such nonsense |
| 4 |
#Please do not put CFPython functions in this file, |
| 5 |
#but rather place these in the calling file (don't ask me why - it just feels right) |
| 6 |
|
| 7 |
import os.path |
| 8 |
import shelve |
| 9 |
import random |
| 10 |
|
| 11 |
import Crossfire |
| 12 |
|
| 13 |
class SlotMachine: |
| 14 |
#sets up the file that holds all the slotmachine jackpots |
| 15 |
#make sure this points to your writable var/crossfire directory |
| 16 |
#you can delete that file to reset all the slotmachine jackpots |
| 17 |
slotfile = os.path.join(Crossfire.LocalDirectory(),'SlotMachine_file') |
| 18 |
slotdb = {} |
| 19 |
def __init__(self,slotname,slotlist,minpot,maxpot): |
| 20 |
slotdb = shelve.open(self.slotfile) |
| 21 |
self.slotname = slotname |
| 22 |
self.slotlist = slotlist |
| 23 |
self.minpot = minpot |
| 24 |
self.maxpot = maxpot |
| 25 |
|
| 26 |
def placebet(self,amount): |
| 27 |
if not self.slotdb.has_key(self.slotname): |
| 28 |
self.slotdb[self.slotname] = self.minpot+amount |
| 29 |
else: |
| 30 |
temp=self.slotdb[self.slotname] |
| 31 |
self.slotdb[self.slotname]=temp+amount |
| 32 |
|
| 33 |
def payoff(self,amount): |
| 34 |
temp=self.slotdb[self.slotname] |
| 35 |
self.slotdb[self.slotname] = temp-amount |
| 36 |
|
| 37 |
def spin(self,slotnum): |
| 38 |
result=[] |
| 39 |
while slotnum >=1: |
| 40 |
r = self.slotlist[random.randint(0,len(self.slotlist)-1)] |
| 41 |
result.append(r) |
| 42 |
slotnum=slotnum-1 |
| 43 |
return result |
| 44 |
|
| 45 |
def checkslot(self): |
| 46 |
limit = self.slotdb[self.slotname] |
| 47 |
if limit >= self.maxpot: |
| 48 |
self.slotdb[self.slotname] = self.maxpot |
| 49 |
elif limit < self.minpot: |
| 50 |
self.slotdb[self.slotname] = self.minpot |
| 51 |
return self.slotdb[self.slotname] |
| 52 |
|