Diskussionen und Krempel (alt: Verbesserungen Doku v4)

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Can anybody answer why SpriteCollision() and SpritePixelCollision() have coordenate parameters?
Isn't it enough with just only both sprite numbers?
Das ist doch aber eigentlich offensichtlich oder?
Man sollte das Zeichnen einer Szene und ihrer Logik aus geschwindigkeitsgründen von einander strikt Trennen.

In vielen Fällen wirst du aber ein Sprite mehrmals für eine Szene verwenden wollen.
Würden die Kollisionsfunktionen jetzt einfach davon ausgehen, dass die letzte zeichenposition eines Sprites die position ist, auf die eine Kollisionsabfrage laufen soll, dann müßte man kollisionsbehandlung *während* des Zeichnens der Szene handhaben, was zu Problemen führen kann.
Auch möchtest du eventuell garnicht die aktuell gezeichneten Positionen überprüfen. Wenn du zb eine Figur hast und mit den Kollisionsfunktionen überprüfen willst ob sie mit einer Wand kollidiert, was bei größerer Bewegungsgeschwindigkeit zb bedeuten könnte, dass deine Figur schon teilweise *in* der Wand ist, dann willst du nicht feststellen ob deine Figur grade jetzt kollidiert, sondern ob sie kollidieren *würde* wenn sich deine Figur mit der aktuellen geschwindigkeit in die aktuelle Richtung bewegt.
Nur so kannst du dafür sorgen, dass deine Figur *an* der Wand stoppt und nicht *in* der Wand.
Preludian
Beiträge: 52
Registriert: 25.04.2006 09:21

Beitrag von Preludian »

@Zaphod: Wenn es so offensichtlich wäre, würde es nicht so viele diesbezügliche Fragen in den Foren geben. Mann darf nie den Fehler machen und von sich (also du in diesem Fall) selber (erfahrener PB Programmierer) auf andere schliessen, die von anderen Sprachen oder Dialekten herkommen. In GameMaker ist es zum Beispiel kein Thema ohne Aufwand jeder zeit durch eiin simples Suffix .x oder .y die Koordinaten der Sprites zu erhalten. Die Kollisionserkennung ist auch kein Thema, ich muss nur angeben wie genau die Kollision sein soll und wer mit wem, basta, also du siehst es geht auch einfacher. Auch, dass eine SpritePixelCollision nicht mit Masken geht empfinde ich als ebenfalls unglückglich und sollte erwähnt sein. Klar kann man aller erraten oder durch tryal&error ausfindig machen, nur wenn ich an Basic denke, dann sollte einem dieses Zeitraubende Prozedere erspart bleiben. Wenn ich Zeit zu viel habe dann kann ich ja direkt alles mit C++ coden. Für mich liegt PB zwischen GameMaker und C++, daher ist auch mehr Programmieraufwand durchaus vertretbar, dafür habe ich ja auch mehr Möglichkeiten, aber sinnlose Zeitvertrödelei kann ich mir nicht leisten.

Auch denke ich, dass es immer besser ist, mehr zu einem Thema zu sagen als zu wenig. Es wird PB wohl kaum schaden, oder?
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Das Problem an der Betrachtungsweise ist, PB und C sind Programmiersprachen, GameMaker ist keine Programmiersprache.

Was du an Funktionalität beim GameMaker beschreibst ist eine kleine 2D Spieleengine und hat in einer Programmiersprache nichts verloren, weil das auch stark einschränkt was damit umsetzbar ist.
Preludian
Beiträge: 52
Registriert: 25.04.2006 09:21

Beitrag von Preludian »

Zaphod hat geschrieben:Das Problem an der Betrachtungsweise ist, PB und C sind Programmiersprachen, GameMaker ist keine Programmiersprache.

Was du an Funktionalität beim GameMaker beschreibst ist eine kleine 2D Spieleengine und hat in einer Programmiersprache nichts verloren, weil das auch stark einschränkt was damit umsetzbar ist.
Leider ist das recht arrogant und auch daneben, also quatsch. GameMaker ist eine Entwicklungsumgebung für primär 2D Spiele mit einer eigenen Programmiersprache, die sich GML nennt. GML ist eine Interpreter-Sprache, und ist daher in manchen Belangen langsamer. Du solltest dir vielleicht mal die Demo reinziehen oder die Doku durchlesen, bevor du sowas von dir gibst.

PB ist, wie bereits erwähnt, eine Programmiersprache die ich zwischen GM und C/C++ ansiedele. C/C++ hat wohl kaum Sprite, Grafik und Sound- Befehle, sondern stellt diese Funktionalität in Form von Libraries oder kompletten Engines zur Verfügung.

Bevor du jetzt weiter Unsinn schreibst fände ich es nett, wenn du einfach mal alle weiteren Kommentare in die Laberecke posten würdest. Kannst auch gerne einen neuen Thread aufmachen und dich da austoben.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Ich kenne den GameMaker. Weil etwas Programmierbar ist, ist es noch keine Programmiersprache, oder ist Quake3 ein Programmiersprache? Das hat nämlich auch einen eingebauten Interpreter und ist Programmierbar.

Was du an Funktionalität beim GameMaker beschreibst kann eine einfache Bibliothek nicht leisten.

Genauso wie Ogre von PB zwar aussieht wie eine Bibliothek aber eingentlich ein seperates Programm ist, auf dass man nur beschränkt einfluß nehmen kann.

