Fehler von ForEach? (DXS Four Elements)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Velox
Beiträge: 39
Registriert: 18.09.2011 18:02

Fehler von ForEach? (DXS Four Elements)

Beitrag von Velox »

Nach 4 Tagen programmieren habe ich mich jetzt entschlossen das geschaffte zu zeigen.
Da es noch nicht Fehlerfrei ist und ein bestimmter Fehler das Spielvergnügen stark einschränkt, bitte ich hier um Hilfe.
Später werde ich es dann unter Showcase reinstellen und auf unserer Homepage veröffentlichen.

Den aktuellen Fortschritt findet ihr hier (Wäre nützlich zum testen und verstehen des Fehlers)
http://www.file-upload.net/download-377 ... -.rar.html

Folgendes muss auf jeden Fall vor Veröffentlichung behoben werden:

Der Spieler kann Elemente kombinieren um neue Elemente zu finden. Leider kombiniert das Spiel bisher Feuer und Erde sowie Erde und Feuer, Fehlerfrei! Alle anderen Elemente werden entweder beim ersten mal kombiniert oder aber nach mehrmaligen Versuch. Wo könnte der Fehler liegen?

Hier mal die Liste der möglichen Elemente (Nicht zum Spaß verderben, mehr um die Fehler leichter zu erkennen):
  • Feuer + Erde = Lava (Umkehrschluss möglich)
  • Wasser + Wasser = Meer (Umkehrschluss möglich)
  • Wasser + Erde = Sumpf (Umkehrschluss möglich)
  • Erde + Luft = Staub (Umkehrschluss möglich)
  • Luft + Luft = Wind (Umkehrschluss möglich)
Freue mich mal auf Rückmeldungen :)

Edit:

Hier noch der Programmteil der die Kombinationen prüft und bei positiv anzeigt:

Code: Alles auswählen

;-----| Fire + Earth = Lava |-----
							
; Current Element
If Global_ElementCurrentType$ = Global_LangFire$
	
	; Combined Element
	If NewElement()\ElementType = "Earth" And MouseX() > (NewElement()\ElementX) And MouseX() < (NewElement()\ElementX + Global_GraphicsSize) And MouseY() > (NewElement()\ElementY) And MouseY() < (NewElement()\ElementY + Global_GraphicsSize)
		
		DeleteElement(NewElement()) : ResetList(NewElement())
		
		While NextElement(NewElement())
			
			; Current Element
			If NewElement()\ElementID = Global_ElementCurrentID And NewElement()\ElementType = "Fire"
				
				
				; New Element
				NewElement()\ElementType = "Lava" : NewElement()\ElementSprite2D = #GFX_Element_Lava2D : NewElement()\ElementSprite3D = #GFX_Element_Lava3D
				
				If Global_CombinedFireEarth = 0 And Global_CombinedEarthFire = 0
					
					Global_CombinedFireEarth = 1
					Global_CombinedEarthFire = 1
					Global_ElementCombinedCount + 1
					Global_ElementCombined$ = "Neue Elemente gefunden: " + Str(Global_ElementCombinedCount) + "/" + Str(Global_ElementCombineTotal)
					
				EndIf
				
			EndIf
			
		Wend
		
	EndIf
	
EndIf
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fehler von ForEach? (DXS Four Elements)

Beitrag von STARGÅTE »

leider kann ich mit deinem Code nichs anfangen.

Aber da du schreibst, es geht irgendwie im Kombinationen, würde ich einfach mal vermuten das du irgendwo vergisste das Aktuelle Element zu sichern, wenn du eine innere Schleife startest.

Code: Alles auswählen

NewList Number.i()

For I = 1 To 3
	AddElement(Number())
	Number() = I
Next

ForEach Number()
	*Number.Integer = @Number()
	ForEach Number()
		Debug "Kombination: "+Str(*Number\i)+" - "+Str(Number())
	Next
	ChangeCurrentElement(Number(), *Number)
Next
Wäre vielleicht gut, wenn du etwas ausführbares Postest, an dem dein Problem erkennbar ist.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten