52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
#CFGamble
|
|
# Todd Mitchell
|
|
#The Python control file for Slot Machines and other such nonsense
|
|
#Please do not put CFPython functions in this file,
|
|
#but rather place these in the calling file (don't ask me why - it just feels right)
|
|
|
|
import os.path
|
|
import shelve
|
|
import random
|
|
|
|
import Crossfire
|
|
|
|
class SlotMachine:
|
|
#sets up the file that holds all the slotmachine jackpots
|
|
#make sure this points to your writable var/crossfire directory
|
|
#you can delete that file to reset all the slotmachine jackpots
|
|
slotfile = os.path.join(Crossfire.LocalDirectory(),'SlotMachine_file')
|
|
slotdb = {}
|
|
def __init__(self,slotname,slotlist,minpot,maxpot):
|
|
slotdb = shelve.open(self.slotfile)
|
|
self.slotname = slotname
|
|
self.slotlist = slotlist
|
|
self.minpot = minpot
|
|
self.maxpot = maxpot
|
|
|
|
def placebet(self,amount):
|
|
if self.slotname not in self.slotdb:
|
|
self.slotdb[self.slotname] = self.minpot+amount
|
|
else:
|
|
temp=self.slotdb[self.slotname]
|
|
self.slotdb[self.slotname]=temp+amount
|
|
|
|
def payoff(self,amount):
|
|
temp=self.slotdb[self.slotname]
|
|
self.slotdb[self.slotname] = temp-amount
|
|
|
|
def spin(self,slotnum):
|
|
result=[]
|
|
while slotnum >=1:
|
|
r = self.slotlist[random.randint(0,len(self.slotlist)-1)]
|
|
result.append(r)
|
|
slotnum=slotnum-1
|
|
return result
|
|
|
|
def checkslot(self):
|
|
limit = self.slotdb[self.slotname]
|
|
if limit >= self.maxpot:
|
|
self.slotdb[self.slotname] = self.maxpot
|
|
elif limit < self.minpot:
|
|
self.slotdb[self.slotname] = self.minpot
|
|
return self.slotdb[self.slotname]
|