MASTERMIND in PYTHON wx das wärs doch

Du hast eine Idee für ein Projekt?
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

MASTERMIND in PYTHON wx das wärs doch

Beitragvon sea-live » Sonntag 6. April 2008, 17:38

Servus Leute

Mastermind gibt es in Java so um die 50verschiedene
geht sowas auch in Python

für pygame gibts hier was
http://paste.pocoo.org/show/39314/
BUGFIX!!!!!!10.4.08

screeenshot
Bild

VIEL SPASS !
Zuletzt geändert von sea-live am Samstag 12. April 2008, 16:54, insgesamt 4-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: MASTERMIND in PYTHON wx das wärs doch

Beitragvon Leonidas » Sonntag 6. April 2008, 17:45

sea-live hat geschrieben:Mastermind gibt es in Java so um die 50verschiedene
geht sowas auch in Python

Natürlich, warum auch nicht. In der Wikipedia stehen ein paar Fakten dazu und es ist problemlos zu programmieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Sonntag 6. April 2008, 17:47

Nein, Python ist für dermaßen komplexe Projekte nicht geeignet, es sei denn, man integriert JavaScript und lässt Code durch XML und XSLT erstellen.




Natürlich gehts in Python..blöde Frage. Du willst dir PyGame anschaun.
BlackJack

Beitragvon BlackJack » Sonntag 6. April 2008, 18:32

Zu dem Thema fällt mir spontan das hier ein: Matermind verkehrt. Da ist auch ein wenig Python-Code zu finden.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 7. April 2008, 08:17

Danke erst mal für die tollen Tipps
ich werde mich mal dem Problem annehmen

mal sehn ob da was zu machen ist
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 7. April 2008, 13:17

so der erste teil steht es läuft auch schon so zu 10Prozent

kann man den code auch vereinfachen

Code: Alles auswählen

        if pos[0] > 25 and pos[0] < 60 and pos[1] > 150 and pos[1] < 190 :
                Pin(screen,farben[0])
        if pos[0] > 80 and pos[0] < 120 and pos[1] > 150 and pos[1] < 190 :
                Pin(screen,farben[1])
        if pos[0] > 25 and pos[0] < 60 and pos[1] > 200 and pos[1] < 240 :
                Pin(screen,farben[2])
        if pos[0] > 80 and pos[0] < 120 and pos[1] > 200 and pos[1] < 240 :
                Pin(screen,farben[3])
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Montag 7. April 2008, 14:11

Ja, du kannst zunjächst die Bedingungen noch etwas umschreiben:

Code: Alles auswählen

pos[0] > 25 and pos[0] < 60
#zu
25 <pos[0] < 60


Außerdem kommen alle Bedingungen zweimal vor, also bestimmst du diese einfach einmal und packst sie in eine Variable:

Code: Alles auswählen

s1 = 25 < pos[0] < 60
s2 = 150 < pos[1] < 190
s3 = 80 < pos[0] < 120
s4 = 200 < pos[1] < 240

if s1 and s2:
    Pin(screen,farben[0])
if s3 and s2:
    Pin(screen,farben[1])
if s1 and s4:
    Pin(screen,farben[2])
if s3 and s4:
    Pin(screen,farben[3])


Eventuell kannst du noch ein wenig mit else und elif zusammenfassen, oder das ganze in eine Funktion "get_color_id" zusammenfassen und dann so aufrufen:

Code: Alles auswählen

Pin(screen, farben[get_color_id(pos)])


Du musst dann lediglich die default-Farbe mit berücksichtigen.
BlackJack

Beitragvon BlackJack » Montag 7. April 2008, 14:20

Code: Alles auswählen

    koordinaten = [((25, 60), (150, 190)),
                   ((80, 120), (150, 190)),
                   ((25, 60), (200, 240)),
                   ((80, 120), (150, 190))]

    for farbe, ((x_low, x_high), (y_low, y_high)) in zip(farben, koordinaten):
        if x_low < x < x_high and y_low < y < y_low:
            Pin(screen, farbe)
            break
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 7. April 2008, 16:14

@BlackJack so läuft das nicht

ohne dein code gehts ! MIT EYDU auch!

