brauche mal hilfe fuer mein snkae prog!!!schlange wächst net:(



  • hallo alle zusammen....
    ich hab mich seit langen mal dazu entshclossen ein kleinen konsolen spiel zu programmieren.klappt alles super hervorragend, wenn ich die beute einfachne bekomm ich punkte das level erhöht sich ect. DOCH zwei mangel hat mein programm

    das ERST: nach einer gewissen zeit wenn ich des obst oder so eingesammelt habe bleibt die am schlangenkopf haengen also es einfach hinten dran gehaengt und erscheint nicht neu auf dem screen(es ist immer unterschiedlich wann das obst aufeinmal da haften bleibt)
    wieso???

    das ZWEITE: und des wegen hab ich mich hier auch eigentlich im forum gemeldet ist das ich moechte das wenn die schlange das obst frist, es hinten angehängt wird und so die schlange waechst. es waere dann auch sicher gute wenn ich mit der schlange ubern screen laufe das der schwanz auch dort wo die schlange abbiegt, abbiegt und so fort... ihr alle kennt ja sicher snake....

    wenn hilft ich code unter borland builder 6 c++

    fuer Hilfe bin ich recht dankbar.THANX!!

    mfg, Sn4k3



  • bei deiner ersten frage braucht man eine kristallkugel.
    ohen code keine chance 😉



  • als erstes mal der code koennt ja mal schaun ob ihr was mit anfangen koennt.... evtl koennt ihr mir ja dann meine fragen beantworten *g*

    void GAME()
    {
        int Score(0);
        int Level(1);
        Intro();
    
            int Key;                                       // Tasten
            int snake_pos_x=3,snake_pos_y=3;               // Position der Schlange
            int creep_pos_x=41,creep_pos_y=7;              // Position der Beute
            int set_pos_x, set_pos_y;                      // Hilfsvariable
    
     while (Key != 27)
      {
       gotoxy(snake_pos_x,snake_pos_y);                    // Spawnpoint: Schlange
       textcolor(LIGHTRED);
       cprintf("S");
    
         gotoxy(creep_pos_x,creep_pos_y);                  // Spwanpoint: Beute, später auf Zufall
         textcolor(GREEN);
         cprintf("o");
         gotoxy(1,20);
    
            textbackground(LIGHTBLUE);
            textcolor(WHITE);
            cprintf("________________________________________________________________________________");
            cout << "\n";
            textcolor(YELLOW);
            cprintf("Level: %d",Level);
            cout << "\n\n";
            cprintf("Score: %d",Score);
    
           Sleep(90);                                     // gibt die Geschwindigkeit der Schlange an
    
           if (kbhit())                                    // wenn Taste gedrückt wird
           {
              Key = getch();                               // Taste sofort auswerten, ohne auf Eingabe
           }                                               // zu warten
    
              switch (Key)                                 // Tastenfunktion zuweisen
             {
                   case 'w': snake_pos_y--; break;         // hoch
                   case 'a': snake_pos_x--; break;         // links
                   case 's': snake_pos_y++; break;         // runter
                   case 'd': snake_pos_x++; break;         // rechts
             }
          clrscr();
    
                                                           // Randbegrenzung:
        set_pos_x = snake_pos_x;                           // LINKS <------> RECHTS
    
        if(snake_pos_x == 81)                              // wenn Schlange den rechten Rand erreicht,
        {                                                  // wird die pos_x auf 1 gesetz, d.h. sie
            set_pos_x = 1;                                 // erscheint gegenüber auf der rechten Seite.
        }
        if (snake_pos_x == 0)                              // wenn Schlange den linken Rand erreicht,
        {                                                  // wird die pos_x auf 79 gesetz, d.h. sie
            set_pos_x = 80;                                // erscheint gegenüber auf der linken Seite.
        }
        snake_pos_x=set_pos_x;                             // set_pos_x übergibt den geänderten Wert
    
                                                           // Randbegrenzung:
        set_pos_y=snake_pos_y;                             // OBEN <------> UNTEN
    
        if (snake_pos_y == 20)                             // wenn Schlange den unteren Rand erreicht,
        {                                                  // wird die pos_y auf 1 gesetz, d.h. sie
            set_pos_y = 1;                                         // erscheint gegenüber auf der oberen Seite.
        }
        if (snake_pos_y == 0)                              // wenn Schlange den oberen Rand erreicht,
        {                                                  // wird die pos_y auf 20 gesetz, d.h. sie
            set_pos_y = 20;                                // erscheint gegenüber auf der unteren Seite.
        }
        snake_pos_y=set_pos_y;                             // set_pos_y übergibt den geänderten Wert
    
                                                           // Beute Gefunden?!
    
          if (snake_pos_x==creep_pos_x)                    // Ist pos_x der Schlange gleich 
          {                                                // der pos_x der Beute ... UND ...
            if (snake_pos_y==creep_pos_y)                  // Ist pos_y der Schlange gleich
            {                                              // der pos_y der Beute
    
                creep_pos_x=0;                             // Setze die pos_x und pos_y der
                creep_pos_y=0;                             // Beute auf 0
    
                Beep(950,40);                              // Gib kurz einen BeepTon aus
                Score += 10;
                if(Score % 100 == 0)
                {
                    Level += 1;
                }
    
                randomize();                               // Initialisiere Zufallsgenerator
    
                if (creep_pos_x==0)                        // wenn pos_x der Beute 0 ist
                {                                          // gib eine zufällige Zahl für
                    creep_pos_x=random(79);                // pos_x der Beute aus (Zahl zw. 0-79)
                }
                 if (creep_pos_y==0)                       // wenn pos_y der Beute 0 ist
                 {                                         // gib eine zufällige Zahl für
                     creep_pos_y=random(19);               // pos_y der Beute aus (Zahl zw. 0-19)
                 }                                         // Neue Beute setzen End
            }
          }                                                // Beute finden End
      }                                                    // Kb.Abfrage End
    }
    

    guckt mal bitte ich weiss kein rat wie ich die schlange verlaengern koennte, thanx

    mfg, Sn4k3



  • Hallo,

    Logiklösungen sind immer die besten.

    Ich würde erstens die Länge der Schlange in einer Variable festhalten. Wenn man ein Obst einsammelt, dann wird dieser Wert x += 1.

    Du speicherst immer die Coordinaten der Schlange + 1 (hinten).

    if(ObstToken){ print(das schlangenende,pos curSnake - 1);}

    Ich hoffe das hilft dir 🙂

    MFG winexec*



  • Sn4k3 schrieb:

    das ERST: nach einer gewissen zeit wenn ich des obst oder so eingesammelt habe bleibt die am schlangenkopf haengen also es einfach hinten dran gehaengt und erscheint nicht neu auf dem screen(es ist immer unterschiedlich wann das obst aufeinmal da haften bleibt)
    wieso???

    bei mir spielt es sich nach kleinem umbau hervorragend..
    meines erachtens haus du das obst einfach raus.. ich nutze statt der borland funktionalität mal die standardbibiothek und mache die initialisierung mit srand, und die zufallszahl mit rand.
    ich vermute (nur eine vermutung), du vergisst, dass die konsole bei 1 beginnt, und nicht bei 0, und damit hängt dein obst im nirvana nicht sichtbar.

    ich setze deshalb rand % 19 +1, also von 1 bis 20, im notfall verkleiner den bereich, aber lass es nicht rausspringen..

    srand(time(0));                               // Initialisiere Zufallsgenerator
    
                if (creep_pos_x==0)                        // wenn pos_x der Beute 0 ist
                {                                          // gib eine zufällige Zahl für
                    creep_pos_x=rand()%79+1;                // pos_x der Beute aus (Zahl zw. 0-79)
                }
                 if (creep_pos_y==0)                       // wenn pos_y der Beute 0 ist
                 {                                         // gib eine zufällige Zahl für
                     creep_pos_y=rand() %19+1;               // pos_y der Beute aus (Zahl zw. 0-19)
                 }                                         // Neue Beute setzen End
    

    ps: wieso obst, ich dachte, es wären mäuse. o.ä. 😉



  • elise schrieb:

    ps: wieso obst, ich dachte, es wären mäuse. o.ä. 😉

    Sind halt vegetarische Schlangen. 😋



  • hmm... habs nnun seit dem letzten post versucht , aber ich bekomms irgendwie nicht hin mit dem wachsen der schlangeee... hmmpff... koenntemit nicht jemand zeigen wies geht???



  • please sagt wat.... 😕



  • Hallo,

    Ich kann dir das Spiel programmieren, aber nicht jetzt. Mal sehen, vielleicht komm ich die nächsten drei Tage dazu.

    MFG winexec*



  • hin win... ist zwar lieb von dir und ich weiss eigentlich sollte ich nACH KOMPleten codes fragen.... und es ist ja auch super des ihr mir immer so die beispiele gebt nur kann ich da meistens nix mit anfangen wenn ihr mir nur schreibt if(...) ... und dann so und dies und des ist fuer mich als neuling noch etwas krass. aber wenn du ich oder ne mail hast koennte ich dir ja mal mein code geben und du sagst mir dann wo und wie ich diese funktion mit schlangen kolision und verlängern hin schreiben muss... des waer kool... also evtl schaust duu ja hier noch mal rein und sagst wat zu mein vorshclag...
    mfg Sn4ke



  • oder icq waere noch besser !



  • Hallo,

    Ich mag IM nicht so. Poste einmal deine E-Mail.

    MFG winexec*



  • naja ich hab hier noch meinen alten snake-code in C ( schlechtes C )
    war nen alten schulprojekt.

    http://www.lo-net.de/fileexchange/47180/1551334/snake-v0.3.c

    bittö



  • wenn du MSV benutzt musste warscheinlich

    clrscr();
    

    durch

    system("cls");
    

    oder noch schlechteres ersetzen^^



  • meine mail SteahlZ@web.de



  • Interessant in dem oben verlinkten Code ist vor allem die Schreibweise des Essens... Will die Schlange laufen lernen? 😉



  • 😃



  • hmmm kann mir sonst keiner weiter mit meinen problem helfen ???? ich möchte doch nur des sie waecchst und bei selbst beruehung des prog endet


Anmelden zum Antworten