Warum geht es nicht mit continue? Aber auch aktion wieder auf 0 setzen.
Die Diskussion mit input gab es jetzt bereits wiederholt. Also wohl besser raw_input und Vergleich mit '1'.
MfG
HWK
verdammt, ich kapier es einfach nicht
Hallo derkai
So wie ich den Logik-Modultest durchführen würde. Hier den Code-Snippet krass modifiziert:
Gruss wuf
So wie ich den Logik-Modultest durchführen würde. Hier den Code-Snippet krass modifiziert:
Code: Alles auswählen
# Scriptname : panzer_logic_01.py
# Autor : Kai the Commander
# Erstellt : 12.08.2008
# Geaendert : 12.08.2008
import sys
from funktionen import nachbardic
class Panzer (object) :
def __init__ (self, name, gehen, laufen, position, ausrichtung) :
self.name = name
self.gehen = gehen
self.laufen = laufen
self.position = position
self.ausrichtung = ausrichtung
def eigene_bewegung(self, aktion) :
if aktion == 1 :
self.ausrichtung -= 1
if self.ausrichtung < 0 : self.ausrichtung = 5
elif aktion == 2 :
self.ausrichtung += 1
if self.ausrichtung > 5 : self.ausrichtung = 0
elif aktion == 3 :
zwischenspeicher = self.position
self.position = nachbardic[self.position][self.ausrichtung]
x = self.position[0]
y = self.position[1]
if x == 0 or y == 0 :
print "ungueltig"
self.position = zwischenspeicher
#--- MODUL-TEST --------------------------------------------------------------#
if __name__ == "__main__":
#~~ Prolog
print
print "****** Modul-Test (panzer_logic.py) ******"
print
#---- Test-Funktionen ----#
def test_ausgabe():
"""Ausgabe der Modul-Attribute"""
print
print "----------- Test-Ausgabe -------------------"
print "Panzername :", panzer.name
print "Ausrichtung :", panzer.ausrichtung
print "Position :", panzer.position
print "Gehen :", panzer.gehen
print "Laufen :", panzer.laufen
print "--------------------------------------------"
print
#---- Test ----#
#~~ Ausgangswerte
position = (1,1)
ausrichtung = 1
# Instanz Panzer
panzer = Panzer(name="Rasputin", gehen="schnell", laufen='Vorwaerts Marsch',
position=position, ausrichtung=ausrichtung)
while True :
aktion = input("Aktionen: 1,2,3 und 100 ? ")
if aktion == 100:
#~~ Abbruch oder Neubanfang
abschlusswunsch = input("zufrieden ? : ")
if abschlusswunsch:
#~~ Ausgabe der Modul-Attribute
test_ausgabe()
print "Ende der Modultest's"
print
#~~ Beende Modultest
sys.exit(0)
else:
print "Sie waren nicht zufrieden, bitte ziehen Sie erneut"
#~~ Setze Panzer auf Anfangsposition
panzer.positon = position
panzer.ausrichtug = ausrichtung
if 0 < aktion <= 3:
# Modul-Test Bewegung
panzer.eigene_bewegung(aktion)
#~~ Ausgabe der Modul-Attribute
test_ausgabe()
Take it easy Mates!
Nichts. Die letzte Zeile ist überflüssig bzw. sie verhindert gerade, dass "der wieder nach oben springt", weil die Schleife damit verlassen wird. An der Stelle endet ja der Schleifenrumpf - schreibst du da nichts hin, dreht die Schleife ihre nächste Runde ...derkai hat geschrieben:ja, aber was kommt da sonst hin. Wie geht es sonst ?
mit break geht es nicht, mit continue geht es nicht.
ohne etwas geht es noch viel weniger.
Was muss man denn schreiben, damit der wieder nach oben sprint ?
Naja, und wenn du da unbedingt was stehen haben willst, dann nimm halt ein "pass" ...
so, ich schon wieder ...
ich plane gerade meinen nächsten Schritte und dabei bermekre ich sooo langsam, was ihr alle dameit meint strukturierter vorgehen zu müssen.
In irgend einem meiner Bücker hatte ich über ein Software Tool gelesen, dass einem bei der Planung (nicht programmierung) helfen kann.
Kennt Ihr so etwas ? .. ich finde es einfach nicht wieder
Kai
ich plane gerade meinen nächsten Schritte und dabei bermekre ich sooo langsam, was ihr alle dameit meint strukturierter vorgehen zu müssen.
In irgend einem meiner Bücker hatte ich über ein Software Tool gelesen, dass einem bei der Planung (nicht programmierung) helfen kann.
Kennt Ihr so etwas ? .. ich finde es einfach nicht wieder
Kai
imac
20 Zoll
2,4 ghz
20 Zoll
2,4 ghz
Das ist aber Hardware, es wurde nach Software gefragt.
Aber ich stimme zu; Papier und Bleistift sind Werkzeuge, die man nicht unterschätzen sollte.
Aber ich stimme zu; Papier und Bleistift sind Werkzeuge, die man nicht unterschätzen sollte.
Endlich .... !ich plane gerade meinen nächsten Schritte und dabei bermekre ich sooo langsam, was ihr alle dameit meint strukturierter vorgehen zu müssen.
Als Tool meintest Du vielleicht UML,
aber im Moment plaediere ich
auch fuer Papier, Bleistift und Hirn.
yipyip
Hallo BlackJack
Ich habe eine Frage zu deine damals präsentierten Code-Snippet. Es betrifft folgende Zeilen:
Was ist deine Absicht bei der Initialisierung des Tile-Arrays die gleiche Objekt-Referenz zu nehmen und nicht für jedes Tile eine neue? Wenn ich das Attribut 'name' eines Tile-Objektes ändere wirkt sich diese Änderung auf alle Tile-Objekte aus.
Gruss wuf
Ich habe eine Frage zu deine damals präsentierten Code-Snippet. Es betrifft folgende Zeilen:
Code: Alles auswählen
def __init__(self, width, height, tile=DESERT):
self.tiles = [[tile] * width for dummy in xrange(height)]
Gruss wuf
Take it easy Mates!
Hallo yipyip
Sorry habe ich schlicht übersehen. Du meinst die Tread-Struktur des Forums ist nicht ideal für vielseitige Beiträge.
Ich glaube jeder Seitenwechsel in diesemTread erhöht den Aufrufzähler automatisch.
@BlackJack habe den Tread mit deiner Bezugnahme zu meiner letzten Frage gefunden:
http://www.python-forum.de/topic-15264,135.html
Gruss wuf
Sorry habe ich schlicht übersehen. Du meinst die Tread-Struktur des Forums ist nicht ideal für vielseitige Beiträge.
Ich glaube jeder Seitenwechsel in diesemTread erhöht den Aufrufzähler automatisch.
@BlackJack habe den Tread mit deiner Bezugnahme zu meiner letzten Frage gefunden:
http://www.python-forum.de/topic-15264,135.html
Gruss wuf
Zuletzt geändert von wuf am Freitag 15. August 2008, 14:49, insgesamt 1-mal geändert.
Take it easy Mates!
Hallo Forumfreunde
Habe anhand des Code-Snippet von 'BlackJack' und Anregungen von 'yipyip' betreffs Nachbarfeld-Ermittlung ein 'map_logic' Modul mit Testmöglichkeiten für Konsole-Ausgabe zusammengestellt. Vielleicht habt ihr hierzu Verbesserungs- oder Optimierungs-Vorschläge.
[Code ausgelagert]
Gruss wuf
Habe anhand des Code-Snippet von 'BlackJack' und Anregungen von 'yipyip' betreffs Nachbarfeld-Ermittlung ein 'map_logic' Modul mit Testmöglichkeiten für Konsole-Ausgabe zusammengestellt. Vielleicht habt ihr hierzu Verbesserungs- oder Optimierungs-Vorschläge.
[Code ausgelagert]
Gruss wuf
Take it easy Mates!
ich wollte jetzt zumindest einmal probieren, ob meine Ideen in einer
eigenständigen GUI Umgebung umsetzbar sind. Und was soll ich sagen -
ich hänge wieder einmal fest.
Ich bekomme es einfach nicht hin, dass die Scrollbar beweglich ist,
Dafür sollen zwei Command Anweisungen verantwortlich sein.
xscrollcommand=SCROLLBAR.set und
command=FENSTER.xview
Aber egal wo ich die Einbaue - es geht nicht.
Würdet Ihr mir mal helfen ? und sagen wo ich welchen Befehl ergänzen muss ???
Danke
Kai
eigenständigen GUI Umgebung umsetzbar sind. Und was soll ich sagen -
ich hänge wieder einmal fest.
Code: Alles auswählen
from Tkinter import *
from funktionen import *
#Hauptfenster erzeugen
spiel = Tk()
spiel.config(width=1024,height=768,bg="grey")
spiel.title("Kai s Battle Game")
#Fenster fuer Canvas
fenster1 = Frame (spiel,width=650,height=700)
fenster1.place(x=350, y=46)
#Canvas im Frame Fenster1
spflaeche = Canvas (fenster1,width=1074,height=768)
spflaeche.place(x=0,y=0)
#Scrollbar erstellen
xleiste = Scrollbar (spflaeche,orient=HORIZONTAL,width=324)
xleiste.place(x=2,y=685)
#Spielflache erstellen
erstelle_hexfeldobjekte (spielreihen, ungerade_spalten)
for x in hexdic.iterkeys() :
spflaeche.create_polygon (hexdic[x][0],fill=hexdic[x][2],outline="black")
#Titel fuer Canvas
besch1 = Label (spiel,text ="Spielfaeche",fg="red",bg="grey")
besch1.place(x=350,y=20)
spiel.mainloop()
Dafür sollen zwei Command Anweisungen verantwortlich sein.
xscrollcommand=SCROLLBAR.set und
command=FENSTER.xview
Aber egal wo ich die Einbaue - es geht nicht.
Würdet Ihr mir mal helfen ? und sagen wo ich welchen Befehl ergänzen muss ???
Danke
Kai
imac
20 Zoll
2,4 ghz
20 Zoll
2,4 ghz
so habe ich es beispielsweise probiert :
GEHT ABER NICHT !!!
Code: Alles auswählen
from Tkinter import *
from funktionen import *
#Hauptfenster erzeugen
spiel = Tk()
spiel.config(width=1024,height=768,bg="grey")
spiel.title("Kai s Battle Game")
#Fenster fuer Canvas
fenster1 = Frame (spiel,width=650,height=700)
fenster1.place(x=350, y=46)
#Canvas im Frame Fenster1
spflaeche = Canvas (fenster1,width=1074,height=768)
spflaeche.place(x=0,y=0)
#Spielflache erstellen
erstelle_hexfeldobjekte (spielreihen, ungerade_spalten)
for x in hexdic.iterkeys() :
spflaeche.create_polygon (hexdic[x][0],fill=hexdic[x][2],outline="black")
#Scrollbar erstellen
xleiste = Scrollbar (fenster1,orient=HORIZONTAL,width=324)
xleiste.config(command=spflaeche.xview)
xleiste.place(x=2,y=685)
spflaeche.config(xscrollcommand=xleiste.set)
#Titel fuer Canvas
besch1 = Label (spiel,text ="Spielfaeche",fg="red",bg="grey")
besch1.place(x=350,y=20)
spiel.mainloop()
GEHT ABER NICHT !!!
Zuletzt geändert von derkai am Samstag 16. August 2008, 23:08, insgesamt 1-mal geändert.
imac
20 Zoll
2,4 ghz
20 Zoll
2,4 ghz
so geht es, aber warum ?
es fehlt doch der Befehle : scrollbarcommand=xxx.set
es fehlt doch der Befehle : scrollbarcommand=xxx.set
Code: Alles auswählen
from Tkinter import *
from funktionen import *
#Hauptfenster erzeugen
spiel = Tk()
spiel.config(width=1024,height=768,bg="grey")
spiel.title("Kai s Battle Game")
#Fenster fuer Canvas
fenster1 = Frame (spiel,width=650,height=700)
fenster1.place(x=350, y=46)
#Canvas im Frame Fenster1
spflaeche = Canvas (fenster1,width=1074,height=768)
spflaeche.place(x=0,y=0)
#Spielflache erstellen
erstelle_hexfeldobjekte (spielreihen, ungerade_spalten)
for x in hexdic.iterkeys() :
spflaeche.create_polygon (hexdic[x][0],fill=hexdic[x][2],outline="black")
#Scrollbar erstellen
xleiste = Scrollbar (fenster1,orient=HORIZONTAL,width=324)
xleiste.config(command=spflaeche.xview)
xleiste.place(x=2,y=685)
#Titel fuer Canvas
besch1 = Label (spiel,text ="Spielfaeche",fg="red",bg="grey")
besch1.place(x=350,y=20)
spiel.mainloop()
imac
20 Zoll
2,4 ghz
20 Zoll
2,4 ghz
Ganz andere Sache:
Du solltest dich unbedingt vom place-Geometriemanager verabschieden. Das ist bestenfalls etwas für die allerersten Anfänge (und selbst da eigentlich überflüssig). Nimm dir mal Zeit für pack() (das scheint mir in deinem Fall das Richtige zu sein) oder grid().
Wenn du das Fenster z.B. mit der Maus aufziehst oder verkleinerst, zerhaut es dir momentan noch das ganze Layout. Das muss aber nicht sein.
Und: Dringende Empfehlung Tkinter nicht mittels Sternchenimport einzubinden!
Du solltest dich unbedingt vom place-Geometriemanager verabschieden. Das ist bestenfalls etwas für die allerersten Anfänge (und selbst da eigentlich überflüssig). Nimm dir mal Zeit für pack() (das scheint mir in deinem Fall das Richtige zu sein) oder grid().
Wenn du das Fenster z.B. mit der Maus aufziehst oder verkleinerst, zerhaut es dir momentan noch das ganze Layout. Das muss aber nicht sein.
Und: Dringende Empfehlung Tkinter nicht mittels Sternchenimport einzubinden!
Höchstens relativ zu anderen absoluten Koordinaten. Wenn Du eine GUI haben möchtest, die nicht nur bei auf Deinem Rechner, mit Deiner Bildschirmauflösung und Deinen Schriften und Schriftgrössen funktioniert, dann ist `place()` nicht brauchbar.
Zum Import: Entweder Du importierst alle Namen, die Du verwendest explizit, oder Du importierst halt nur das Modul und greifst über das Modulobjekt auf den Inhalt zu. Hat den Vorteil, dass man auch im Quelltext sieht, wo etwas her kommt. Da der Name `Tkinter` etwas lang ist, binden die meisten Leute das Modul beim Importieren an einen kürzeren Namen: ``import Tkinter as tk``.
Zum Import: Entweder Du importierst alle Namen, die Du verwendest explizit, oder Du importierst halt nur das Modul und greifst über das Modulobjekt auf den Inhalt zu. Hat den Vorteil, dass man auch im Quelltext sieht, wo etwas her kommt. Da der Name `Tkinter` etwas lang ist, binden die meisten Leute das Modul beim Importieren an einen kürzeren Namen: ``import Tkinter as tk``.