code ausgelagert
http://paste.pocoo.org/show/38433/
Zuletzt geändert von sea-live am Montag 7. April 2008, 19:12, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Montag 7. April 2008, 16:57

sea-live hat geschrieben:@BlackJack so läuft das nicht


Naja, das letzte Unterelement der Letzten Koordinate sollte wohl (200, 240) heißen und nicht (150, 190).

@sea-live: Benutze doch bitte Konstanten und verstreu nicht irgendwelche Werte im Quellcode. Außerdem ist da eine Menge Code den man noch zusammenfassen kann.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 7. April 2008, 17:25

EyDu hat geschrieben:
sea-live hat geschrieben:@BlackJack so läuft das nicht


Naja, das letzte Unterelement der Letzten Koordinate sollte wohl (200, 240) heißen und nicht (150, 190).

@sea-live: Benutze doch bitte Konstanten und verstreu nicht irgendwelche Werte im Quellcode. Außerdem ist da eine Menge Code den man noch zusammenfassen kann.


danke

http://paste.pocoo.org/show/38800/

hier mal ein screenshot
Bild
Zuletzt geändert von sea-live am Dienstag 8. April 2008, 18:57, insgesamt 1-mal geändert.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Montag 7. April 2008, 19:07

neues problem

meinewahl = [3,1,7,0]

wi kontroliere ich richtig ob im array eine 7 drin ist oder nicht
wenn keine 7 drin dann Auswerten()
ansonsten weiter

code ausgelagert

http://paste.pocoo.org/show/38433/
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Montag 7. April 2008, 19:14

Code: Alles auswählen

if 7 in meine_liste: do_stuff()
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Montag 7. April 2008, 19:46

Ich darf mir mal einige Kommentare erlauben:

Die ganzen herumfliegenden Zahlen hatte ich ja schon erwähnt. Spätestens in zwei Wochen wirst dur nicht mehr wissen, was diese bedeuten.

Ersetze die *-Importe. Bei dir hilft vielleicht schon ein "import ... as ..."

Konstanten werden nach PEP8 in Großbuchstaben geschrieben und gehören natürlich auch irgendwie dokumentiert/kommentiert.
Zum Einrücken verwende doch bitte pro Block 4 Leerzeichen und keine Tabs oder gar gemische Formen!
Vor und hinter ein Gleichheitszeichen gehören jeweils ein Leerzeichen.
Funktionsnamen werden übrigens mit einem Kleinbuchstaben begonnen: ich_bin_eine_funktion.
Außerdem vermischt du englische und deutsche Bezeichner.

Das Kommentar "globale variablen" ist total überflüssig.

Du arbeitest sehr viel mit copy&paste:

Code: Alles auswählen

pygame.draw.circle(screen, farben[0],(40,170), 20)
pygame.draw.circle(screen, farben[1],(100,170), 20)
pygame.draw.circle(screen, farben[2],(40,220), 20)
pygame.draw.circle(screen, farben[3],(100,220), 20)

#besser als

coords = [(40, 170), (100, 170), ...]
for farbe, coord in zip(farben, coords):
    pygame.draw.circle(screen, farbe, coord, 20)


Deine "Mach"-Funktion ist viel zu lang, da kann man sicher etwas auslagern. Vorallem alles nach dem Kommentar "reihe feststellen" ist viel zu kompliziert:

Code: Alles auswählen

cx = 150 < pos[0] < 250
if cx:
    coords = [(20, 45), (50, 75), ...]
    for index, (x, y) in coords:
        if x < pos[1] < y:
            akt_zeile = index+1


Die Funktion kannst du gleich auslagern und auch auf "spalte festellen" anwenden. Das ist quasi das selbe!

Statt "done = 0" und "done = 1" verwende besser "True" und "False": "done = True".
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 7. April 2008, 19:56

sea-live hat geschrieben:neues problem

Dann erstellt doch einen neuen Thread. Dafür sind sie ja da. Wenn du Fragen an einen Thread hängt dann hilft das weder dir (weil niemand einen Thread liest in dem es laut Topic um Mastermind geht, wenn er nicht dran interessiert ist) noch jemandem anderen (weil in der Suchfunktion dann dieser Thread auftauscht und dort keiner die Antwort auf so eine Frage erwartet).
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder