Brauche Hilfe beim Programmieren von Snake in C



  • Hallo,
    ich versuche schon seit einiger Zeit mit C, Snake zu programmieren.
    Ich versuche es mit C (nicht C++) unter einer Consolen Applikation.
    Hab mit ganz normalen Strichen (- , |) ein Quadrat gezeichnet indem
    sich die Schlange bewegt und mit einem einfachen x den Schlagenkopf
    symbolisiert.
    Ich hab schon geschafft, dass sich das x bewegt, und man verliert wenn
    man in das Quadrat kracht. Hab auch schon random-zeichen erstellt die
    irgendwo im Qaudrat erscheinen und man sie "fressen" muss.

    Leider bin ich zu blöd dazu, das wenn man ein random-zeichen mit dem
    x überschreibt, dass die Schlange länger wird. 😞

    Wäre froh über jede Hilfe, danke. 🙂



  • Wie hast du das Spielfeld realisiert?
    Als zweidimensionales Array 😕 ?



  • Nein, hab es ganz simpel gelöst.
    Einfach mit nem printf und for-schleifen hingeschrieben:

    for(;v<=47;v++) {
    gotoxy(v,2);
    printf("-");
    }
    for(i=3;i<=23;i++) {
    gotoxy(5,i);
    printf("| |");
    }
    v = 5;
    for(;v<=47;v++) {
    gotoxy(v,23);
    printf("-");
    }



  • Ich hätte da noch eine Frage dazu.
    Kann man so ne if-Abfrage machen:
    if(case1 "wechselt zu" case2) ?



  • Fatman_Stoned schrieb:

    Ich hätte da noch eine Frage dazu.
    Kann man so ne if-Abfrage machen:
    if(case1 "wechselt zu" case2) ?

    versteh ich nicht!! 😕
    Kannste das mal genauer erklären!



  • Ich hätte da noch eine Frage dazu.
    Kann man so ne if-Abfrage machen:
    if(case1 "wechselt zu" case2) ?

    😕 😮



  • Musst halt die Koordinaten der Schlangenteile speichern, z.B. in nemm Ringpuffer.



  • meinst irgendwie so? ist jetzt nur symbolisch: über die sinnhaftigkeit lässt sich evtl. streiten, hab das jetzt nur schnell hingedonnert, aber man könnte ja sagen wenn es 1 ist, erhöhe eine andere variable auch noch um 1 und gehe dann in den normalzustand (2), der das sonst nicht brauchen würde.

    while(true)
    {
    switch(a)
    {
    
    case 1:
    //mach irgendwas
    a=2;
    break;
    case 2:
    //mach irgendwas irgendwas....
    break;
    }
    }
    

    -> bitte nicht böse sein, hab jetzt nicht eingerückt...



  • einfach beide cases untereinander schreiben und beim ersten das 'break' weglassen.

    switch(a)
    {
       case 1: 
       //mach irgendwas
       ...
    
       case 2:
       //mach irgendwas irgendwas....
       ...
       break;
    }
    

    🙂



  • Vielen dank für eure Antworten.

    Das mit dem case ist schwer zu erklären...naja,
    kann man eine if-Abfrage machen: wenn nach dem case1
    das case2 kommt, dann tu irgendwas.
    Falls ihr versteht was ich meine ^^

    Und das mit dem Ringpuffer werd ich gleich mal ausprobieren,
    danke.



  • Könntest du mir bitte ein Beispiel für nen Ringpuffer angeben?
    Danke


Anmelden zum Antworten