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

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

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

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

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

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: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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

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

@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: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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

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

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

Code: Alles auswählen

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

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".
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

so ich hab mal ein ergebniss
hier zufinden
es läuft ist aber noch mit einem bug bei der farbeninfo
keinen schimmer warumm

!! Noch nicht !!!

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

BUGFIX !!!

screenshot
Bild
Zuletzt geändert von sea-live am Donnerstag 10. April 2008, 15:55, insgesamt 4-mal geändert.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Sagt dir....MVC irgendwas?
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

audax hat geschrieben:Sagt dir....MVC irgendwas?
NEIN mal googlen
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

audax hat geschrieben:Sagt dir....MVC irgendwas?
Klugscheisser ... wenigstens die Wikipedia-Referrenz zu MVC hättest du linken können.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

vorläufiges endergebniss

http://paste.pocoo.org/show/39314/
BUGFIX!!!

viel spass
Zuletzt geändert von sea-live am Donnerstag 10. April 2008, 15:55, insgesamt 2-mal geändert.
Antworten