Kniffel Lite mit tkinter

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Hi,
ich hab mir mal zu lernzwecken ein kleines Kniffel-spiel programmiert (ohne strassen und full-house: daher lite 8) ).
Wenn überhaupt ist das wohl nur für andere noobs interessant. Man könnte zb. noch ne highscore hinzufügen (ich hab 76 punkte gemacht :lol: ).
Als nächstes sollte ich mir wohl beibringen kommentare in meinen code zu schreiben :oops:

Code: Alles auswählen

#!/usr/bin/python
from random import randint
from Tkinter import *
import tkMessageBox

def roll():
    global r
    r=r+1
    if r >=4:
        info.configure(text="Schon 3 Versuche!")
    else:
        info.configure(text="Das war Wurf %i" %r)
        for i in range(5):
            if v[i].get() == 0:
                w[i] = randint(1,6)
                ergebnis[i].configure(text=w[i])
            
def nimm(zahl):
    print wert[zahl-1],x
    if wert[zahl-1]!=x:
        info.configure(text="Schon Vergeben")
    else:
        global r,w
        a=0   #summe
        s=0
        for i in range(5):
            v[i].set(0)
        if r!=0:
            for elm in w:
                if elm == zahl:
                    a=a+zahl
            wert[zahl-1]=a
            label[zahl-1].configure(text=wert[zahl-1])
            w = [0,0,0,0,0]
            for i in range(5):
                ergebnis[i].configure(text=w[i])
            info.configure(text="Naechster Wurf!")
        else:
            info.configure(text="Noch nicht gewuerfelt!")
        r=0   #counter
    if not x in wert:
        finish()
        
def finish():
    global x,wert
    z=0
    for e in wert:
        z=z+e
    tkMessageBox.showinfo("Ende","Du hast %i Punkte!" %z) 
    wert = ["x","x","x","x","x","x"]
    for e in range(6):
        label[e].configure(text=wert[e])
    r=0
    info.configure(text="Neues Spiel")
                        
root=Tk()
root.title("Kniffel deluxe lite")
links=Frame(root).grid(row=0,column=0)
rechts=Frame(root).grid(row=0,column=4)

w = [0,0,0,0,0]
v = []
ergebnis = []
hold = []
x="x"
wert = [x,x,x,x,x,x]
label = []
spacer=[]
gesamt=0
r=0

einer=Button(links,text="1er",width=5,command=lambda: nimm(1)).grid(row=0,column=0)
zweier=Button(links,text="2er",width=5,command=lambda: nimm(2)).grid(row=1,column=0)
dreier=Button(links,text="3er",width=5,command=lambda: nimm(3)).grid(row=2,column=0)
vierer=Button(links,text="4er",width=5,command=lambda: nimm(4)).grid(row=3,column=0)
fuenfer=Button(links,text="5er",width=5,command=lambda: nimm(5)).grid(row=4,column=0)
sechser=Button(links,text="6er",width=5,command=lambda: nimm(6)).grid(row=5,column=0)

for ro in range(4,10):
    label.append(Label(links,text=wert[ro-4],width=5))
    label[-1].grid(row=ro-4,column=1)   
    spacer.append(Label(links,text="|",width=5))
    spacer[-1].grid(row=ro-4,column=2)
for col in range(4,9):
    ergebnis.append(Label(rechts,text=w[col-4],width=8))
    ergebnis[-1].grid(row=0,column=col)
    v.append(IntVar())
    hold.append(Checkbutton(rechts,variable=v[-1]))
    hold[-1].grid(row=1,column=col)
    
tkMessageBox.showinfo("Start","""Es darf 3 mal gewuerfelt werden.
Markierte Wuerfel bleiben.
Die linken Buttons zaehlen die entsprechenden Wuerfel aus.
Los gehts!""")

logo=Label(links,text="Kniffel DLX!").grid(row=4,column=4,columnspan=5)
info=Label(links,text="Dann wuerfel mal...")
info.grid(row=2,column=4,columnspan=5)
butroll=Button(root,text="Roll",command=roll,fg="#00ff00",bg="#000000").grid(row=5,column=6)
root.mainloop() 
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Mir wurde gerade mitgeteilt, daß Kniffel ganz anders gespielt wird... :(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mach dir nichts draus, dann hast du halt Kniffel geforkt. Nenns doch Kniffelfork :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten