1 |
root |
1.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 |
|
|
|