Ergebnis 1 bis 5 von 5
  1. #1
    Gesperrt
    Registriert seit
    05.09.2008
    Beiträge
    654

    Standard [C] Komm nicht mehr weiter bei Snake Game.

    Moin, ich probier mich zurzeit an einer C - Version von Snake. Allerdings hab ich schon am Anfang Probleme:

    1. Ich weiß nicht, wie ich es machen soll, dass der Rahmen die Funktion clrscr() überleben sollte. Die Funktion entfernen kann ich auch nicht, da ich diese explizit für das Spiel brauche.

    2. Ist der ganze Bewegunsablauf ein bisschen "buggy" seitdem ich aus einem Zeichen einen Schwanz von 3 Zeichen gemacht habe.

    Kann mir wer helfen?

    Hier mal der Source Code:

    PHP-Code:
    #include <stdio.h>
    #include "gconio.h"
    #define MAX_X 30
    #define MAX_Y 20
    #define ZAEHLER 3

    int rahmen();
               
    void main(){
        

        
    char taste='a';
        
    int x=5,y=5,a,d,bla=1;
        
    int feind_x,feind_y;
        
    int schwanz[4];
        
    int zaehler=1;
        

        
    srand time(NULL) );
        
    feind_x=rand()%50;
        
    feind_y=rand()%50;

        
    //printf("%d\n",feind_x); 
        //printf("%d\n",feind_y);

        
        
        
            
    while ( bla==1)
            
        {
            
                
                if (
    kbhit())
                    
                {
                    
    taste=getch();

                    switch (
    taste) {

                        
                        
                        case 
    'a':
                            
    x--;
                            if (
    x<=1)
                            
    x=MAX_X;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);
                            
    printf("#");
                            
    gotoxy(schwanz[x+1],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x+2],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x+3],y);
                            
    printf("#");
                            break;
                            
                        
                            
                            

                        case 
    'd':
                            
    x++;
                            if (
    x>=MAX_X)
                            
    x=1;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);            
                            
    printf("#");
                            
    gotoxy(schwanz[x-1],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x-2],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x-3],y);
                            
    printf("#");
                            break;

                            case 
    'w':
                            
    y--;
                            if (
    y<=1)
                            
    y=MAX_Y;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y+1]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y+2]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y+3]);
                            break;

                        case 
    's':
                            
    y++;
                            if (
    y>=MAX_Y)
                            
    y=1;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y-1]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y-2]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y-3]);
                            break;
                            

                    }

                        
                    

                }


                else {

                    switch (
    taste) {

                
                
                        case 
    'a':
                            
    x--;
                            if (
    x<=1)
                            
    x=MAX_X;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);
                            
    printf("#");
                            
    gotoxy(schwanz[x+1],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x+2],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x+3],y);
                            
    printf("#");
                            break;
                            
                        
                            
                            

                        case 
    'd':
                            
    x++;
                            if (
    x>=MAX_X)
                            
    x=1;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);            
                            
    printf("#");
                            
    gotoxy(schwanz[x-1],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x-2],y);
                            
    printf("#");
                            
    gotoxy(schwanz[x-3],y);
                            
    printf("#");
                            break;

                            case 
    'w':
                            
    y--;
                            if (
    y<=1)
                            
    y=MAX_Y;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y+1]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y+2]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y+3]);
                            break;

                        case 
    's':
                            
    y++;
                            if (
    y>=MAX_Y)
                            
    y=1;
                            
    clrscr();
                            
    rahmen();
                            
    gotoxy(x,y);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y-1]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y-2]);
                            
    printf("#");
                            
    gotoxy(x,schwanz[y-3]);
                            break;
                            
                            

                    }

                }


        } 



                    



        }

    int rahmen()

    {

        
    int rahmen_x=1,rahmen_y=1;

        while (
    rahmen_x < (MAX_X+2))
            {
                
    gotoxy(rahmen_x,1);
                
    printf("A");
                
    rahmen_x++;    
            }

            while (
    rahmen_y < (MAX_Y+2))

            {
                
    gotoxy(1,rahmen_y);
                
    printf("A");
                
    rahmen_y++;
            }

            
    rahmen_x=1;
            
    rahmen_y=1;

            while (
    rahmen_x < (MAX_X+2))
            {
                
    gotoxy(rahmen_x,(MAX_Y+2));
                
    printf("A");
                
    rahmen_x++;    
            }

            while (
    rahmen_y < (MAX_Y+2))

            {
                
    gotoxy(MAX_X,rahmen_y);
                
    printf("A");
                
    rahmen_y++;
            }


            return 
    1;



  2. #2
    W32.Lovgate Avatar von 4ndre
    Registriert seit
    15.03.2009
    Beiträge
    344

    Standard

    Zitat Zitat von der_Dude Beitrag anzeigen

    1. Ich weiß nicht, wie ich es machen soll, dass der Rahmen die Funktion clrscr() überleben sollte. Die Funktion entfernen kann ich auch nicht, da ich diese explizit für das Spiel brauche.
    Überhaupt nicht. Das Zeichnen des Rahmens lagerst du in eine Funktion aus, die du nach jedem Löschen des Bildschirms aufrufst.

    //Edit: http://www.gamespp.com/sourcecode/wsnake.zip guck dir das mal an
    Geändert von 4ndre (13.02.2010 um 23:11 Uhr)

  3. #3
    Gesperrt
    Registriert seit
    05.09.2008
    Beiträge
    654

    Standard

    Hättest du dir meinen Src angeschaut, wärest du drauf gekommen, dass ich das bereits gemacht habe

  4. #4
    Stiller Leser
    Registriert seit
    03.10.2007
    Beiträge
    67

    Standard

    void main(){
    hahaohwow. Welchen Compiler nutzt du denn?


    gconio.h
    Ich nutze POSIX-konforme Betriebsysteme und was ist das?

  5. #5
    CIH-Virus Avatar von -[RiDER]-
    Registriert seit
    05.01.2007
    Beiträge
    496

    Standard

    Hi,

    ich würde behaupten, dass es nicht gerade zweckmäßig ist, ein Snake-Game auf diese Art und Weise zu schreiben...

    Du solltest eine Bibliothek einsetzen, die Dir die wichtigen Dinge bei der Spieleprogrammierung etwas näher bringt, z.B. Tastaturabfragen, die Grafik usw.

    Schau Dir doch mal Allegro [http://www.allegro.cc/] an, Google sollte Dir ein paar einfache Tutorials ausspucken, außerdem kannst Du Dir auf der Website selbst ein paar Source-Codes reinziehn. Centipede [http://www.allegro.cc/depot/Centipede/] sieht z.B. vielversprechend aus.

    Viel Erfolg.
    GreetZ RiDER
    Geändert von -[RiDER]- (22.02.2010 um 09:53 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •