#Fuck The Dealer #Version 2.0 #GUI Interface #Visual Player Support with Statistics #8.21.2006 #Coded by: Chris Marshall import random from Tkinter import * import tkMessageBox import tkSimpleDialog class App: def __init__(self, master): frame = Frame(master) frame.grid(rowspan=6,columnspan=12) plhldr = Frame(master,bg="lightblue") plhldr.grid(row=0,column=13,rowspan=6) self.master=master self.label = Label(frame, text="FUCK THE DEALER v2.0",justify=LEFT, font="Courier 35", width=26,height=6, bd=2, anchor=W, relief=SUNKEN, fg="black",bg="red") self.label.grid(row=0,rowspan=5, columnspan=13) self.oneget = Label(frame, bitmap="") self.oneget.grid(row=6,column=9) self.twoget = Label(frame, bitmap="") self.twoget.grid(row=6,column=10) self.threeget = Label(frame, bitmap="") self.threeget.grid(row=6,column=11) self.status = Label(frame, text="Guess a Card...", relief=SUNKEN, fg="blue", font="system 16", bg="white", width=32,anchor=W) self.status.grid(row=6,sticky=W,columnspan=5,pady=5) cardnames=[0,0,"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"] self.cardbuttons=[0,0] i=2 while i<=14: self.cardbuttons.append(Button(frame, text=cardnames[i],height=5,width=8, command=lambda guess=i: self.guess(guess)) ) self.cardbuttons[i].grid(row=7,column=(i-2),sticky=W,padx=1) i+=1 self.deck = Deck(52) self.table=Deck(0) self.turn=0 self.numplayers=tkSimpleDialog.askinteger("Player Setup","How many Players?", initialvalue=4,minvalue=2) self.nd=False self.players = [] i=0 while i < self.numplayers: self.players.append(Player(i)) i+=1 self.playersdisp=[] i=0 while i< self.numplayers: self.playersdisp.append(PlayerCont(plhldr)) self.playersdisp[i].grid(row=i,column=3,sticky=N, pady=3) self.playersdisp[i].playername.config(text=self.players[i].name) i+=1 self.dealer=0 self.gets=0 self.player=1 self.update() self.soctrak=[0,0] i=2 while i <=14: self.soctrak.append(0) i+=1 temp= str(self.players[self.player])+ ", Choose a Card..." self.status.config(text=temp) self.deck.shuffle() def update(self): i=0 while i= len(self.players): self.player=0 if self.player == self.dealer: self.player+=1 self.update() def newdealer(self): if self.gets >=3: self.gets=0 nd=self.dealer print "The current dealer is " + str(self.dealer) + ", " + str(nd) self.player=self.dealer self.dealer+=1 if self.dealer >= len(self.players): self.dealer=0 temp= str(self.players[self.dealer]) + " is now the Dealer." tkMessageBox.showinfo("New Dealer", temp) print "The new dealer is " + str(self.dealer) self.player=nd print "The player is " + str(self.player) self.nd=True self.update() def disablebuttons(self): print "Guessnum is",self.guessnum print "currentcard is",self.currentcard i=self.guessnum if self.guessnum > self.currentcard: print "in" while i<=14: self.cardbuttons[i].config(state=DISABLED) i+=1 if self.guessnum < self.currentcard: while i>=2: self.cardbuttons[i].config(state=DISABLED) i-=1 def guess(self, guess): if self.turn==0: self.currentcard=int(self.deck.cards[0].value) self.guessnum=guess print self.turn print self.currentcard print guess self.soctrak[self.currentcard]+=1 if guess < self.currentcard: self.status.config(text="Higher!") self.turn=1 self.disablebuttons() elif guess > self.currentcard: self.status.config(text="Lower!") self.turn=1 self.disablebuttons() elif guess == self.currentcard: temp="Right, " + str(self.players[self.player]) + "!!!\t" + str(self.players[self.dealer]) + " drinks 10!!" self.status.config(text=temp) self.players[self.dealer].drinks+=10 self.players[self.player].fucks+=1 self.gets=0 self.endturn() elif self.turn==1: print self.turn print self.currentcard print guess if guess == self.currentcard: temp="Right, " + str(self.players[self.player]) + "!!!\t" + str(self.players[self.dealer]) + " drinks 5!!" self.status.config(text=temp) self.gets=0 print "fiver" self.players[self.dealer].drinks+=5 self.players[self.player].fucks+=1 self.endturn() else: self.drinks = abs(guess-self.currentcard) self.players[self.player].drinks+=self.drinks temp="Wrong! " + str(self.players[self.player]) + " drink " + str(self.drinks) + "!!" self.status.config(text=temp) self.gets+=1 self.endturn() def endturn(self): self.players[self.player].turns+=1 self.turn=0 self.newdealer() print "gets = " + str(self.gets) if self.gets>=1: self.oneget.config(bg="red") self.oneget.config(bitmap="questhead") if self.gets>=2: self.twoget.config(bg="red") self.twoget.config(bitmap="questhead") if self.gets==0: print "clear heads" self.oneget.config(bg="lightgrey") self.oneget.config(bitmap="") self.twoget.config(bg="lightgrey") self.twoget.config(bitmap="") if self.nd==False: self.nextplayer() self.nd=False self.enablebuttons() i=2 pluralstr="s" #print self.soctrak while i < len(self.soctrak)-1: #print self.soctrak[i] if self.soctrak[i]==4: if self.soctrak[i]==6: pluralstr="es" #print "hmmm" temp= str(self.deck.cards[0]) + pluralstr + " are done!\nEVERYBODY DRINK 1!!" tkMessageBox.showwarning("Social",temp) self.soctrak[i]+=1 i+=1 self.give() self.label.config(text=str(self.table)) def enablebuttons(self): print "enable" i=2 while i<= 14: self.cardbuttons[i].config(state=NORMAL) i+=1 i=2 while i<=14: if self.soctrak[i] >= 4: self.cardbuttons[i].config(state=DISABLED) i+=1 def give(self): self.table.cards.append(self.deck.cards.pop(0)) class Player: def __init__(self,i): self.drinks=0 self.fucks=0 self.turns=0 temp = "Please enter Player " + str(i+1) + "'s Name:" self.name=tkSimpleDialog.askstring("Player Setup", temp) def printstats(self): temp = str(self.drinks) + " drinks "+ str(self.fucks) + "/" + str(self.turns) return temp def __str__(self): return self.name class PlayerCont(Frame): def __init__(self,master): Frame.__init__(self,master,class_="PlayerCont", bg="blue",bd=2, relief=GROOVE,width=30) self.playername = Label(self, text="Chris", font="Arial 12", fg="white",bg = "black") self.playername.grid(row=0,pady=3,sticky=W) drinks,gets,turns=0,0,0 temp = str(drinks) + " drinks \t\t" + str(gets) + "/" + str(turns) self.playerstats = Label(self, text=temp, font=("comic sans", "10"),fg = "black", bg="white") self.playerstats.grid(row=1,sticky=E) class Card: "defines the value and string for each card" def __init__(self, number): self.value=number def __str__(self): if self.value==2: return "Deuce" if self.value==3: return "Three" if self.value==4: return "Four" if self.value==5: return "Five" if self.value==6: return "Six" if self.value==7: return "Seven" if self.value==8: return "Eight" if self.value==9: return "Nine" if self.value==10: return "Ten" if self.value==11: return "Jack" if self.value==12: return "Queen" if self.value==13: return "King" if self.value==14: return "Ace" class Deck: "holds list of 52 calss Card types, has methods for shuffling and printing" def __init__(self,size): #self.deuces=0 #self.threes=0 #self.fours=0 #self.fives=0 #self.sixes=0 #self.sevens=0 #self.eights=0 #self.nines=0 #self.tens=0 #self.jacks=0 #self.queens=0 #self.kings=0 #self.aces=0 self.cards=[] i=0 iii=2 while i=i: temp+="2 " else: temp+=" " if threes==4: temp+="X " elif threes>=i: temp+="3 " else: temp+=" " if fours==4: temp+="X " elif fours>=i: temp+="4 " else: temp+=" " if fives==4: temp+="X " elif fives>=i: temp+="5 " else: temp+=" " if sixes==4: temp+="X " elif sixes>=i: temp+="6 " else: temp+=" " if sevens==4: temp+="X " elif sevens>=i: temp+="7 " else: temp+=" " if eights==4: temp+="X " elif eights>=i: temp+="8 " else: temp+=" " if nines==4: temp+="X " elif nines>=i: temp+="9 " else: temp+=" " if tens==4: temp+="X " elif tens>=i: temp+="10 " else: temp+=" " if jacks==4: temp+="X " elif jacks>=i: temp+="J " else: temp+=" " if queens==4: temp+="X " elif queens>=i: temp+="Q " else: temp+=" " if kings==4: temp+="X " elif kings>=i: temp+="K " else: temp+=" " if aces==4: temp+="X " elif aces>=i: temp+="A" else: temp+=" " temp+="\n" i+=1 return temp def switch(self,a,b): temp = self.cards[a] self.cards[a]=self.cards[b] self.cards[b]=temp def shuffle(self): i,j=0,random.randint(51,90) print "Shuffling\n" while i < j: self.switch(random.randint(0,51),random.randint(0,51)) i+=1 root = Tk() app = App(root) #game=Game() root.mainloop()