Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

11

30.10.2009, 15:31

um den abstand des ballmittelpunkts zum schläger bestimmen zu können.

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

12

30.10.2009, 16:29

das könnte man aber auch in dem man die Ballbreite durch 2 teilt und zur aktuellen x-Position dazuaddiert ( selbiges für Y-Pos und Höhe )
Errare est humanum. -Windows ist menschlich ;-)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

30.10.2009, 16:33

jain... das funktioniert im prinzip zwar aber wenn du die ecken des schlägers benutzen willst wird es nicht funktionieren oder es wär zumindest nicht sauber.

ich hab sowas schonmal geschrieben..
das ist übrigens draus geworden(was ganz anderes^^):
http://nachoman.de/index.php?site=projekte&projektid=1

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

14

30.10.2009, 17:24

das meine lösung jetzt nicht die schönste ist, ist mir bewusst nur gings mir halt darum im zu zeigen wie man Kollisionsüberprüfungen möglichst simpel durchführt :D
Errare est humanum. -Windows ist menschlich ;-)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

15

30.10.2009, 17:30

dann kann er das ganze auch gleich mit einem viereck an stelle des kreises umsetzen oder?

bei der einfachen lösung gibt es ne kollision wenn der schläger das quadrad um den kreis trifft und nicht den kreis selbst.
ausserdem ist es nicht sooo viel schwerer.

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

16

30.10.2009, 19:38

ich denke es geht hier abr nicht um uns sondern um ihn,ich muss jetzt feiren ;)
Errare est humanum. -Windows ist menschlich ;-)

17

31.10.2009, 12:17

Leute, das Problem mit der Collision hab ich nicht mehr ich
habs anschließend doch noch geschafft dank hilfe von GetPosition. :D

Jedoch hab ich nun ein anderes Problem, ich hoffe es ist nicht
schlimm das ich das hier poste.

Undzwar hatte ich das Problem das auf App kein Zugriff verfügbar
war. Das hatte ich dann aber gelöst undzwar so:

C-/C++-Quelltext

1
2
3
4
5
Load.hpp:
//...

public:
void LoadSprites(sf::RenderWindow &App);
//...

So nun hat das wunderbar funktioniert aber wenn ich
versuche die Funktion aufzurufen gibt es leider Probleme
undzwar:

C-/C++-Quelltext

1
2
CLoad Load; //Instanz erstellen

Load.LoadSprites(); //Hier scheitere ich

Das problem ist das:

Zitat

error C2660: 'LoadSprites': Funktion akzeptiert keine 0 Argumente

Wenn ich nun NULL eingebe also so:

C-/C++-Quelltext

1
Load.LoadSprites(NULL);

Bekomm ich das angeworfen:

Zitat

'LoadSprites': Konvertierung des Parameters 1 von 'int' in 'sf::RenderWindow &' nicht möglich

Was kann ich dagegenen tuhen. Ich möchte nämlich außerhalb
der main Datei alle Sprites Laden, in einer Seperaten Funktion.

18

31.10.2009, 12:33

Warum musst du beim Laden der Sprites deine App angeben?

sfml macht das doch eigentlich ganz schön:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Image/Sprites Laden
sf::Image MyImage;
MyImage.LoadFromFile("bla.bmp");
sf::Sprite MySprite;
MySprite.SetImage(MyImage)

// Zum Zeichnen dann

sf::RenderWindow App (...);
while (...)// GameLoop
{
...
  App.Draw (MySprite);
}


NULL, was ein Zeiger ist, kannst du nicht auf eine Referenz Umbiegen.
Das ist ja der große Unterschied zwischen Referenzen und Zeigern. Zeiger kannst du umbiegen, verändern, Null setzen, usw...
Eine Referenz wird EINMAL zugewiesen und bleibt dann dabei.

Darf man fragen, was du mit einer Klasse cLoad willst? Das macht jedenfalls für mich keinen Sinn. Wirds ein ResourceManager? Dazu gibts im SFML Wiki jedoch auch eine sehr gut funktionierende Version.

Sinnvoll wäre bei SFML eher die Zusammenfassung eines Sprites und eines Images zu evtl. einem cDrawable Objekt, in dem du dann lokal eine Load (std::string FileName) Funktion anbietest, um immer wiederkehrenden Code zu umgehen.

So Far...

Laguna

19

31.10.2009, 12:46

Ich wollte eigentlich nur ein bissian Ordnung reinbringen, also
die Steuerung für den Sprite und so, alles in eine Funktion einbauen.

Aber das war wohl *blöd umgesetzt. Naja aber trotzdem ich bräuchte
für andere Funktion trotzdem noch diese Methode..
Mit Zeiger funktioniert das leider nicht.

20

31.10.2009, 13:16

Ich checks immer noch nicht. *Kopfschüttel* :(
Zum Steuern des Sprites brauchst du immer noch keine App. Das geht mit MySprite::SetPosition();
*klugscheiss* und es heisst DAS sprite*klugscheiss-off*

Naja, wenn du eine Funktion mit dem Rumpf

Quellcode

1
 void BlaBlubb (sf::RenderWindow& App);
aufrufen willst, musst du das wie folgt machen

Quellcode

1
2
 sf::RenderWindow App(...)
BlaBlubb (App);

Entsprechend mit den Operatoren, wenn du einen Pointer einsetzt.

Mir scheint, du hast Zeiger(-arithmetik), Referenzen und die Unterschiede noch nicht ganz verstanden. Google dir dazu doch mal ein paar Tutorials.
Sehr zu empfehlen ist auch Kalistas Buch "C++ für Spieleprogrammierer", in dem diese Sachen wirklich ausgezeichnet erklärt sind.

Laguna

Werbeanzeige