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

14.12.2011, 21:43

if angabe für mehre zahlen gleichzeitig

Hi Leute,
Habe eine Programm geschrieben,
was auch einigermaßen läuft,
jedoch möchte ich an der einen Stelle mehre Zahlen in eine if-Funktion schreiben,
da ich das wahrscheinlich falsch mache, nimmt er immer das was in der if-Klammer ist,
selbst wenn es falsch ist,
die else Klammer tritt nie in kraft, egal was ich eingebe,
deswegen wollte ich wissen wie ich richtig mehrere Zahlen
in eine if-Funktion schreiben kann.

Danke

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
// Singleplayer oder Multiplayer
//
#include <iostream>
using namespace std;

// Hauptprogramm
//
int main ()
{
    int Player;
    char Gamemode, GamemodeMulti;

    cout << "Call of Doughbag\n" << endl;
    cout << "Möchtest du (S)ingle- oder (M)ultiplayer spielen: ";
    cin >> Gamemode;

    if (Gamemode == 'S')
    {
        cout << "\nSingeplayer startet..." << endl;
        cout << "...\n...\n...\nTut mir Leider aber mit deiner Gümmelgurke von PC\nkannst du dieses Spiel leider nicht starten" << endl;
    }
    else if (Gamemode == 'M')
    {
        cout << "\nMultiplayer Startet...\n...\n...\ngestartet!\n" << endl;
        cout << "(T)eamdeathmatch oder (D)eathmatch: ";
        cin >> GamemodeMulti;

        if (GamemodeMulti == 'T')
        {
            cout << "\nTeamdeathmatch" << endl;
            cout << "Seit ihr 4 , 6 , 8 Spieler ?" << endl;
            cout << "Spieler: ";
            cin >> Player;
            if (Player == 4, 6, 8)
            {
                cout << "\nSpiel startet\n...\n...\n...\nTut mir Leider aber mit deiner Gümmelgurke von PC\nkannst du dieses Spiel leider nicht starten" << endl;
            }
            else
            {
                cout << "\nFalsche Eingabe!!! Absturtz!!!" << endl;
            }
        }
        else if (GamemodeMulti == 'D')
        {
            cout << "\nDeathmatch" << endl;
            cout << "Seit ihr 2, 3 , 4 , 5 , 6 , 7 , 8 Spieler ?" << endl;
            cout << "Spieler: ";
            cin >> Player;
            if (Player == 2, 3, 4, 5, 6, 7, 8)
            {
                cout << "\nSpiel startet\n...\n...\n...\nTut mir Leider aber mit deiner Gümmelgurke von PC\nkannst du dieses Spiel leider nicht starten" << endl;
            }
            else
            {
                cout << "\nFalsche Eingabe!!! Absturtz!!!" << endl;
            }
        }
        else
        {
            cout << "\nFalsche Eingabe!!! Absturtz!!!" << endl;
        }
    }
    else
    {
        cout << "\nFalsche Eingabe!!! Absturtz!!!" << endl;
    }

    return 0;
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fronti« (14.12.2011, 21:52)


Embio

Frischling

Beiträge: 78

Wohnort: Da wo das Gras am grünsten ist

Beruf: Student - Physik

  • Private Nachricht senden

2

14.12.2011, 21:55

C-/C++-Quelltext

1
  if (Player == 2|| Player == 3usw usw)


So funktionierts... Warum deine Variante nicht funktioniert kann ich dir nicht sagen. Da warte mal auf die Profis im Forum ;). Von denen erhältst du evtl auch bessere Lösungen.
Bis dahin würd eich mir die Mühe mit dem logischen "oder" machen.
Olaf Schubert: "Die katholische Kirche steckt einfach mehr in seinen Nachwuchs"

3

14.12.2011, 22:00

Nur so am rande... Ich an deiner Stelle würde auf jedenfall mit einer Switch-Verzweigung arbeiten.
Dann sparst du dir dieses unübersichtliche if-Zeug.
Metal ist keine Musik sondern eine Religion.

4

14.12.2011, 22:24

Also danke schon mal für die Antworten,
wollte nur einmal ein Beispiel mit der If-Version machen.
Da man das ja auch kennen sollte falls man mal bei jemandem mitmacht,
der If verwendet.

Auf jedenfall funktioniert die Lösung schonmal, Danke!

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

14.12.2011, 22:29

Switch kann if ja auch nicht komplett ersetzen. Lies einfach in deinem Buch weiter, dann wird sich dir das alles noch eröffnen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

15.12.2011, 00:04

Du wolltest noch wissen, warum das nicht funktioniert:

C-/C++-Quelltext

1
if(x == 1, 2, 3)


Der Komma-Operator hat in C++ eine andere Bedeutung als das, was du hier willst.
Wenn du das so schreibst, ist der Wert des Ausdrucks immer 3 und nicht etwa true oder false abhängig vom Wert von x. Und 3 wird zu true. Darum geht er immer in dein "if" rein.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

15.12.2011, 06:39

Im Übrigen ist "if" keine Funktion. Ich sehe, dass Du neu in der Thematik bist, aber die Begriffe sind enorm wichtig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

8

15.12.2011, 09:30

eine andere Möglichkeit für die Umsetzung mit If wäre es, nicht die einzelnen Werte zu überprüfen, sondern gleich den ganzen Bereich
da du als Datentyp int verwendest, können nur ganze Zahlen eingegeben werden
da zwischen den Werten 2, 3, 4, 5, 6, 7 und 8 keine ungültigen Werte liegen können, kann man prüfen, ob der Wert innerhalb dieses Bereiches liegt oder ob er nicht außerhalb des Bereiches liegt (genauso lässt sich der Code im If und im Else Bereich tauschen, wenn man prüft, ob der Wert außerhalb oder nicht innerhalb liegt)
das könnte so aussehen:

Quellcode

1
if(Player >= 2 && Player <= 8) {...}

Quellcode

1
if(!(Player < 2 || Player > 8)) {...}


bei der Eingabe für das Teamspiel sieht es ein wenig anders aus, da dort nur jede 2. Zahl ab 4 bis einschließlich 8 gültig ist
da es nur 3 Werte sind, könnte man dies auch mit einer Überprüfung eines jeden möglichen Werts abhandeln
es lässt sich aber mit einem Rechenschritt mehr auch auf die oben dargestellte Art lösen: man prüft, ob die Zahl restlos durch 2 teilbar ist

Quellcode

1
if(Player >= 4 && Player <= 8 && Player % 2 == 0) {...}

solltest du es noch nicht gelesen haben: das % stellt den Modulo-Operator dar, der den Restwert einer Division ermittelt
wenn die Zahl bei einer Division durch 2 einen Restwert von 0 zurück lässt, ist die Zahl durch 2 teilbar
in diesem Fall wäre es eventuell schneller, die einzelnen Möglichkeiten zu überprüfen, allerdings ließen sich die möglichen Werte dann nicht so leicht ändern (so viel nur am Rande)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

9

16.12.2011, 15:33

Danke für die Antworten,
bin heute im Buch zu dem Modular Teil gekommen.

Nur dort fehlt mir wieder eine Sache wo ihr vllt ja die Lösung wisst,
wäre net wenn ihr HIER auch mal reischaut.

Werbeanzeige