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

R3sident3vil

Treue Seele

  • »R3sident3vil« ist der Autor dieses Themas

Beiträge: 177

Wohnort: 1010010

Beruf: Selbstständig

  • Private Nachricht senden

1

21.03.2007, 19:53

Variablenwert unterschiedlich erhöhen

Hallo Leute,

eine nummerische Variable kann man um 1 erhöhen, wenn man z.B. so vorgeht:

C-/C++-Quelltext

1
2
3
4
5
6
...
int i;
i = 1;
i++;
// Jetzt hat i den Wert 2

...


Aber wie kann ich das so machen, dass die Variable um beispielsweise 0.2 erhöht wird?

Danke im Voraus ;)

MfG The Progger 8)
Kaum ist Linux wieder da, schon gehts meinem Rechner wunderbar, denn Linux ist die beste Medezin.

Olischewsky Arts

Sheddex

unregistriert

2

21.03.2007, 20:02

C-/C++-Quelltext

1
2
float f = 0.0f;
f += 0.2f;


Das gehört aber doch zu den absoluten Basics und wird in Heikos Buch (falls du das hast) auch im 2. Kapitel beschrieben...
Oder ich verstehe hier irgendwas falsch...

R3sident3vil

Treue Seele

  • »R3sident3vil« ist der Autor dieses Themas

Beiträge: 177

Wohnort: 1010010

Beruf: Selbstständig

  • Private Nachricht senden

3

21.03.2007, 20:50

Nun, ich möchte, dass man in meinem Spiel Level aufsteigt. Man fängt als Level 1 an. Aber um Level 2 zu werden, muss man Aufgaben bestehen, wenn man eine besteht wird der Prozentsatz um 0.2 erhöht, wenn der Prozentsatz gleich 1.0 ist, dann steigt man ein Level auf.

Ich möchte meine Idee an diesem Beispiel verdeutlichen:
(Frage: Was ist daran falsch?)

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
#include <iostream.h>
#include <conio.h>

int x, y, tipp, ergebnis, level;
float prozent = 0.0f; // der Prozentsatz hat am Anfang den Wert 0.0


void main(void)
{
  level = 1; //Man fängt als Level 1 an

  do
  {
    randomize ();
    x = random (5) + 1;
    y = random (5) + 1;
    ergebnis=x+y;
    cout << "Wie viel ist " << x << " + " << y << " = ";
    cin >> tipp;
    if (tipp == ergebnis)
    {
      prozent += 0.2f;
      // Die Aufgabe wurde richtig gelöst, 

      // der Prozentsatz wird um 0.2 erhöht

    }
    if (tipp != ergebnis) prozent -= 0.2f; 
    // Die Aufgabe wurde falsch gelöst, verringere den

    // Prozentsatz um 0.2

    if (prozent == 1.0f) level++; 
    // Prozentsatz hat den Wert 1.0 erreicht, jetzt steigt man ein Level auf.

  }
  while (level < 2);
  cout << "Du hast Level " << level << " erreicht!" << endl;
  getch ();
}
Kaum ist Linux wieder da, schon gehts meinem Rechner wunderbar, denn Linux ist die beste Medezin.

Olischewsky Arts

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

21.03.2007, 20:56

C-/C++-Quelltext

1
if(prozent == 1.0f)


sowas ist böse. floats sind keine exakten werte. ich würds an deiner stelle mit ints machen (immer 20 punkte dazu und wenn er 100 hat...).

R3sident3vil

Treue Seele

  • »R3sident3vil« ist der Autor dieses Themas

Beiträge: 177

Wohnort: 1010010

Beruf: Selbstständig

  • Private Nachricht senden

5

21.03.2007, 20:56

Naja ich habs gerade ausprobiert, und es läuft so wie ich es haben möchte.

"Kaum macht man alles richtig, schon funktionierts." ;)

Danke an euch :!: :!: :!:
Kaum ist Linux wieder da, schon gehts meinem Rechner wunderbar, denn Linux ist die beste Medezin.

Olischewsky Arts

6

21.03.2007, 21:47

Trotzdem ist dots einwand berechtigt und du solltest es ändern.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

21.03.2007, 21:49

ja, du hast nur das glück, dass ein float 0.2 exakt darstellen kann.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

21.03.2007, 22:03

Zitat von »"dot"«

ja, du hast nur das glück, dass ein float 0.2 exakt darstellen kann.

Das will ich aber mal sehen!

Lord-archimedes

Treue Seele

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

9

14.04.2007, 10:56

Wie kann man eigendlich erkennen welchen Wert float darstellt

einfach dann:

C-/C++-Quelltext

1
2
float i = 0.2;
std::cout << i << endl;


oder wie ??

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

14.04.2007, 11:10

Oder Per debugger! ;) Wenn du das genaue Bitmuster haben willst musst du halt erst zu einem int konvertieren und dir Binär ausgeben lassen.
@D13_Dreinig

Werbeanzeige