hilfe mit lottospiel programmierung



  • hi leute ich hab mich hier mal angemeldet und wollte gleich mal fragen ob mir hier jemand helfen kann^^
    ich wollt halt ein lottoprogramm programieren aber ich denk das ich mich da in etwas ziemlich komplexes
    festhalte. also ich geh halt zur schule und bin einsteiger in C ich hab bereits felder funktionen usw. durchgenommen
    fehlen halt noch cursor und und.. ich wollt aber mal mit cursor arbeiten und sie auch mal ausprobieren
    dazu hab ich ma son kleines programm geschrieben.

    ich wollte das prog halt so aufbauen das die Verfahrensweisen und Regeln angenähert angenähert denen des staatlich kontrollierten Lottospiels (6 aus 49) entsprechen sollen , allerdings ohne Zusatzzahl u.ä., aber zu Testzwecken auch modifiziert werden können (5 aus 36 etc. darüber denk ich zuletz nach^^). Eine Gewinnrechnung (Auszahlung) mit zugehöriger Kalkulation (Einnahmen, Betriebsgewinn) muss nicht sein wäre aktzeptabel:P.

    Die Rollen der Spieler sollten beeinflussbar sein:
    Computer zieht <-> Mensch tippt
    Computer zieht <-> Computer tippt
    Mensch zieht <-> Computer tippt

    Neben Einzeltipps sollte es auch möglich sein, eine bestimmte Tippanzahl oder ein bestimmtes Ergebnis (z.B. 4 richtige) vorzugeben, was insbesondere bei den Rollenvarianten 2 und 3 interessant sein könnte.also man hat ja recht wenig chancen zu gewinnen und wollt sie halt auch erhöhen

    Um Glück oder Aufwand zu dokumentieren wäre eine Spielauswertung (Statistik) wünschenswert, optional mit Speichern in Dateien.

    Die Abläufe und Ergebnisse sollten mit den beschränkten Mitteln der Konsolentextausgabe so ansprechend wie möglich dargestellt werden (Spielfeld, Farben, ...).
    so nun hab ich halt ein programm geschrieben:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    #include <limits.h>

    void linie_prg_ueberschrift(void); // unwichtige linien für überschrift und so ^^
    void linie_menue_punkt_2(void); // unwichtige linien für überschrift und so ^^

    #define ANZ_LZ 49// Anzahl der Lottozahlen
    #define ANZ_TIPPS6// Anzahl der abzugebenen Tipps

    main()
    {
    int zufallz,r,x,y,z;
    char spielfeld[5][11];
    int *ptrx,*ptry;
    int menue;//Auswahlmenue
    char e;// Abgesicherte eingabe

    printf("Was Wollen Sie spielen?? \n\n"); // Ausgabe von Menü
    printf(" 1.) Computer zieht <->Mensch tippt\n");
    printf(" 2.) Computer zieht <->Computer tippt\n");
    printf(" 3.) Mensch zieht <-> Computer tippt\n\n");

    // e=(Abgesicherte Eingabe von Menü)
    do
    {
    printf("Auswahl: ");
    e=scanf("%d", &menue);
    fflush(stdin);
    } while(!e || menue<1 || menue>3); // Eingrenzung für die eingabe von 1-3

    //srand((unsigned)time(NULL));

    switch(menue)
    {
    // Computer zieht <-> Mensch tippt
    case 1:
    /*system("color 0E");*/
    system("cls");// Bildschirm löschen & Überschrift Menüpunkt 1 taucht auf
    printf("Computer zieht <-> Mensch tippt\n\n");
    linie_menue_punkt_2();

    x=1;
    for(spielfeld[x];x<2;spielfeld[x++])
    {
    printf("",x);
    printf("\n\n");
    y=1;

    for(spielfeld[y];y<50;spielfeld[y++])
    {
    printf("%8i",y);
    printf("");
    }
    printf("\n");
    ptrx=&x;
    ptry=&y;
    }

    //system("cls");
    printf("\n %10c Die heutigen Lottozahlen beim 6 aus 49\n\n");

    srand((int)time(NULL));
    for(z=0; z<6;z++)
    for(zufallz=6;zufallz<49;zufallz++)
    {
    {
    z=rand()%49-1;
    printf("%i \n",z);
    printf("Bitte geben sie ihre Tipps ab: \n");
    scanf("%i",&zufallz);
    }
    }
    printf("\n\n");

    }
    }

    da hab ich halt das spielfeld schon erstellt und ich wollt halt umbedingt wissen ob es möglich ist mit zb. w,a,s,d hoch runter rechts links zu gehen und dabei ankreuzen was du halt für ne zahl möchtest, ich denke dabei müsste ich cursor beherschen

    Da hab ich mir was ziemlich schwieriges vorgenommen aber ich hoffe ihr könnt mir helfen

    thx.
    pathe 😃



  • Benutez bitte die C/C++ Codetags! Den Code hat keiner Bock sich anzuschauen.



  • #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    #include <limits.h>
    
    void linie_prg_ueberschrift(void); // unwichtige linien für überschrift und so ^^
    void linie_menue_punkt_2(void); // unwichtige linien für überschrift und so ^^
    
    #define ANZ_LZ 49// Anzahl der Lottozahlen
    #define ANZ_TIPPS6// Anzahl der abzugebenen Tipps
    
    main()
    {
    int zufallz,r,x,y,z;
    char spielfeld[5][11];
    int *ptrx,*ptry;
    int menue;//Auswahlmenue
    char e;// Abgesicherte eingabe
    
    printf("Was Wollen Sie spielen?? \n\n"); // Ausgabe von Menü
    printf(" 1.) Computer zieht <->Mensch tippt\n");
    printf(" 2.) Computer zieht <->Computer tippt\n");
    printf(" 3.) Mensch zieht <-> Computer tippt\n\n");
    
    // e=(Abgesicherte Eingabe von Menü)
    do
    {
    printf("Auswahl: ");
    e=scanf("%d", &menue);
    fflush(stdin);
    } while(!e || menue<1 || menue>3); // Eingrenzung für die eingabe von 1-3
    
    //srand((unsigned)time(NULL));
    
    switch(menue)
    {
    // Computer zieht <-> Mensch tippt
    case 1:
    /*system("color 0E");*/
    system("cls");// Bildschirm löschen & Überschrift Menüpunkt 1 taucht auf
    printf("Computer zieht <-> Mensch tippt\n\n");
    linie_menue_punkt_2();
    
    x=1;
    for(spielfeld[x];x<2;spielfeld[x++])
    {
    printf("",x);
    printf("\n\n");
    y=1;
    
    for(spielfeld[y];y<50;spielfeld[y++])
    {
    printf("%8i",y);
    printf("");
    }
    printf("\n");
    ptrx=&x;
    ptry=&y;
    }
    
    //system("cls");
    printf("\n %10c Die heutigen Lottozahlen beim 6 aus 49\n\n");
    
    srand((int)time(NULL));
    for(z=0; z<6;z++)
    for(zufallz=6;zufallz<49;zufallz++)
    {
    {
    z=rand()%49-1;
    printf("%i \n",z);
    printf("Bitte geben sie ihre Tipps ab: \n");
    scanf("%i",&zufallz);
    }
    }
    printf("\n\n");
    
    }
    }
    


  • Um den Cursor über Standard-C zu bewegen, fallen mir momentan nur Escape-Sequenzen ein. Das wird aber schwierig und äußerst unsauber..

    Abfangen der Tasten wasd machst du in dem Fall mit getch() (conio.h)

    Alles in allem gibt es aber (soweit mir bekannt ist) keine komfortable Lösung dafür in Ansi-C.



  • hab jetz wieder komplet neu angefangen und wollt euch nochmal paar fragen stellen
    ich stell ma mein code hier rein:

    #include<stdio.h>
    #include<stdlib.h>

    //Funktionen
    int spielen(int x);
    void ziehung(int zufall[], int r, int bereich );
    void ziehung_aus(int zufall[], int r);
    void tippen(int tipps[], int r);
    void tippen_aus(int tipps[],int tipp);

    //Hauptprogramm

    void main(void)
    {
    // Definitonen für die Vektoren
    int zufall[100],tipps[100];
    char spielfeld[5][11];
    // Definition der Variablen
    int bereich,r,x,y,i,tipp;
    int *ptrx,*ptry;
    int e,menue;

    //Konsolenausgabe-Hauptbildschirm
    srand((unsigned int)time(NULL));
    printf("%18c***************************************************");
    printf("\n %18c Zahlenlotto-Projekt fuer Programmieren 04/09\n");
    printf("%18c***************************************************\n\n");

    printf("\nLiebe Nutzer es gibt genau 3 Spielmoeglichkeiten:\n");
    printf("\n1. Computer zieht -> Spieler tippt");
    printf("\n2. Computer tippt -> Spieler zieht");
    printf("\n3. Computer zieht -> Computer tippt");

    do
    {
    printf(" \n\nAuswahl: ");
    e=scanf("%d", &menue);
    fflush(stdin);
    } while(!e || menue<1 || menue>3);

    switch(menue)
    {
    //Menüpunkt1: Computer zieht <-> Mensch tippt
    case 1:
    system("cls");
    printf("\n\nDie Ziehung ist Variable d.h 6 aus 49 oder 5 aus 49 sie haben die Wahl");
    printf("\n\nBitte geben sie nun an wieviel Zahlen gezogen werden sollen\n");
    scanf("%d", &r);
    fflush(stdin);
    printf("Geben sie den Bereich ein aus denen die Zahlen gezogen werden sollen\n");
    scanf("%d", &bereich);
    fflush(stdin);

    //Aufruf der Funktionen

    tippen(tipps,r);
    ziehung(zufall,r,bereich);
    ziehung_aus(zufall,r);
    tippen_aus(tipps,r);

    break;

    //Gewinnprüfung

    case 2:

    //int vec[10];

    break;
    case 3:

    break;
    }

    //Spielfeld - Ausgabe
    /*x=1;
    for(spielfeld[x];x<2;spielfeld[x++])
    {
    printf("",x);
    printf("\n\n");
    y=1;

    for(spielfeld[y];y<50;spielfeld[y++])
    {
    printf("%8i",y);
    printf("");
    }
    printf("\n");
    ptrx=&x;
    ptry=&y;
    }*/

    printf("\n\n");
    printf("\n\n");

    }

    void ziehung(int zufall[], int r, int bereich )
    {
    int i,j,zufallz;

    //Element 1 mit Zahlen füllen
    //

    i=0;
    while(i<r)
    {
    zufall[0]=(rand((unsigned int)time(NULL))%bereich) +1;
    srand((unsigned int)time(NULL));
    ++i;
    zufall[i]= (rand() % bereich) +1;

    // Sicherung vor doppelten eingaben
    j=0;
    while(j<i)
    {
    if(zufall[i]!=zufall[j]) ++j;
    else(zufall[i] = (rand() % bereich)) +1;
    }
    }
    }

    void tippen(int tipps[],int r)
    {
    int i;

    for(i=0;i<r;i++)
    {
    //do
    //{
    printf("Bitte geben Sie ihren %i Tipp ab\n",i+1);
    scanf("%i",&tipps[i]);
    fflush(stdin);
    //}while(!i || tipps<1 || tipps>49);
    }
    }

    void tippen_aus(int tipps[],int r)
    {
    int i;

    printf("Ihre Tipps %i aus 49 :\n", r);
    for(i=0;i<r;i++)
    {
    printf("%d/", tipps[i]);
    }
    printf("\n\n");
    }

    void ziehung_aus(int zufall[], int r)
    {
    int i;

    printf("Ihre Ziehung %i aus 49 :\n", r);
    for(i = 0; i <r; i++)
    {
    printf("%d/",zufall[i]);
    }
    printf("\n\n");
    }

    wollte halt mal fragen ob ihr wisst wie is im zweiten menüpunkt
    computer zieht <-> computer tippt
    und zwar könnt ihr mir sagen wie ich es schaffe
    den computer zahlen tippen zu lassen die aber auch treffen
    also zb der computer soll mindestens 3 richtige treffen oder so
    also eine eingabe für wieviele richtige wollen sie treffen zb
    dann zieht der computer zufzahlen und tippt zufzahlen wie kann ich die beiden
    zahlen gleich kriegen kann mir da jemand helfen?
    hoffe ich spreche verständlich xD
    thx pathe



  • Erzieherische Maßnahme: Codetags benutzen, damit man den Code lesen kann.


Anmelden zum Antworten