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

1

07.01.2013, 17:25

Möglicher Fehler in Kapitel 4.6? (Inline-Funktionen)

Hallo zusammen,

also entweder ich habe einen ganzen Abschnitt nicht verstanden oder es liegt doch am Buch (was ich ehrlich gesagt doch eher bezweifle). Ich habe vor knapp drei Wochen beschlossen, mich an der Programmiersprache C++ zu vergreifen um zu versuchen, später mal ein anständiges Spielchen eigenhändig zu programmieren. Um auch einen guten Einstieg für mich gewährleisten zu können, habe ich mir das Buch von Heiko Kalista gekauft, welches bisher meiner Meinung nach ziemlich gut gelungen ist und jeden Schritt anfängerfreundlich erklärt.

Jetzt bin ich inzwischen im vierten Kapitel bzw. 4.6 wo die Inline-Funktionen erklärt werden. Alles schön und gut, das Prinzip und die Anwendung müsste ich soweit verstanden haben. Jedoch gibt es da eine Zeile im Buch, die mich irgendwie aus der Fassung bringt. Es hat keinen direkten Zusammenhang zum eigentlichen Thema in dem Kapitel, aber ich halte es dennoch für angebracht auch die "unwichtigeren" zu verstehen.
Auf der Seite 96 bei der Bildschirmausgabe (es wäre im Übrigen schön wenn ihr das Buch zur Hand habt) wird in der zweiten Zeile "Highscore wurde geknackt !" ausgegeben. Meiner Meinung nach kann da etwas nicht stimmen, da der Wert "1500" in Zeile 30 im Listing 4.6 eingegeben wurde und für die Variable "Highscore" (Zeile 26) die Punktzahl "6510" festgesetzt wurde.
Logischerweise wird der Highscore erst gebrochen, wenn die Anzahl der Punkte höher als der Highscore ist. 1500 ist in meinen Augen jedoch nicht größer als 6510.

Natürlich kann es sein dass ich irgendwo einen ärgerlichen Denkfehler habe. Und davon gehe ich auch aus. Aber obwohl ich davon überzeugt bin, dass ich die Inline-Funktion einigermaßen verstanden habe, würde ich es begrüßen, wenn sich einer der freundlichen Mitglieder dazu bereit erklären würde, mir bei diesem Problem beizustehen.

Geld gibt es nicht, aber ein "Danke" kann ich ich im nachhinein anbieten. ;P

Einen angenehmen Abend wünsche ich allen.
Euer Neuling - Virtual

P.S.: Ach ja, nicht dass ich es noch vergesse und später grundlos angefaucht werde: Ich habe mit 3-4 verschiedenen Tags über die Suchfunktion und das Durchgehen von 10 Seiten darin versucht, dort einen ähnlichen Thread zu finden. Leider war da nichts vorzufinden.. aber ehrlich gesagt finde ich es gut dass ich auch mal mit einem Forenbeitrag etwas in dieser Seite mitmische. (;

FSA

Community-Fossil

  • Private Nachricht senden

2

07.01.2013, 17:31

Willkommen im Forum.
Da nicht jeder das Buch hat, wäre es schön wenn du den Betreffenden Quelltext hier hoch lädst. Du kannst auch irgendwie ein Fehler beim Ablesen gehabt haben und so kann es keiner nachvollziehen.

FSA

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

3

07.01.2013, 17:37

Danke sehr.
Hier ist der Code aus dem Listing 4.6:

C-/C++-Quelltext

1
2
3
4
5
6
7
// C++ für Spieleprogrammierer// Listing 4.6// inline-Funktionen//#include <iostream>
using namespace std;
// testeHighscore//inline void testeHighscore (int Punkte, int Highscore){  if (Punkte > Highscore)     cout << "Highscore wurde geknackt !" << endl;   else        cout << "Leider kein neuer Highscore" << endl;}
// Hauptprogramm//int main (){  // Variablen    //  int Punkte = 0;         // Erreichte Punkte int Highscore = 6510;   // Bisheriger Highscore
    // Punkte abfragen  cout << "Erreichte Punktzahl: ";    cin >> Punkte;
    // Testen, ob neuer Highscore erreicht wurde    testeHighscore (Punkte, Highscore);
    return 0;}

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

4

07.01.2013, 17:58

Nochmal lesefreundlich

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// C++ für Spieleprogrammierer
// Listing 4.6
// inline-Funktionen
//
#include <iostream>

using namespace std;

// testeHighscore
//
inline void testeHighscore (int Punkte, int Highscore)
{
  if (Punkte > Highscore)
     cout << "Highscore wurde geknackt !" << endl;
  else
     cout << "Leider kein neuer Highscore" << endl;
}

// Hauptprogramm
//
int main ()
{  
  // Variablen
  //
  int Punkte = 0;             // Erreichte Punkte
  int Highscore = 6510;    // Bisheriger Highscore

  // Punkte abfragen
  cout << "Erreichte Punktzahl: ";
  cin >> Punkte;

  // Testen, ob neuer Highscore erreicht wurde
  testeHighscore (Punkte, Highscore);

  return 0;
}


Bildschirmausgabe:


Erreichte Punktzahl: 1500
Highscore wurde geknackt !

Und ja, das ist ein Fehler, theoretisch müsste die "kein Highscore" Meldung kommen.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

5

07.01.2013, 18:05

Entschuldigt bitte, dass war nicht beabsichtigt.

Gut, da bin ich aber beruhigt. Dann kann ich ja mich an die nächsten Seiten ransetzen.

Danke für die schnelle befriedigende Antwort auf meine Frage.

Gruß
Virtual

Werbeanzeige