Ein Sprite in PureBasic ist ein vollkommen anderes Konzept als ein Sprite im GameMaker. In PureBasic ist es mehr oder weniger wirklich nur eine Bitmap ohne dahinter stehende Logik. Das beides Sprite heißt hat historische Gründe.
PureBasic stellt alles außer der Grundfunktionalität in Form von mitgelieferten Librarys mit, da gibt es keinen unterschied zu C/C++.

Der einzige der hier Arroganz versprüht bist du, ich war in meiner Erklärung sachlich.
Bevor du weiter Unsinn redest, solltest du dir wenigstens Grundwissen zum Thema Programmiersprachen aneignen.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

@André:

anbei ein paar kleine Verbesserungsvorschläge für Deine an sonsten wirklich hervorragende Hilfe: :allright:

Es wäre noch hilfreich, wenn in der Hilfe das etwas ungewöhnliche Verhalten von PureBasic bei boolschen Rückgabewerten nach Vergleichsoperationen angesprochen würde (z.B. in "Variablen, Typen und Operatoren").
Vor allem, da die aktuelle Beschreibung in der Hilfe nicht wirklich das jetzige Verhalten wiederspiegelt.

Siehe Beispiel-Link: http://www.purebasic.fr/german/viewtopi ... ght=#98253

Gleiches gilt für die Float- und Double-Zustände: #Inf, #Ind und #NaN

Hier wäre ein Hinweis hilfreich, dass es
1. solche Zustände gibt und
2. wodurch sie ausgelöst werden können.

Auch hierzu 2 Links:
1. http://www.purebasic.fr/german/viewtopi ... ght=#98352
und vor allem dieser Link mit einem Lösungsansatz
2. http://www.purebasic.fr/english/viewtop ... hlight=ind

Ach ja, Dein Wikipedia-Link bei "Variablen, Typen und Operatoren" bezüglich des 'IEEE 754' Standards verweist in das englischsprachige Wikipedia.
Hier wäre vielleicht ein Link zum deutschen Derivat schöner: http://de.wikipedia.org/wiki/IEEE_754

Grüße, PureLust.


PS: Kann man sich eigentlich die immer aktuelle Hilfe irgendwo herunter laden?
Wenn ja, so wäre ein Hinweis mit Link im ersten Beitrag dieses Threads recht hilfreich.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

PureLust hat geschrieben: PS: Kann man sich eigentlich die immer aktuelle Hilfe irgendwo herunter laden?
Wenn ja, so wäre ein Hinweis mit Link im ersten Beitrag dieses Threads recht hilfreich.
Runterladen (noch) nicht, aber online nachschauen. Habe Link im ersten Beitrag wunschgemäß ergänzt.

Mehr zu weiteren Themen später.

Bzgl. der Neuaufteilung der Hilfe-Rubriken brauche ich nicht unbedingt eine editierte .chm-Datei oder MS Html-Workshop Projektdatei.
Es reicht auch, wenn Du hier Deine Vorstellungen wie schon 'ullmann' postest.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Beitrag von ullmann »

@Andre: Da Du um einen Textvorschlag für die Verwendbarkeit logischer Ausdrücke gebeten hast, hier mein Vorschlag:

Bei Variablen, Typen, Operatoren ergänzt Du bei <, <=, =, >=, >, <>: "Bitte beachten Sie unten stehenden Hinweis zur Verwendbarkeit logischer Ausdrücke."

Unten schreibst Du:

Spezielle Informationen zur Verwendbarkeit logischer Ausdrücke:

Logische Ausdrücke (z.B. Position<100) können uneingeschränkt verwendet werden in Befehlen die logische Ausdrücke erwarten (z.B. IF, WHILE, UNTIL) und in Kombination mit logischen Operatoren (AND, OR, XOR, NOT).

In der vorliegenden PureBasic-Version liefern die Rückgabewerte der Vergleichsoperatoren (<, <=, =, >=, >, <>) Ergebnisse, die z.B. in Kombination mit mathematischen Ausdrücken zu unerwarteten Resultaten führen können. Verwenden Sie in solchen Fällen zusätzlich einen der Operatoren AND, OR oder NOT um korrekte Ergebnisse zu erzielen.

Beispiel:

Code: Alles auswählen

Zaehler=0:A=20:B=20
Zaehler + (A=B)            ;Zaehler wird um den Wert B erhöht (unabhängig vom Vergleichsergebnis)
Zaehler + (0 Or (A=B))     ;Zaehler wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Zaehler + (1 And (A=B))    ;Zaehler wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt 
Zaehler + (Not Not (A=B))  ;Zaehler wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Sie können den zusätzlich benötigten Operator auch von einem Makro erstellen lassen.

Beispiel:

Code: Alles auswählen

Macro Is(Bool)
  (0 Or (Bool))
EndMacro

Zaehler=0:A=20:B=20
Zaehler + Is(A=B) ;Zaehler wird um 1 erhöht, wenn der Vergleich #True (wahr) ergibt
Gruß Rainer
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag von mardanny71 »

Hallo zusammen,

bei SetWindowState() werden noch zwei Konstanten Englisch auskommentiert:

#PB_Window_Normal : Das Fenster wird weder maximiert noch minimiert sein.
#PB_Window_Maximize: The window will be maximized.
#PB_Window_Minimize: The window will be minimized.

@André

Kannst Du mal die neue Hilfe unter Anleitung aufrufbar machen?

grüsse an alle
mardanny71
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Vielleicht sollte man die Konstanten auch gleich mit einem Semikolon kommentieren, da ein Doppelpunkt beim Direktkopieren störhaft ist.
Gesperrt