yannicST Geschrieben 13. Januar 2011 Teilen Geschrieben 13. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 13. Januar 2011 Teilen Geschrieben 13. Januar 2011 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
yannicST Geschrieben 13. Januar 2011 Autor Teilen Geschrieben 13. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 13. Januar 2011 Teilen Geschrieben 13. Januar 2011 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 14. Januar 2011 Teilen Geschrieben 14. Januar 2011 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.