Brauche hilfe für mein Spiel (neues Problem)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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
v6.00
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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.)
v6.00
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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)
v6.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag 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) ;-)
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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.)
v6.00
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag 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
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag 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?
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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
v6.00
Antworten