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

30.03.2011, 18:06

Munitionsanzeige

Hallo,
ich habe mal wieder eine Frage.
Ich hab vor auf dem Bildschirm eine Munitionsanzeige einzublenden. Um die noch vorhandene Munition auf dem Bildschirm zu bringen habe ich mir einen kleinen Code geschrieben. Aufgeführt habe ich nur wie ich die einzelnen Zahlen einblende. Meine Frage gibt es eine bessere Lösung(Die wird es wohl geben ^^) an die einzelnen Zahlen zu kommen(Heißt zb int zahl 1394 und davon brauche ich jede Zahl einzeln.) und wenn ja was kann ich verändern. Danke schonmal für eure Hilfe :).

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
int Zahl; 
char Anzeige[32]; 
int Ziffer1; 
int Ziffer2;
int Ziffer3;
int Ziffer4;   
int Munition = 7450;

Zahl = Munition%10000
sprintf(Anzeige, "%i", Zahl); 
Ziffer1 = Anzeige[0] - '0';

Zahl = Munition%1000
sprintf(Anzeige, "%i", Zahl); 
Ziffer2 = Anzeige[0] - '0';

Zahl = Munition%100
sprintf(Anzeige, "%i", Zahl); 
Ziffer3 = Anzeige[0] - '0';

Ziffer4 = Munition%10;

switch(Ziffer1)
case(1):
{ 
ausgabe Bustabe 1;
}

switch(Ziffer2)
case(1):
{ 
ausgabe Bustabe 1;
}
// usw.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chris13« (30.03.2011, 19:40)


TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

2

30.03.2011, 20:26

Man kann das in Schleifen verpacken und Arrays benutzen

also

Zahl = Munition%x
x/=10;
repeat while( x > 0 )

oder

ausgabe Buchstabe[ i ];

3

30.03.2011, 21:03

Danke für die Antwort. Soweit ich das verstehe meinst du das ich einfach nur die Schleife nehme und somit das mehrfache schreiben des Codes wegfällt und ich statt in die Ziffer1-4 das gesamte in ein Array einlese. :)
Ist schonmal eine gute Besserung zur Lesbarkeit des Codes. Hat wer vllt noch eine Idee wie man es anders Lösen kann also statt es mit Sprinf zu lösen? Danke schonmal :)

4

30.03.2011, 22:03

mit std::cout << " blabla ";


5

30.03.2011, 22:07

ich glaube du verwechselts "printf" mit "sprintf"...
Metal ist keine Musik sondern eine Religion.

6

30.03.2011, 22:25

mit std::cout << " blabla ";

Made my Day^^

Genau wie Fabian schon sagte ich meine nicht printf sondern sprintf. Das ganze wird in einen string zusammengefügt in meinem Fall will ich nur eine einzige Zahl haben und suche eine alternative möglichkeit dies zu tun. Zb sowas wie atoi. Nur suche ich eine bessere Lösung als die die ich gefunden habe :).

7

30.03.2011, 22:31

Es gibt z.B. boost::lexical_cast
http://www.boost.org/doc/libs/1_46_1/lib…exical_cast.htm

Oder die Stringstreams aus der Standardbibliothek (wobei boost ja eigentlich auch zur Standardbibliothek gehört ;-) )
Lieber dumm fragen, als dumm bleiben!

8

30.03.2011, 22:44

empfehle dir stringstream. ist wohl einfacher zum anfangen:

wenn ich mich jetzt nicht irre

Quellcode

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <sstream>

void foo()
{
  std::stringstream oss;
  int zahl = 5;

  oss << zahl;
  std::cout << oss.str();
}

9

30.03.2011, 22:57

uff^^ Sowie ich das jetzt verstehe lese ich jetzt zb die zahl 1234 in den string ein lösche mit push_back push_back und einmal push_front die zahlen und bekomme so die 2 heraus. Gute Möglichkeit. Danke für die antwort. Das mit dem boost lese ich mir morgen durch :).

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

10

30.03.2011, 22:59

meiner meinung nach ist das die einfachste methode(bzw. templatefunktion xD) wenn du boost noch nicht installiert hast und es als anfänger auch erstmal nicht willst.

C-/C++-Quelltext

1
2
3
4
5
6
template<class T> inline std::string toStr(T x)
{
    std::stringstream type;
    type << x;
    return type.str();
};
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige