Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hi leute,

ich progamiere gerade ein Blackjack spie(bin noch anfänger), ich habe eine int für den dealer doch dort zeigt er immer einen Feheler an(zeile 109,110).

Bitte helf mir!

#include <stdio.h>

#include <math.h>

#include <stdlib.h>


int main(void)

{

    int karte, eingabe,karte_dealer;

    srand(time(0));

    karte_dealer=rand()%10+1;

    karte=rand()%10+1;

    int a,b,c,d;

    int e,f,g;

    int i,h,j;

    int k,l,m;

    char  name[10];


    printf("Name:");

    scanf("%s",&name);

    system("cls");

    printf("%s\n",name);

    a=karte;

    printf("%d\n",karte);

    karte=rand()%10+1;

    b=karte;

    printf("%d\n",karte);

    c=a+b;

    if(c==21)

    {

        goto LabelBlackjack;

    }

    LabelEingabe1:

    printf("Sie haben %d wollen sie passen/halten(1) oder noch eine karte(2)?  ",c);

    scanf("%d",&d);

    if(d==1)

    {

        goto LabelDealer;

    }

    else if(d==2)

    {

        goto  LabelNeueKarte1;

    }

        printf("\nNicht g\x81ltige Eingabe!\n");

        goto LabelEingabe1;


    LabelNeueKarte1:

    karte=rand()%10+1;

    e=karte;

    f=e+c;

    printf("%d\n",karte);

    if(f==21)

    {

        goto LabelBlackjack;

    }

    LabelEingabe2:

    printf("Sie haben %d wollen sie passen/halten(1) oder noch eine karte(2)?  ",f);

    scanf("%d",&g);

    if(g==1)

    {

        goto LabelDealer;

    }

    if(g==2)

    {

        goto  LabelNeueKarte2;

    }

    else

    {

        printf("\nNicht g\x81ltige Eingabe!\n");

        goto LabelEingabe2;

    }

    LabelNeueKarte2:

    karte=rand()%10+1;

    i=karte;

    h=f+i;

    printf("%d\n",karte);

    if(h==21)

    {

        goto LabelBlackjack;

    }

    LabelEingabe3:

    printf("Sie haben %d wollen sie passen/halten(1) oder noch eine karte(2)?  ",h);

    scanf("%d",&j);

    if(j==1)

    {

        goto LabelDealer;

    }

    if(j==2)

    {

        goto  LabelNeueKarte3;

    }

    else

    {

        printf("\nNicht g\x81ltige Eingabe!\n");

        goto LabelEingabe3;

    }

    LabelNeueKarte3:

    karte=rand()%10+1;

    k=karte;

    l=k+h;

    printf("%d\n",karte);

    if(l==21)

    {

        goto LabelBlackjack;

    }

    LabelEingabe4:

    printf("Sie haben %d. ",l);


    printf("Sie k\x94nnen  keine weiteren Karten ziehen, der Dealer ist am Zug!");

    LabelDealer:

    int bank,bank2,bank3; //hier ist der fehler

    int bank4,bank5;        //hier ist der fehler

    int bank6,bank7;        //hier ist der fehler

    int bank8,bank9;

    printf("\nDealer\n");

    karte=rand()%10+1;

    bank=karte;

    karte=rand()%10+1;

    bank2=karte;

    printf("%d\n%d\n",bank,bank2);

    bank3=bank+bank2;

    if(bank3==21)

    {

        goto  LabelDealerWin;

    }

    karte=rand()%10+1;

    bank4=karte;

    bank5=bank4+bank3;

    printf("%d\n",bank5);

    if(bank5==21)

    {

        goto LabelDealerWin;

    }

    if(bank5>21)

    {

        goto LabelWin;

    }

    karte=rand()%10+1;

    deal7=karte;

    bank6=bank7+bank5;









    LabelWin:

    printf("Sie haben gewonnen!");

    LabelDealerWin:

    printf("Der Bot hat gewonnen!");

    LabelBlackjack:

    printf("!!!!Blackjack!!!!");


}

danke im vorraus

yannic

Geschrieben

Eine Sprungmarke (Label) definiert keinen Block, an dessen Anfang du neue Variablen deklarieren darfst.

Du solltest schnellstens die gotos loswerden. Tu dir selbst einen Gefallen, und gewöhn dir so etwas gar nicht erst an. Benutz Schleifen.

Geschrieben

danke für die schnelle antwort, du hast mir auch geholfen und danke fur den tipp mit dem syl doch ich bin noch anfänger und hatte nichts anderes parat

Geschrieben

Betrache das, was ich nun schreibe, bitte als guten Rat:

Der Stil deines Programms ist furchtbar. Da wird wild in der Gegend herumgesprungen, die Variablen sind schlecht benannt oder einfach nur durchnummeriert, und überall findet sich doppelter und dreifacher Code. Es ist keinerlei Struktur erkennbar.

Das ist bei einem Anfänger nicht weiter verwunderlich. Aber trotzdem solltest du so nicht weitermachen. Wirf das Programm weg.

Dann fängst du von vorne an. Und diesmal schreib nicht einfach drauf los, sondern mach dir vorher Gedanken über die Struktur deines Programms. Mach einen Programmablaufplan oder ein Struktogramm, bevor du auch nur eine einzige Zeile Code schreibst, damit du in die strukturierte Denkweise reinkommst.

Und wenn du das mit diesem Programm nicht schaffst, dann such dir eine einfachere Problemstellung.

Geschrieben

Hier mal ein paar konkrete Tipps:

* Versuche Funktionalität soweit runterzubrechen, wie es geht.

Beispielsweise kannst Du sämtliche Interaktionen mit dem Spieler in separate Abschnitte Kapseln.

* Benenne Deine Variablen sinnvoll - und keine Angst vor langen Namen

Programmcode will gelesen werden. Das Verhältnis von Code lesen zu Code schreiben ist mindestens 5:1. Das heißt, eine Codezeile wird einmal geschrieben, später aber mindestens noch 5 mal gelesen (ohne sie zu ändern).

Was spricht also dagegen für Code die selbe Sorgfalt an den Tag zu legen, wie man sie für das Formulieren von Texten aufbringt.

Wenn Du eine Variable hast, die den Kartenstapel bezeichnet, dann kannst Du sie auch Kartenstapel nennen. Wenn Du eine Karte hast, nenn' die Variable, Karte. Wenn Du die Summe der Spielerkarten hast, nenn' die Variable ruhig SummeSpielerKarten.

Und dank CodeCompletion hat man trotz langer Namen nicht unbedingt mehr Tipparbeit.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...