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

Anonymous

unregistriert

11

03.07.2008, 13:22

Wie jetz?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

12

03.07.2008, 14:56

übersichtlich jetzt! :p


Steef weist einfach nur darauf hin, dass die ganzen Klammern nicht so verwirrend sind, wenn du wirklich konsequent je öffnende Klammer eine Ebene tiefer einrückst.

13

03.07.2008, 17:33

Eig. macht das VS 2008 Express automatisch. Falls du dev oder so hast würde ichs übersichtlicherweise so machen.

Und: Global ist böse. Solltest du von Anfang an nicht verwenden auser sie sind konstant.

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

14

03.07.2008, 17:51

Hab den Code nur überflogen

Lebensenergie = Lebensenergie - VSchaden;

Wird in den ersten kapiteln nicht auf einen solchen Operator eingegangen?

Lebensenergie-=VSchaden == Lebensenergie = Lebensenergie - VSchaden

Edit: Was hälst du von Fallunterscheidung anstatt else if ..

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

15

03.07.2008, 18:01

Zitat von »"raXor"«

Und: Global ist böse. Solltest du von Anfang an nicht verwenden auser sie sind konstant.


Bei enem Quellcode von dieser Größe stören die globalen Variablen imo nicht, da das Programm eben doch sehr überschaubar ist. Und eben dafür alles in eine Klasse oder so zu packen halte ich übertrieben.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

16

03.07.2008, 18:31

Ich find es irgendwie kindisch formuliert, zu sagen 'xyz ist böse'. Globale Variablen sind doch genauso wie alle anderen Sprachfeatures erstmal weder gut noch böse, es gibt einfach nur Gründe dir dafür oder dagegen sprechen, ein bestimmtes Feature zu nutzen.
Bei globalen Variablen spricht schon einiges dagegen, trotzdem gibt es auch Situationen, wo es Sinn macht oder zumindest nicht stört solche Variablen zu erstellen...
Am besten find ich die Keksperten, die auch noch namespacegebundene Variablen als verkappte globals entlarfen und dann im nächsten Code fröhlich mit cout usw. arbeiten :badgrin:

*weil ich grad eh halb am Thema vorbei bin*
Selbst goto ist nicht böse, es gibt nur viele Negativeffekte und kaum einen (keinen?) Nutzen, den man mit andere Sprachfeatures nicht ebenfalls erreichen kann^^

17

03.07.2008, 19:10

naja, deine Meinung. Ich hab schon schlechte Erfahrungen mit den viechern gemacht und werd sie ganz sicher nie wieder verwenden und ich rats auch jedem...

Anonymous

unregistriert

18

03.07.2008, 19:38

Hallo! Ich habe mein Code ein wenig verbessert:

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// C++ für Spieleprogrammierer

// Programm 1_1

//

#include <iostream>

using namespace std;

int main ()
{
    // Variablen

    //

    int Lebensenergie = 100;
    int VSchaden = 25;
    int HalbSchaden = 50;
    int Tod = 100;
    char chAuswahl;

    // while-Schleife

    while ((chAuswahl != 'b')  ||  (chAuswahl != 'B'))
    {
    cout << "Finde den richtigen Weg! - Menue" << endl;
    cout << "---------------------------------" << endl;
    cout << "(S)pielen, (I)info oder (B)eenden? ";
    cin >> chAuswahl;
    cout << "\n==================================" << endl;

    if (chAuswahl == 's')
    {

        cout << "\n\n\n\n\nDeine Lebensenergie betraegt " << Lebensenergie << endl;

    cout << "So, waehle die richtige Tuer!\n\n";
    cout << "(A)usgangstor" << endl;
    cout << "(L)aborstuer" << endl;
    cout << "(F)lurstuer" << endl;
    cout << "(K)uechentuer\n" << endl;

    // while-Schleife

    while (Lebensenergie != 0)
    {
    cout << "Deine Wahl: ";
        cin >> chAuswahl;

        // Spielen

        //

        // Ausgangstor

    if ((chAuswahl == 'a')  ||  (chAuswahl == 'A'))
    {
        cout << "Findest einen Schluessel und gehst wieder zum Anfangspunkt." << endl;
    }
    else if ((chAuswahl == 'l')  ||  (chAuswahl == 'L'))
    {
        cout << "Du trttst ein und rutschst. Der Boden war nass und du hast jetzt eine Verstauchung." << endl;
    Lebensenergie = Lebensenergie - VSchaden;
    cout << "Deine Lebensenergie betraegt jetzt nur noch " << Lebensenergie << endl;
    }

    // Flurstür

    else if ((chAuswahl == 'f')  ||  (chAuswahl == 'F'))
    {
        cout << "Du trittst in die Tuer ein und bist tot. Als du eingetreten bist war kein Boden unter deinen Fuessen." << endl;
    Lebensenergie = Lebensenergie - Tod;
    }

    // Küchentuer

    else if ((chAuswahl == 'k')  ||  (chAuswahl == 'K'))
    {
        cout << "Du willst eintreten, doch die Tuer ist zugesperrt. Du rammst auf sie und bist mit dem Kopf gegen die Tuer gestossen. Du hast dir sehr wehgetan." << endl;
    Lebensenergie = Lebensenergie - HalbSchaden;
    }

    // Falsche Eingabe

    else
      cout << "Du hast vermutlich versehentlich die falsche Taste gedrueckt. Versuch es nochmal." << endl;

    cout << "\n\n\n";
    }
    }

    // Info

    //

    else if ((chAuswahl == 'i')  ||  (chAuswahl == 'I'))
    {
        cout << "Das Spiel geht so: Du hast dich in einer Villa verloren und musst immer die richtigen Gegenstaende finden, um dich zu retten. Viel unheimlichen Spass!" << endl;
    }
    // Beenden

    //

        else if ((chAuswahl == 'b')  ||  (chAuswahl == 'B'))
        {
        cout << "Bis zum naechsten mal!" << endl;
        }

    else
        cout << "Du hast die falsche Taste gedrueckt." << endl;
    }

        return 0;
}


Nur ein Problem ist da noch: Auch wenn ich 'B' oder 'b' tippe, fängt das Programm neu an, obwohl ich das nicht will. Ich habe ja die while-Schleife mit eingebaut!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

19

03.07.2008, 19:43

Deine Schleifenbedingung ist unsinnig:

while(chAuswahl != 'b' || chAuswahl != 'B') ...

chAuswahl ist immer nicht 'b' oder nicht 'B'.
Die Schleife wird niemals verlassen, denn dann müsste chAuswahl sowohl 'b' als auch 'B' gleichzeitig sein, was natürlich nicht geht.
Ersetze das || (Oder) durch ein && (Und), dann geht's.

Anonymous

unregistriert

20

03.07.2008, 19:45

Es geht jetzt!
*jubel*
Thx David!

Werbeanzeige