Gibt immer verloren aus :(



  • Das Programm gibt mir immer Verloren aus obwohl ich zB. 5Punkte gemacht habe

    Das Mitzählen des Punktestandes funktioniert igendwie auch nicht

    [code="c"]
    // Einarmiger-Bandit.cpp : main project file.

    #include "stdafx.h"
    #include <stdio.h>
    #include <time.h>
    #include <windows.h>
    #include <conio.h>

    int Rollenplatz1 (int a);//Grundlegende Prototyp der Funktionen welche die zufallszahlen generieren
    int Rollenplatz2 (int b);
    int Rollenplatz3 (int c);
    int Rollenplatz4 (int d);
    int Rollenplatz5 (int e);
    int Rollenplatz6 (int f);
    int Rollenplatz7 (int g);
    int Rollenplatz8 (int h);
    int Rollenplatz9 (int i);

    int y; //Punktestand
    int allgemein [11];//Allg. Variablen zum übergeben.....
    char feld1[3];//Prototyp vom Feld zum Sperren der Rollen

    void main()
    {

    printf("Willkommen bei Einarmiger Bandit\n\nPunkte werden quer oder diagonal gewertet\n\n\n\n");

    do
    {
    srand(time(NULL));//Zufallszahl wird generiert

    if(feld1[3]!='j')//Abfrage ob die Rolle gesperrt wurde oder nicht
    {
    allgemein[1] = Rollenplatz1 (allgemein [11]); //Aufruf der 1 Funktion um das Feld zu allgemein

    allgemein[4] = Rollenplatz4 (allgemein [11]); //Aufruf der 4 Funktion um das Feld zu allgemein

    allgemein[7] = Rollenplatz7 (allgemein [11]); //Aufruf der 7 Funktion um das Feld zu allgemein
    }
    if(feld1[2]!='j')//Abfrage ob die Rolle gesperrt wurde oder nicht
    {
    allgemein[2] = Rollenplatz2 (allgemein [11]); //Aufruf der 2 Funktion um das Feld zu allgemein

    allgemein[5] = Rollenplatz5 (allgemein [11]); //Aufruf der 5 Funktion um das Feld zu allgemein

    allgemein[8] = Rollenplatz8 (allgemein [11]); //Aufruf der 8 Funktion um das Feld zu allgemein
    }
    if(feld1[1]!='j')//Abfrage ob die Rolle gesperrt wurde oder nicht
    {
    allgemein[3] = Rollenplatz3 (allgemein [11]); //Aufruf der 3 Funktion um das Feld zu allgemein

    allgemein[9] = Rollenplatz9 (allgemein [11]); //Aufruf der 9 Funktion um das Feld zu allgemein

    allgemein[6] = Rollenplatz6 (allgemein [11]); //Aufruf der 6 Funktion um das Feld zu allgemein
    }

    allgemein [11]=1;//Auf 1 setzen damit es genau richtig oft die Schleife durchläuft
    printf("\n\n\n\n\n");

    while(allgemein [11]!=10)//Abfrage wie oft er die Schleife durchläuft zum Ausgeben
    {
    printf("%d\t", allgemein [allgemein [11]]);//Ausgabe des Feldes

    if(allgemein [11]==3 || allgemein [11]==6 || allgemein [11]==9)//Vergleich um in die nächste Zeile zu springen
    {
    printf("\n");
    }

    allgemein [11]++;
    }

    if (allgemein [4]==allgemein [5] && allgemein [4]==allgemein [6] && allgemein [5]==allgemein [6])//Punktevergabe
    {
    printf("10 Punkte\n\n\n");
    allgemein [11]=10;
    y=y+allgemein [11];//Punktestand mitzählen
    allgemein[0]=1;

    }
    if (allgemein [1]==allgemein [2] && allgemein [1]==allgemein [3] && allgemein [2]==allgemein [3])
    {
    printf("5 Punkte\n\n\n");
    allgemein [11]=5;
    y=y+allgemein [11];//Punktestand mitzählen
    allgemein[0]=1;

    }
    if (allgemein [7]==allgemein [8] && allgemein [7]==allgemein [9] && allgemein [8]==allgemein [9])
    {
    printf("5 Punkte\n\n\n");
    allgemein [11]=5;
    y=y+allgemein [11];//Punktestand mitzählen
    allgemein[0]=1;

    }
    if (allgemein [1]==allgemein [5] && allgemein [1]==allgemein [9] && allgemein [5]==allgemein [9])
    {
    printf("3 Punkte\n\n\n");
    allgemein [11]=3;
    y=y+allgemein [11];//Punktestand mitzählen
    allgemein[0]=1;

    }
    if (allgemein [3]==allgemein [5] && allgemein [7]==allgemein [3] && allgemein [5]==allgemein [7])
    {
    printf("3 Punkte\n\n\n");
    allgemein [11]=3;
    y=y+allgemein [11];//Punktestand mitzählen
    allgemein[0]=1;

    }else
    {
    printf("\t\t\tVerloren\n");
    allgemein [11]=0;
    }

    printf("\t\t\tDein Punktestand: %d\n",y);

    if(allgemein[0]!=1)
    {
    printf("\nWollen sie die erste Rolle sperren um sie in der naechsten Runde wieder zu haben (j,n)");//k=l=m=Variable zum sperren der einzelnen Rollen
    scanf("%c",&feld1[3]);
    fflush(stdin);

    printf("\nWollen sie die zweite Rolle sperren um sie in der naechsten Runde wieder zu haben (j,n)");
    scanf("%c",&feld1[2]);
    fflush(stdin);

    printf("\nWollen sie die dritte Rolle sperren um sie in der naechsten Runde wieder zu haben (j,n)");
    scanf("%c",&feld1[1]);
    fflush(stdin);

    if(feld1[3]=='j')//Wenn eine Rolle gesperrt wird zählt er einen Punkt ab
    y--;

    if(feld1[2]=='j')
    y--;

    if(feld1[1]=='j')
    y--;
    allgemein[0]=0;
    }else
    {
    printf("Sie haben in der letzten Runde gewonnen daher koennen sie nicht sperren\n\n");
    allgemein[0]=0;
    }

    printf("Nochmal");//Zum wiederholen

    }while(getche() == 'j');

    }

    int Rollenplatz1 (int a)
    {

    a=rand()%9 ;//Zufallszahl wird generiert

    return a;
    }

    int Rollenplatz2 (int b)
    {

    b=rand()%9 ;//Zufallszahl wird generiert

    return b;
    }

    int Rollenplatz3 (int c)
    {

    c=rand()%9 ;//Zufallszahl wird generiert

    return c;
    }

    int Rollenplatz4 (int d)
    {

    d=rand()%9 ;//Zufallszahl wird generiert

    return d;
    }

    int Rollenplatz5 (int e)
    {

    e=rand()%9 ;//Zufallszahl wird generiert

    return e;
    }

    int Rollenplatz6 (int f)
    {

    f=rand()%9 ;//Zufallszahl wird generiert

    return f;
    }

    int Rollenplatz7 (int g)
    {

    g=rand()%9 ;//Zufallszahl wird generiert

    return g;
    }

    int Rollenplatz8 (int h)
    {

    h=rand()%9 ;//Zufallszahl wird generiert

    return h;
    }

    int Rollenplatz9 (int i)
    {

    i=rand()%9 ;//Zufallszahl wird generiert

    return i;
    }



  • Könnte ein Moderator diesen Eintrag in das C-Unterforum verschieben?



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C (C89, C99 und C11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Eine Ansammlung der Allstars aller Programmiersünden. Globale Zustände, nichtssagende Bezeichner, Copy&Paste Programmierung, undefiniertes Verhalten an allen Enden.

    Dies hier allein ist schon eine der größten Frickeleien, die ich jemals gesehen habe (das will was heißen):

    int allgemein [11];//Allg. Variablen zum übergeben.....
    

    Alles wegschmeißen. Ist mein Ernst. Das ist so falsch, da hilft keine Korrektur, sondern nur gründliches Neuerlernen des Programmieren. Die Zeilen 9-22, 41-61 und 85-129 zeigen, dass weder Variablen, noch Funktionen, noch Kontrollstrukturen auch nur im Ansatz verstanden wurden. Das sind jedoch die Grundzutaten jedes Programms, ohne geht es nicht. Von Arrays rede ich lieber erst gar nicht. Kurz: Die werden ebenfalls falsch benutzt.

    Das klingt jetzt hart, ist aber die Wahrheit, was soll ich sonst sagen? Du musst einfach nochmal zu den Grundlagen zurück und diese lernen. Lerne auch besser nicht im Vakuum. Irgendwo hast du dir diesen Stil schließlich angelernt, ohne dass du jemals negatives Feedback bekommen hast. Das rächt sich nun, denn du hast dir viel falsches angelernt. Sei dir sicher, dass deine Lehrer/Lehrbücher auch wirklich C können. Ist für dich als Anfänger natürlich schwer zu beurteilen. Falls du Bücher/Tutorials/Onlinedokumente hast, kannst du diese ja mal nennen und abwarten, was die Forengemeinschaft dazu zu sagen hat.


Anmelden zum Antworten