Boersenalarm 2.0.1

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Freitag 27. Mai 2005, 20:19

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()
Zuletzt geändert von Iopodx am Samstag 28. Mai 2005, 09:10, insgesamt 1-mal geändert.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Freitag 27. Mai 2005, 21:11

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
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Samstag 28. Mai 2005, 09:09

Danke!

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

:)

MfG
Iopodx
Antworten