Seite 1 von 1

Boersenalarm 2.0.1

Verfasst: Freitag 27. Mai 2005, 20:19
von Iopodx
Hiho,

hab mal die 2. Version meines Spiels "Börsenalarm" released. Ich weiß jedenfalls nicht ob ich schon die 1.Version gepostet habe, jedenfalls ist diese realistischer, und ich denke einfacher in der GUI. Und - ganz wichtig - mit wenigstens einer Klasse!

MfG
Iopodx

Konstruktive Kritik erwünscht!

Code: Alles auswählen

# -*- coding: cp1252 -*-
from random import randint
from Tkinter import *
from time import sleep

class go:
    def __call__(self):
        self.version="2.0.3"
        self.start_money=200
        self.aktien=[["Deutsche Post", 10.0, 6.0, 0], ["DHL", 20.0, 4.0, 0], ["Audi", 40.0, 6.0, 0], ["Deutsche Bank", 25.0, 8.0, 0]]
        self.root=Tk()
        self.root.title("Boerseanalarm "+self.version+" by Iopodx")

        Label(text="Kaufen").grid(row=0, column=0)
        Label(text="Verkaufen").grid(row=0, column=1)
        
        self.buyButtons=[]
        self.sellButtons=[]
        self.countLabels=[]

        self.endYear=6

        self.money=self.start_money

        self.Monat=1
        self.Jahr=0

        self.calc_new_price()
        for i in range(0, len(self.aktien)):
            self.buyButtons.append(Button(self.root, text=self.aktien[i][0]+(" "*(15-len(self.aktien[i][0])))+str(self.aktien[i][1]), width=20,
                                   command=lambda x=i:self.buy(x)))
            self.buyButtons[i].grid(row=i+1, column=0)
            self.sellButtons.append(Button(self.root, text=self.aktien[i][0]+(" "*(15-len(self.aktien[i][0])))+str(self.aktien[i][1]), width=20,
                                    command=lambda x=i:self.sell(x)))
            self.sellButtons[i].grid(row=i+1, column=1)

            self.countLabels.append(Label(self.root, text=self.aktien[i][3]))
            self.countLabels[i].grid(row=i+1, column=2)

        self.moneyLabel=Label(text=str(self.money)+" Euro")
        self.moneyLabel.grid(row=i+4, column=0)

        self.JahrLabel=Label(text="Jahr: "+str(self.Jahr))
        self.MonatLabel=Label(text="Monat: "+str(self.Monat))
        self.JahrLabel.grid(row=i+6, column=0)
        self.MonatLabel.grid(row=i+5, column=0)

        self.nextMonthButton=Button(self.root, text="Nächster Monat", command=self.next_month)
        self.nextMonthButton.grid(row=i+2, column=0)

        return self.root

    def calc_new_price(self):
        for i in range(0, len(self.aktien)):
            self.aktien[i][1]=float("%0.2f" % (self.aktien[i][1]*(1+randint(self.aktien[i][2]*-1, self.aktien[i][2])/100.0)))

    def buy(self, aktie):
        if self.money>=self.aktien[aktie][1]:
            self.aktien[aktie][3]+=1
            self.money=self.money-self.aktien[aktie][1]
            self.moneyLabel["text"]=str(self.money)+" Euro"
            self.countLabels[aktie]["text"]=self.aktien[aktie][3]

    def sell(self, aktie):
        if self.aktien[aktie][3]>0:
            self.aktien[aktie][3]-=1
            self.money=self.money+self.aktien[aktie][1]
            self.moneyLabel["text"]=str(self.money)+" Euro"
            self.countLabels[aktie]["text"]=self.aktien[aktie][3]

    def next_month(self):
        if self.Jahr>=self.endYear:
            for i in range(0, len(self.aktien)):
                self.buyButtons[i]["state"]=DISABLED
                self.sellButtons[i]["state"]=DISABLED
            self.nextMonthButton["state"]=DISABLED
            self.root.update()
            sleep(5)
            self.root.quit()
            self.root.destroy()
            newgame()
        self.Monat+=1
        if self.Monat==12:
            self.Jahr+=1
            self.Monat=1
        self.calc_new_price()
        for i in range(0, len(self.aktien)):
            self.buyButtons[i]["text"]=self.aktien[i][0]+(" "*(15-len(self.aktien[i][0])))+str(self.aktien[i][1])
            self.sellButtons[i]["text"]=self.aktien[i][0]+(" "*(15-len(self.aktien[i][0])))+str(self.aktien[i][1])

        self.MonatLabel["text"]="Monat: "+str(self.Monat)
        self.JahrLabel["text"]="Jahr: "+str(self.Jahr)

def newgame():
    root=go()()
    root.minsize(400, 300)
    root.mainloop()

newgame()

Verfasst: Freitag 27. Mai 2005, 21:11
von mawe
Hi!
lopodx hat geschrieben: Konstruktive Kritik erwünscht!
Na gut: Verwende NICHT place. Es ist furchtbar unflexibel. Ausserdem überschneiden sich die einzelnen Widgets (bei mir jedenfalls). Hier wäre grid viel besser.

Gruß, mawe

Verfasst: Samstag 28. Mai 2005, 09:09
von Iopodx
Danke!

Überschnitten haben sich die widgets bei mir zwar nicht, aber es ist doch deutlich einfacher mit grid. Habs mal editiert ;)

:)

MfG
Iopodx