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

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

1

03.07.2009, 00:33

Kaptiel 12 Spiel verbesserungsversuch :-/

hi...ich bin grad neu angemeldet udn wollte mich mal vorstellen und euch gleich mal um eure hilfe bitten:).

ich bin gerade in kapitel 4 bei 4.9 und finde es auch super interessant zu programmieren...
dann habe ich jetzt noch einen kumpel gefunden der es auch lernen müsst...
Ich wusste schon von anfang an genau was ich als erstes mache wenn ich dass buch fertig hab und das hab ich schon jetzt gemacht xD
ich wollte wenn ich das buch durchgelesen hab in kapitel 12 das spiel verbessern und mit einer lebensanzeige ausstatten von 1000 pro getroffenen asteroiten 100 runter...
ich habe es zu testzwecken nur bis 500 gemacht und noch nich weiter geplant was geschieht wenn das leben denn weg ist weil ein menü hat das game nich ^^
nun habe ich alles eingebaut und durch eine funktion die vom updater stetig überprüft wird auch bilder eingefügt die die lebensenergie anzeigen...
aber wie es kommen musste kam es auch!
ich hatte anfangs 8 fehler und konnte diese auf zwei reduzieren, doch die letztens zwei bestanden daraus dass, das ich die position des asteroiten und des spieler überprüft habe. ich hatte es gleich in die funktion eingebaut in der überprüft wurde ob der spieler den rand berührt oder nicht :

Quellcode

1
2
3
4
5
6
7
// Linker und rechter Rand
  if (m_fXPos < 0.0f)
    m_fXPos = 0.0f;
  else if (m_fXPos > 752.0f)
    m_fXPos = 752.0f;
  else if ((m_fXPos == m_fXPos1) && (m_fYPos == m_fYPos1))
    checkLive ();



ist ja eig. alles richtig geschrieben nur will er die variablen " m_fYPos1 und m_fXPos1"
nicht aus der Asteroit.hpp holen...
das wirft er aus.

Quellcode

1
2
3
4
5
6
7
8
--------------------Konfiguration: SDL_Game - Win32 Debug--------------------
Kompilierung läuft...
Player.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\Kapitel 12\Player.cpp(275) : error C2065: 'm_fXPos1' : nichtdeklarierter Bezeichner
C:\Program Files\Microsoft Visual Studio\MyProjects\Kapitel 12\Player.cpp(275) : error C2065: 'm_fYPos1' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.

SDL_Game.exe - 2 Fehler, 0 Warnung(en)


naja ich würde mal sagen, das ihr es euch selber anschaut und dann mehr sagen könnt.


http://www.file-upload.net/download-1739…itel-12.7z.html

danke schonmal im vorraus für eure hilfe und kommt mir nicht mit unnützen kommentaren, weil ich alles falsch gemacht hab oder so ähnlich!
Den ich bin erst in Kaptiel 4
Am besten wäre es wenn Heiko Kalista mal reinschaut weil der kennt den Quellcode ja sicher noch ;-)

ups...mein fehler! mir ist grad aufgefallen das schonmal einer die gleiche idee hatte aber er es mit einem anderen algorythmus lösen wollte aber ich hoffe ihr helft mir trotzdem und noch ein tipp:
wo ihr schaun müsst sind diese datein:

Asteroit.cpp/.hpp
und
Player.cpp/.hpp

mfg.Tobi

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

2

03.07.2009, 08:31

so kann das auch nicht funktionieren, das ist ( bist ja noch anfänger, da ist das nicht so schlimm ;) ) ziemlicher blödsinn ^^
1. sind die membervariablen (kennzeichnet das m_) der einzelnen objekte in dem fall privat. d.h. du kannst von einem playerobjekt nicht direkt auf die variablen eines asteroidenobjekts zugreifen. der compiler verbietet das einfach. das kannst du lösen, indem du die variablen einfach public machst, oder extra methoden dafür schreibst, die dir die variablen geben... sowas asteroid23.getX() z.B.
2. hast du mehr als nur einen asteroiden... so sollte es jedenfalls sein. d.h. wenn der compiler jetzt sieht
else if ((m_fXPos == m_fXPos1) && (m_fYPos == m_fYPos1))
woher soll er wissen, mit welchem asteroiden du grade testest, ob die übereinanderliegen an der stelle musst du mit einer schleife alle asteroiden einzeln durchgehen
3. der kollisionstest wird so nicht funktionieren, so testest du nur ob die linke obere ecke exakt am gleichen punkt ist. google mal nach bounding-boxes. am besten lagerst du die kollisionserkennung aber in die CGame klasse aus, weil da sind die einzelnen asteroiden etc bekannt. und schreibst dann eine extra methode dafür.

3

03.07.2009, 08:56

1. Voraus schreibt man nur mit einem r, die andere Version (vor raus) wird wegen der fehlenden orthographischen Korrektheit in diesem Forum zensiert.

2. ich kenne das Buch zwar nicht, aber scheinbar bist du einfach noch nicht so weit, ein Spiel zu verändern. Es bringt wirklich nix, sich mit Dingen zu beschäftigen, deren Hintergrund man nicht verstanden hat.
Wenn das Spiel erst in einem späteren Kapitel behandelt wird, solltest du dich auch erst dann damit beschäftigen, und jetzt lieber Inhalte üben, die leicht und überschaubar sind. Gerade beim programmieren ist es enorm hilfreich zu wissen, was man tut sonst kriegt man Kompilierfehler oder Abstürze oder das Spiel ruckelt erbärmlich und man hat keine Ahnung warum.
Lieber dumm fragen, als dumm bleiben!

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

4

03.07.2009, 10:29

ja stimmt schon aber ich habe das buch grad meinem kumpel gegeben und warte das er mich einholt und solange hatte ich halt nichts zu tun...:-)
naja is auch jetzt egal ich behalte es im hinterkopf und lese mal weiter ^^
danke für eure Hilfe.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

5

03.07.2009, 20:56

Zitat von »"Jonathan_Klein"«

1. Voraus schreibt man nur mit einem r, die andere Version (*******) wird wegen der fehlenden orthographischen Korrektheit in diesem Forum zensiert.

fehlende orthographische korrektheit?!was heißt das?! ^^

6

03.07.2009, 21:15

Das stand unter meinen Deutschklausuren:
"Die erheblichen Verstöße gegen die orthographische Korrektheit mindern die Leistung allerdings."

Orthographie=Rechtschreibung
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige