SNAKE Projekt



  • he ich wollt hier mal mein selbstgeschriebenes snacke
    ich weiß das es noch ausbaubar ist wie zumbeispiel die system() zu entfernen
    deshalb möchte ich euch um weitere verbesserungs vorschläge bitten
    zudem hab ich das problem das wenn ich im spiel andere tasten drück das spiel ins menü kommt
    wenn da jemand ein tip oder einen ansatz hätte

    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <iomanip>      // wird für setw() benötig
    #include <time.h>      //Zeit einbinden
    
    using namespace std;
    
    void gotoxy(int x, int y)
    {
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x-1;
    pos.Y=y-1;
    SetConsoleCursorPosition(hCon, pos);
    }
    
    void spielfeld (int x, int y, int verz,int level) {
         char spielfeld[x][y];
         int i,j,Alt_x,Alt_y;     
         int beweg_y=5;
         int beweg_x=10;    
         int ENDE=0;       
         int nahrung_x=10;
         int nahrung_y=5;         
         int Punkte;
         int X2=x-2;
         int Y2=y-2;     
         int neu=0;
         char eingabe='d';
         int alterx[1024];
         int altery[1025];
         int verg=1;
         int laengeg=10;            
         int laenge=0;
         int info =0;
         int gemacht=0;
         srand(time(NULL)); 
         Punkte=-10*level;     
         system("cls");
         laenge=laengeg-(verg+1);
         for (i=0;i<x;i++){
            for (j=0;j<y;j++){             
                if (i==0 || j==0)  spielfeld[i][j]='\xdb';                     // Erstelt 
                else if (i== x-1 || j== y-1) spielfeld[i][j]='\xdb';           // Spielfeld
                else spielfeld[i][j]=' ';
                cout<<spielfeld[i][j];                                       // Gibt            
                } //ende for 2                                                          //Spielfeld
             cout <<endl;                                                   //Formatiert aus
             } //ende for 1
        for (i=0;i<256;i++){
            alterx[i]=y+1;        // y+1 muss sein da die x und y bei der para übergabe vertauscht wird und als 
            altery[i]=1;          // sicherer punkt wo hingeschrieben werden kann                              
             } //ende for 1       //wird benötigt bei schwanzverlängerung (alter bug)
          alterx[neu]=beweg_x;      
          altery[neu]=beweg_y;
    
     gotoxy(50,19);
     cout<<"Ihr Level ist:"<<setw(3)<<level;
    
      do {
                  if (kbhit()) {eingabe = getch();                             //Bewegt Schlange
    
                  switch (eingabe){
                                    case 'S':
                                    case 's': beweg_y++;
                                              neu++;
                                            break;
                                    case 'W':
                                    case 'w': beweg_y--;
                                             neu++;
                                             break; 
                                    case 'D':       
                                    case 'd': beweg_x++;
                                           neu++;
                                            break;
                                    case 'A':        
                                    case 'a': beweg_x--;
                                           neu++;
                                            break;
                                    case 'E':
                                    case 'e': ENDE=1; 
    
                                      }                      
    
             }// ende if  
          if (spielfeld[beweg_y][beweg_x]== '\x01') ENDE=1;       
          if (ENDE==1|| beweg_y==x||beweg_x==y||beweg_y==1||beweg_x==1) break;
    
          if (laenge<neu)  neu = 0; 
          Alt_y=altery[neu];       
          Alt_x=alterx[neu];
         alterx[neu]=beweg_x;      
         altery[neu]=beweg_y;     
    
                  // Schlangenausgabe 
    
          spielfeld[Alt_y][Alt_x]= ' ';          
          spielfeld[beweg_y][beweg_x]= '\x01';
          gotoxy(beweg_x,beweg_y);
          cout<<spielfeld[beweg_y][beweg_x];                                 
          gotoxy(Alt_x,Alt_y);
          cout<<spielfeld[Alt_y][Alt_x]; 
    
          Sleep(verz);
    
         //Nahrung     
         if (nahrung_x==beweg_x && nahrung_y==beweg_y){
               while (gemacht!=1){
                 nahrung_y = rand()%X2+2;
                 nahrung_x = rand()%Y2+2;
                if(spielfeld[nahrung_y][nahrung_x]!='\x01'){
                 gotoxy(nahrung_x,nahrung_y);
                 spielfeld[nahrung_y][nahrung_x]='\x04';
                 cout<<spielfeld[nahrung_y][nahrung_x];
                 gemacht=1;}
                 }
    
                 gemacht=0;
                 Punkte=Punkte+(10*level);
                 laenge+=verg;
    
              }     
         gotoxy(nahrung_x,nahrung_y);
         cout<<spielfeld[nahrung_y][nahrung_x];
         gotoxy(1,19);
         cout<<"Punkte:"<<setw(6)<<Punkte;   
    
         while(!kbhit()) {
                   //Schlange+ständige bewegung       
    
                switch (eingabe){   
                                    case 'S':
                                    case 's': beweg_y++;
                                              neu++;
                                            break;
                                    case 'W':
                                    case 'w': beweg_y--;
                                             neu++;
                                             break; 
                                    case 'D':       
                                    case 'd': beweg_x++;
                                           neu++;
                                            break;
                                    case 'A':        
                                    case 'a': beweg_x--;
                                           neu++;
                                            break;
                                              }
    
              if (spielfeld[beweg_y][beweg_x]== '\x01') ENDE=1;                                
              if (ENDE==1|| beweg_y==x||beweg_x==y||beweg_y==1||beweg_x==1) break;
    
              if (laenge<neu)  neu = 0; 
              Alt_y=altery[neu];       
              Alt_x=alterx[neu];                              
              alterx[neu]=beweg_x;      
              altery[neu]=beweg_y;
    
              spielfeld[Alt_y][Alt_x]= ' ';        
              spielfeld[beweg_y][beweg_x]= '\x01';
              gotoxy(beweg_x,beweg_y);
              cout<<spielfeld[beweg_y][beweg_x];                                 
              gotoxy(Alt_x,Alt_y);            //Löscht altes feld
              cout<<spielfeld[Alt_y][Alt_x]; 
    
              Sleep(verz);
              //nahrung 
              if (nahrung_x==beweg_x && nahrung_y==beweg_y){
               while (gemacht!=1){
                 nahrung_y = rand()%X2+2;
                 nahrung_x = rand()%Y2+2;
                if(spielfeld[nahrung_y][nahrung_x]!='\x01'){
                 gotoxy(nahrung_x,nahrung_y);
                 spielfeld[nahrung_y][nahrung_x]='\x04';
                 cout<<spielfeld[nahrung_y][nahrung_x];
                 gemacht=1;}
                 }
    
                 gemacht=0;
                 Punkte=Punkte+(10*level);
                 laenge+=verg;      
                  }//ende if     
              gotoxy(nahrung_x,nahrung_y);
              cout<<spielfeld[nahrung_y][nahrung_x];
              gotoxy(1,19);
              cout<<"Punkte:"<<setw(6)<<Punkte;          
    
              }//ende while  
    
    }//ende do-while
    while (ENDE!=1);
         } //ende spielfeld
    
     char menu(int Level){
     char Eingabe;    
     cout<<"                        ___  ___   _____   __   _   _   _   \n";
     cout<<"                       /   |/   | | ____| |  \\ | | |_| |_|  \n";
     cout<<"                      / /|   /| | | |__   |   \\| | | | | |  \n";
     cout<<"                     / / |__/ | | |  __|  | |\\   | | | | |  \n";
     cout<<"                    / /       | | | |___  | | \\  | | |_| |  \n";
     cout<<"                   /_/        |_| |_____| |_|  \\_|  \\____/  \n";
     cout<<"\n\n\n";                    
     cout<<"                               (S)pielen \n";   
     cout<<"                               (O)ptionen \n";     
     cout<<"                               (A)nleitung \n";
     cout<<"                               (E)ende\n";
     gotoxy(50,19);
     cout<<"Ihr Level ist:"<<setw(3)<<Level;
    
     Eingabe=getch();
    
     return Eingabe;
         }//ende menu 
    
    void optionen(int altes_Level, int *Level){
    int eingabe;
    eingabe=altes_Level;
    
    while (eingabe!=6) {
     system("cls");
     altes_Level=eingabe;
     gotoxy(50,20);
     cout<<"Ihr Level ist:"<<setw(3)<<altes_Level;
     gotoxy(1,1);    
     cout<<"         _____   _____   _____   _   _____   __   _   _____   __   _ \n"; 
     cout<<"        /  _  \\ |  _  \\ |_   _| | | /  _  \\ |  \\ | | | ____| |  \\ | |\n"; 
     cout<<"        | | | | | |_| |   | |   | | | | | | |   \\| | | |__   |   \ | | \n";
     cout<<"        | | | | |  ___/   | |   | | | | | | | |\\   | |  __|  | |\\   | \n";
     cout<<"        | |_| | | |       | |   | | | |_| | | | \\  | | |___  | | \\  | \n";
     cout<<"        \\_____/ |_|       |_|   |_| \\_____/ |_|  \\_| |_____| |_|  \\_| \n";
    
     cout<<"\n\n\n";                    
     cout<<"                              Welches Level möchten Sie gerne \n";   
     cout<<"                              1.Level \n";     
     cout<<"                              2.Level \n";
     cout<<"                              3.Level \n";
     cout<<"                              4.Level \n";
     cout<<"                              5.Level \n";
     cout<<"                              6 f\x96r das verlassen der Optionen\n";
     cout<<"                              \n\nIhre Eingabe:";
     cin>>eingabe;
    }//ende while
    *Level=altes_Level;
    return ;
        }//ende optionen
    
    void schluss(int blink){
    
    system("cls");    
    cout<<"                         ___   _   _   _____  \n";
    cout<<"                        /   | | | | | |  ___| \n";
    cout<<"                       / /| | | | | | | |__   \n";
    cout<<"                      / /_| | | | | | |  __|  \n";
    cout<<"                     / /__| | | |_| | | |     \n";
    cout<<"                    /_/   |_| \\_____/ |_|     \n";
    cout<<"        _          __  _   _____   _____   _____   _____   \n";
    cout<<"       | |        / / | | | ____| |  _  \\ | ____| |  _  \\  \n";
    cout<<"       | |  __   / /  | | | |__   | | | | | |__   | |_| |  \n";
    cout<<"       | | /  | / /   | | |  __|  | | | | |  __|  |  _  /  \n";
    cout<<"       | |/   |/ /    | | | |___  | |_| | | |___  | | \\ \\  \n";
    cout<<"       |___/|___/     |_| |_____| |_____/ |_____| |_|  \\_\\ \n";
    cout<<"               _____   _____   _   _   _____   __   _      \n";
    cout<<"              /  ___/ | ____| | | | | | ____| |  \\ | | \n";
    cout<<"              | |___  | |__   | |_| | | |__   |   \\| | \n";
    cout<<"              \\___  \\ |  __|  |  _  | |  __|  | |    | \n";
    cout<<"               ___| | | |___  | | | | | |___  | | \\  | \n";
    cout<<"              /_____/ |_____| |_| |_| |_____| |_|  \\_| \n";
    Sleep(150) ; 
    system("cls"); 
    Sleep(150) ;        
    blink--;
    if (blink!=0) schluss(blink);
    return;          
              }//ende schluss
    
    int main(int argc, char *argv[])
    {
    
     int x=37;
     int y=17;
     int blinken=10;
     int Level=3;
     int verzoegerung; 
     char eingabe;
     int ende=1;
     while (ende!=0){
     eingabe=menu(Level);     
         switch (Level){
            case 1:verzoegerung=450;
                 break;
            case 2:verzoegerung=350;
                 break; 
            case 3:verzoegerung=200;
                 break;
            case 4:verzoegerung=150;
                 break;
            case 5:verzoegerung=100;
                 break;
                 }//ende switch               
          switch (eingabe) {
                 case 'S':
                 case 's':spielfeld(y,x,verzoegerung,Level);
                            break;
                 case 'O':
                 case 'o':optionen(Level,&Level);    
                            break;
                 case 'A':                                  
                 case 'a':
                            break;
                 case 'E':
                 case 'e':schluss(blinken);
                          ende=0;
                             break;
                 default: gotoxy(1,21);
                          cout<< "Sie haben ein Falsches Zeichen eingegeben\n";
                          Sleep(1000);
                             break; 
                 }//ende switch
    
         system("cls");
    
          }//ende while
    
    }//ende main
    //by 6.1.2.9.1.14..11.5.13.16.6
    


  • mein selbstgeschriebenes snacke

    omg das hast von ten-c++-rules geklaut -.-

    hast nur die comments glöscht omg.. lern mal was



  • Owned -



  • Ich find immer toll, dass einige meinen fremdes Eigentum als ihres auszugeben. 🙄



  • ist zwar selber geschirieben aber egal
    hab nur die gotoxy funktion ausm i-net
    sonst alles selber geschrieben
    und wenn ihr mein das ich das von jemanden geklaut haben soll
    dann postet dem sein quelltext
    das ich persönlich mich davon überzeugen kann das jemand anderst
    mehr oder weniger die selbe idee hatte



  • das einzige was du selber geschrieben hast, sind die comments 🙄



  • omg_copy_und_paster schrieb:

    mein selbstgeschriebenes snacke

    omg das hast von ten-c++-rules geklaut -.-

    hast nur die comments glöscht omg.. lern mal was

    STIMMT!

    HAB ES VON DORT AUCH GRAD GELESEN, DIESEN COPY UND PASTE SCHEISS LAST DU UND ZWAR SOFORT!!!!! 😡



  • dann poste doch den quelltext den ich angeblich geklaut haben soll
    und kannst mir dann mal verraten warum ich dann hier mein programm reinstellen soll
    wenn ich es geklaut haben soll



  • Unabhängig vom Urheberstreit
    sieht mir der Quelltext redundant aus. Da sollte programmiertechnisch noch
    einiges möglich sein.

    So einen Quelltext in 10-c++-Regeln? Ein Beispiel das nach Optimierung ruft?
    Oder wozu sonst in den Regeln?

    Überigens Google streikt bei mir auf der Suche nach den Regeln: Buch oder Netz?

    MfG f.-th.



  • ich weiß das der quelltext schlecht geschrieben ist und noch um einiges optiemirt werden kann deswegen hab ich ihn ja au gepostet
    ich möchte ja was dazu lernen und von anderen tipps bekommen wie ich das
    proramm optiemiren kann wie z.b das es nicht abbricht wenn ich ne andere taste als "awsd" im spiel drück hab da zwar schon einiges ausprobiert aber noch keine lösung gefunden hab es mit ner if vor dem switch versucht hat aber nicht funktioniert
    ich fang auch erst an mit dem programmieren
    was meinst du mit den 10 c++-regeln???



  • find ich trodzdem aber abkopiert, weil er dem auf der 10-rules page sehr ähnelt.

    oCuP gesagt hat sind nur die kommentare gelöscht worden.

    ok drauf geb ich sicherlich keine antwort mehr ...

    @mod: bitte closen, da copyright entfernt und er es als seinen code bestimmt hat.



  • es tut mir leid wenn mein cod dem sehr ähnelt kann ich nix dafür
    hab ihn selbst geschrieben
    aber könntest du mir vll ne link zu der seite geben das ich mir selbst ein bild machen kann wie dieser dort aussieht



  • Ist ja toll hier das diverse User unter gleichem Namen posten.
    Wird das jetzt hier auch chaotisch?



  • Max&Moritz schrieb:

    Ist ja toll hier das diverse User unter gleichem Namen posten.
    Wird das jetzt hier auch chaotisch?

    nö is eh meins 😉

    Wollte ihm nur klar machen, dass er sowas nicht tun soll.



  • ob geklaut oder nicht, kann mir jemand die Funktionsweiße des Programms erleutern??

    *total lieb in die runde blickt* ^^



  • qriz schrieb:

    ob geklaut oder nicht, kann mir jemand die Funktionsweiße des Programms erleutern??

    *total lieb in die runde blickt* ^^

    zwei accounts bringen dir wohl was, na? 🙄

    BITTE CLOSEN.



  • ähh ehrlich gesagt, bin ich eine Person. ^^ Ich schäme mich nicht das ich keine ahnung hab vom Programmieren, und klauen tu ich nich.(arbeite noch an meinen Pokerprogramm, wenn du willst kanns ich hier ja reinlinken.. ^^) Ich bin nur interressiert wie der Script funktioniert daher mir einige Befehle nicht geläufig ist.



  • Wenn du nicht weißt, wie es funzt, woher hast du es dann? 😮



  • Ich betone nochmal ich hab nichts mit dem DR::Kill zu tun!!

    Wenn ihr zufaul seid mir es nicht genau zu erklären flamed mich nich an(Ich zwinge euch ja auch nicht dazu(hätte es halt nur nett gefunden wenn mir jemand das ein oder andere erkärt hätte daher ich ja grob mit dem script klar komme)). ich kann mir meine Informationen auch anders besorgen

    (signed für das close)



  • Was ist dir denn dann genau unbekannt?

    system("cls")? >Doof (s.FAQ)
    Sleep()? >Naja, Ich hab grad kein Windos


Log in to reply