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
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#include <stdio.h> struct GameData { int Strenght; int Agil; }; // Per Struktur und Return // Kommentar: Sehr dumm, da sehr langsam! //--------------------------------------------- struct GameData Increase(GameData gd, int a, int b) { gd.Agil = a + gd.Agil; gd.Strenght = b + gd.Strenght; // Unsere Funktion berechnet die Werte // neu und gibt den berechneten Wert zurück return gd; } // Per Referenz // Kommentar: Sehr komfortabel und schnell //--------------------------------------------- void IncreaseRef(int &a, int &b) { a = a + a; b = b + b; } // Per Referenz // Kommentar: Ebenfalls //--------------------------------------------- void IncreasePoint(int *a, int *b) { *a = *a + *a; *b = *b + *b; } int main() { struct GameData Game; Game.Agil = 8; Game.Strenght = 7; // Den berechneten Wert speichern // wir in der Strukur Game die vom Typ struct GameData // sein muss Game = Increase(Game, 2, 2); // Erhöhung per Refernenz, // WICHTIG, wir brauchen das Ergebnis nicht einer Variablen // zuweisen, da die Parameter überschrieben werden ;) IncreaseRef(Game.Agil, Game.Strenght); // Das gleiche IncreasePoint(&Game.Agil, &Game.Strenght); return 0; } |
Zitat von »"Anfänger"«
Die Funktionen müssen den Wert zurückliefern den du veränderst.
Du musst das so machen:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include <iostream> //-------------------------------------------- // Name: AddPrecent // Typ: Funktion // Zweck: Verändert einen Wert vom Typ int // um einen bestimmten Prozentsatz //--------------------------------------------- int AddPercent (int iValue, int iPercent); //-------------------------------------------- // Name: AddPercent // Typ: Funktion // Zweck: Verändert einen Wert vom Typ float // um einen bestimmten Prozentsatz //-------------------------------------------- float AddPercent (float fValue, int iPercent); //-------------------------------------------- // main - Funktion //-------------------------------------------- int main () { int iStrength = 30; float fSpeed = 50; int iPercentage = 10; // Ausgabe der Werte std::cout << "Bisherige Stärke: " << iStrength << std::endl; std::cout << "Bisherige geschwindigkeit: " << fSpeed << std::endl; // Berechnung der neuen Werte iStrength = AddPercent (iStrength, iPercentage); fSpeed = AddPercent (fSpeed, iPercentage); // Neue Werte ausgeben std::cout << std::endl << "Neue Stärke: " << iStrength << std::endl; std::cout << "Neue Geschwindigkeit: " << fSpeed << std::endl; return 0; } //-------------------------------------------- // AddPercent //-------------------------------------------- int AddPercent (int iValue, int iPercent) { return iValue + iValue / 100 * iPercent; } //-------------------------------------------- // AddPercent //-------------------------------------------- float AddPercent (float fValue, int iPercent) { return fValue + fValue / 100 * iPercent; }
Werbeanzeige