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

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

1

28.10.2007, 17:25

Schleife endet nicht :(

Der Titel sagt alles...

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
#include "Game.hpp"
#include <windows.h>
#include <iostream>

using namespace std;

#pragma comment (lib, "winmm.lib")

//void Spieler ()

int main ()
{
    const int Black_Jack = 21;
    int Eigene_Karten = 0;
    int Eigene_Karte = 0;
    char chAuswahl = 'q';

    srand(timeGetTime ());

    Eigene_Karten = ((rand()%11)+1)+((rand()%11)+1);
    
    cout << "Deine Karten haben einen Wert von " << Eigene_Karten << "\n";
        
    //Diese Schliefe wird nicht beendet

    for (int i; (chAuswahl != 'a') || (chAuswahl != 'A') || (Eigene_Karten < Black_Jack) ||
        (Eigene_Karten != Black_Jack) || (i<5); i++)
    {
        cout << "Möchtest du eine Karte ziehen (z), oder aufhöhren (a)?" << endl;
        cin >> chAuswahl;
        cout << "\n\n";

        if (((chAuswahl == 'z') || (chAuswahl == 'Z')) && ((chAuswahl != 'a') || (chAuswahl != 'A')))
        {
            cout << "Deine Karten haben einen Wert von " << Eigene_Karten << "\n";
            
            Eigene_Karte = (rand()%11)+1;
            
            Eigene_Karten += Eigene_Karte;
        }
        if ((chAuswahl == 'a') || (chAuswahl == 'A'))
        {
            cout << "Gut\n";
        }
    }//Bis hier


    return 0;
}


Ich habe vor das Kartenspiel Black Jack zu Proggen (das ist die Datei für den Spieler)

P.S. :Für Fragen: Das Spiel bekommt noch eine Grafik (nur zum Test Win32-Konsole)
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

Dofter

Treue Seele

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

2

28.10.2007, 17:29

schreib mal
for (int i = 0; .....)
und ich glaub du solltes && statt || benutzen, da die schleibe ja nur so lang ausgeführt werden soll so lang alle Bedingungen true sind
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

3

28.10.2007, 17:38

1. für die Lösung mit "int 1 = 0;..." kann ich dir sagen, dass das auch mit einer "while"-Schleife (da wirds ja weggelassen) nicht funktioniert

2. Es soll beendet werden, wenn
-die Auswahl "a" oder "A" ist
-oder wenn der Wert der Eigenen Karten über 21 ist
-oder wenn er genau 21 ist
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

28.10.2007, 17:54

Mal ne Frage: Warum überhaupt for und nicht while?

Des weitern kommt bei while() ein i überhaupt nicht vor.

Bei for msst du es schon deklarieren. Also int i=0;

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

5

28.10.2007, 18:14

For, weil man, wenn man 5 karten hat gewonnen hat.

Ich hab doch eh gesagt:"..."while"-Schleife (da wirds ja weggelassen)..."
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

28.10.2007, 18:15

Zitat von »"terrible1"«

2. Es soll beendet werden, wenn
-die Auswahl "a" oder "A" ist
-oder wenn der Wert der Eigenen Karten über 21 ist
-oder wenn er genau 21 ist


Zitat


C-/C++-Quelltext

1
(chAuswahl != 'a') || (chAuswahl != 'A') || (Eigene_Karten < Black_Jack) || (Eigene_Karten != Black_Jack) || (i<5)


überleg dir nochmal genau was dein code macht und was er machen sollte ;)

7

28.10.2007, 18:20

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char sel('q'); 

for (std::size_t i = 0; sel != 'a' && !(Eigene_Karten >= Black_Jack) && i < 5; ++i)
{
    std::cout << "Möchtest du eine Karte ziehen (z), oder aufhöhren (a)?" << std::endl;
    std::cin >> chAuswahl;
    std::cout << "\n\n";
    sel = std::tolower(sel);

    if (sel == 'z')
    {
        std::cout << "Deine Karten haben einen Wert von " << Eigene_Karten << std::endl;
        Eigene_Karte = (rand() % 11) + 1;
    }
}
...
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

8

28.10.2007, 18:21

Zitat von »"Deviloper"«

C-/C++-Quelltext

1
!(Eigene_Karten >= Black_Jack)


^^ man könnte auch einfach sagen Eigene_Karten < Black_Jack :P

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

9

28.10.2007, 18:27

Zitat von »"Deviloper"«

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char sel('q'); 

for (std::size_t i = 0; sel != 'a' && !(Eigene_Karten >= Black_Jack) && i < 5; ++i)
{
    std::cout << "Möchtest du eine Karte ziehen (z), oder aufhöhren (a)?" << std::endl;
    std::cin >> chAuswahl;
    std::cout << "\n\n";
    sel = std::tolower(sel);

    if (sel == 'z')
    {
        std::cout << "Deine Karten haben einen Wert von " << Eigene_Karten << std::endl;
        Eigene_Karte = (rand() % 11) + 1;
    }
}
...


Das ist die Richtige Lösung? (schon leicht), aber manche Teile hab ich nicht verstanden, wie z.B. (warum)std::cout
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

28.10.2007, 18:28

weil cout im namespace std liegt und er keine using deklaration verwendet hat.

Werbeanzeige