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;