Seite 2 von 3

Verfasst: 27.11.2006 14:55
von Thomas
Janno hat geschrieben:Mit welchem Programm hast du die Zeichnungen gemacht? Die sehen nämlich echt voll gut aus
ihr werdet jetzt lachen...

Paint

Verfasst: 27.11.2006 14:59
von Thomas
Kaeru Gaman hat geschrieben:wenn ich ein weiteres feld zuerst pflüge, dann kann ich es auch nicht besäen.
irgendwie wird bei weiteren feldern nur die allererste funktion ausgeführt.
das isn sehr versteckter bug, musst halt deinen code mal pflügen.
Ich weiß aber nicht wie ich das Problem hinkrige!
(Sonst würde ich euch nicht fragen.)

Verfasst: 27.11.2006 15:21
von Thomas
noch was:
Kaeru Gaman hat geschrieben: das isn sehr versteckter bug, musst halt deinen code mal pflügen.
kann dir nicht folgen..., was meinst du?
Dr. Shrek hat geschrieben: Es würde auch Sinn machen den Code nochmals 'neu' zu strukturieren:

Das 'Zeichnen' in einer eigenen Funktion.
Der Mix aus Berechnungen und DrawSprite(...) macht das Game später schwerer wartbar.
neu sturcturieren, denkst du das hilft? (Ich hatte das gleiche Problem schon mit der 3.30er Version)

wenns angeblich hilft, kannst du das für mich mal versuchen? (hab im Moment nicht viel Zeit wegen der Schule und den Hausaufgaben; das Projekt läuft sozusagen nur so nebenher mit, eigenlich eher etwas für die Ferien)

Verfasst: 27.11.2006 15:39
von Kaeru Gaman
der tip von Ice Mc. Shrek könnte dazu beitragen, dass der fehler leichter auffindbar wird.
is ja ok, wenn du im moment wenig zeit hast, die schule geht vor, keine frage.
dann lass das problem halt noch vier wochen reifen.

irgendwie muss der fehler nachvollziehbar sein, irgendwo ist irgendein
plus vergesseen worden oder tritt sonst werweißwasfürein effekt auf.

aber so einen bug aufzuspüren ist schon schwierig, wenn man den code selber geschrieben hat.

in fremden code ist das ne echt harte nummer.

wenn du in den nächsten ferien das programm nochmal schreibst, findest du den fehler am besten.
du kannst ja den alten code abschreiben, aber eben wirklich abschreiben,
nicht rauskopieren, nur beim abschreiben fällt die so ein versteckter fehler leichter auf.

Verfasst: 27.11.2006 16:20
von DrShrek
Kaeru Gaman hat geschrieben:Ice Mc. Shrek
... isser nicht lieb ? :wink:
Thomas hat geschrieben:neu sturcturieren, denkst du das hilft? (Ich hatte das gleiche Problem schon mit der 3.30er Version)?
JA sicher...würde ich es sonst sagen?
Thomas hat geschrieben:wenns angeblich hilft, kannst du das für mich mal versuchen?
SoSo...und wer macht PBpuzzle in der Zwischenzeit? :wink:

Ok...wenn Du mir sagst was das Endprodukt 'können' soll...setzte ich mich vielicht sogar hin (ABer nur wenn ich von Dir noch etwas Info bekomme) ;-)

Verfasst: 27.11.2006 17:05
von Thomas
Dr. Shrek hat geschrieben: Ok...wenn Du mir sagst was das Endprodukt 'können' soll...setzte ich mich vielicht sogar hin (ABer nur wenn ich von Dir noch etwas Info bekomme) ;-)
Ich will nur, dass auf allen (nicht nur auf dem zuerst erstellen) Feldern etwas wächst, und dass die Fahrzeuge auch wieder hinfahren können.
(weil wie du gesehen hast, kann man nur einen Arbeitsschritt (sähen, pflügen,...) machen und dann geht bei dem 2., 3., 4., ... (also bei allen außer dem zuerst erstellten Feldern) nix mehr.)

Verfasst: 27.11.2006 17:19
von #NULL
dein prob liegt in feldbearbeiten().
nach dem eine maschine fertig ist, wird immer nur die WB variable des ersten feldes auf 0 gesetzt, und nicht die, dessen maschine fertig ist. geht auch gar nicht anders, weil du scheinbar für die maschinen gar keine informationen hast welches feld sie bearbeiten. der grund ist der, dass du versuchst dies alles mit den zwei in einander-geschachtelten schleifen für die listen M() und Fe() zu machen. funktioniert aber so nicht.

was du brauchst ist in deiner maschinen-struktur ein feld/ eine info, welche das element der Feld()-liste angibt, das von der maschnie bearbeitet wird. und dann mußt auch wirklich nur die die variable ..\WB des betreffenden feldes auf 0 setzen.
am einfachsten wäre das mit einem pointer auf das Fe()-listenelement, also das betreffende feld, zu machen.





<edit>
hier hast du einen unsauberen, aber funktionierenden bugfix:
in deiner procedure feldbearbeiten()
ersetzt du das hier:

Code: Alles auswählen

        If M()\F > M()\eX - M()\sX - 1
          M()\A = 0
          M()\F = 1
          M()\O = 1
          M()\R = 1
          M()\FE = 0
          Fe()\WB = 0
          Fe()\Tag = Tag
          M()\zX = M()\HX + G()\SpW / 2 - 60
          M()\zY = M()\HY + G()\SpH / 2 - 60
        EndIf
durch dieses stück code:

Code: Alles auswählen

        If M()\F > M()\eX - M()\sX - 1
          M()\A = 0
          M()\F = 1
          M()\O = 1
          M()\R = 1
          M()\FE = 0

          *tempP=Fe()
          ForEach Fe()
            If M()\sX = Fe()\sX And M()\sY = Fe()\sY
              Fe()\WB = 0
              Fe()\Tag = Tag
              Break
            EndIf
          Next
          ChangeCurrentElement(Fe(),*tempP)
          
          M()\zX = M()\HX + G()\SpW / 2 - 60
          M()\zY = M()\HY + G()\SpH / 2 - 60
        EndIf

Verfasst: 28.11.2006 05:42
von Kaeru Gaman
Dr. Shrek hat geschrieben:
Kaeru Gaman hat geschrieben:Ice Mc. Shrek
... isser nicht lieb ? :wink:
hey, das war doch nich bös gemeint... :|


@#NULL

prima analyse. ich hatte nich den nerv, so tief einzusteigen...

Verfasst: 28.11.2006 08:06
von DrShrek
Kaeru Gaman hat geschrieben:
Dr. Shrek hat geschrieben:
Kaeru Gaman hat geschrieben:Ice Mc. Shrek
... isser nicht lieb ? :wink:
hey, das war doch nich bös gemeint... :|
Meins auch nicht. Oder habe ich bzw Du etwas 'böses' gesagt?

Verfasst: 28.11.2006 16:09
von Thomas
Vielen Dank #Null,

hast mir wirklich sehr geholfen! Das Spiel klappt jetzt so wie ich es mir vorgestellt habe. :D

Euch anderen auch Danke für eure Mühe! :D