Wo ist Fehler?



  • Hallo!
    Also ich muss in der Schule ein Spiel in C/C++ programmieren!
    Derzeit sieht mein Quellcode so aus:

    ...

    Die Fehlermeldung ist folgende:Declaration terminated incorrectly
    Ich programmier mit Borland C 3.1 und Bloodsheed!

    danke im vorraus

    mfg Mike

    Edit by c.rackwitz: hab den unformatierten code geloescht, weil er ein paar posts weiter unten ordentlich gepostet wurde. cpp-Tags benutzen und Code einruecken bitte



  • Das mit den Code-Tags zwischen [ cpp] und [ /cpp] üben wir aber nochmal! So sieht sich das ja keiner freiwillig an 😉

    BTW: Dein Compiler gibt doch auch sicher eine Zeile an, in der sich der Fehler befindet?

    MfG SideWinder



  • 😃 O.K 👍 😃

    #include <graphics.h>
    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <comm.h>
    
    int y1,y2,
        xb,yb,
        xb_dir=1,yb_dir=1,
        del=10,
        lvl=4,
        mode,
        ast=0,
        ric,ric1;
    int xb1,yb1,
        xb_dir1,yb_dir1,
        twoball=0,
        score1=0,score2=0,scoremax=5;
    long k=1;
    
    void drawball(int i,int j,int c1,int c2);
    void drawbrick1(int i,int c);
    void drawbrick2(int i,int c);
    void drawborder();
    void graphinit();
    void display();
    void start();
    void menu();
    void move();
    void ai1();
    void ai2();
    void win();
    
    main() 
    { 
       menu(); 
       start(); 
       move(); 
    }
    
    void graphinit()
    {
       int driver=DETECT,mode;
       initgraph(&driver,&mode,"C:\BC31\bgi");
    }
    
    void menu()
    {
       char opt;
       _setcursortype(_NOCURSOR); 
       st: clrscr();
    
       gotoxy(31,5); 
       textcolor(9); 
       cprintf("P I N G - P O N G");
    
       gotoxy(33,9); 
       textcolor(12); 
       cprintf("S");
       gotoxy(34,9); 
       textcolor(10); 
       cprintf("ingle Player");
    
       gotoxy(34,12); 
       textcolor(12); 
       cprintf("M");
       gotoxy(35,12); 
       textcolor(10); 
       cprintf("ultiplayer");
    
       gotoxy(32,18); 
       textcolor(12); 
       cprintf("G");
       gotoxy(33,18); 
       textcolor(10); 
       cprintf("ame speed: %d",del);
    
       gotoxy(37,24); 
       textcolor(12); 
       cprintf("Q");
       gotoxy(38,24); 
       textcolor(10); 
       cprintf("uit");
    
       for( ; ; )
       {
          opt=getch();
          if(opt=='G'||opt=='g') 
          { 
             del++; 
             if(del==21) 
                del=3; 
             goto st; 
          }
    
          if(opt=='Q'||opt=='q')
          { 
             clrscr(); 
             cout<<" Bye!"; 
             delay(500); 
             exit(0); 
          }
    
          if(opt=='s'||opt=='S') 
          { 
             mode=1; 
             dif(); 
             return; 
          }
    
          if(opt=='m'||opt=='M') 
          { 
             mode=2; 
             return; 
          }
       }
    }
    
    void start()
    {
       int j; 
       randomize(); 
       j=random(100);
       yb_dir=-1; 
       yb_dir1=1;
    
       if(j%2==0) 
       { 
          xb_dir=1; 
          xb_dir1=-1; 
       }
       else 
       { 
          xb_dir=-1; 
          xb_dir1=1; 
       }
    
       graphinit(); 
       drawborder();
    
       xb=320; 
       yb=400; 
       xb1=320; 
       yb1=80; 
       y1=y2=200;
    
       drawbrick1(y1,2); drawbrick2(y2,2);
    
       drawball(xb,yb,4,1);
    }
    
    void drawborder()
    { 
       setcolor(1);
       rectangle(5,4,635,476);
    }
    
    void drawbrick1(int i,int c)
    {
       int brick1[10]={634,i,634,i+100,611,i+100,611,i,634,i};
    
       setcolor(c);
       setfillstyle(7,c); 
       fillpoly(4,brick1);
    }
    
    void drawbrick2(int i,int c)
    {
       int brick2[10]={6,i,28,i,28,i+100,6,i+100,6,i};
    
       setcolor(c);
       setfillstyle(8,c); 
       fillpoly(4,brick2);
    }
    
    void win()
    {
       if((xb<24&&xb_dir==-1&&xb>15)&&!ric)
       {
          score1++; 
          ric=1;
          if(scoremax)
             if(score1==scoremax)
             { 
                gotoxy(33,15); 
                cout<<"Player 1 wins!"; 
                delay(2000); 
                exit(0); 
             }
       }
       if((xb>611&&xb_dir==1&&xb<616)&&!ric)
       {
          score2++; 
          ric=1;
    
          if(scoremax)
             if(score2==scoremax)
             { 
                gotoxy(33,15); 
                cout<<"Player 2 wins!"; 
                delay(2000); 
                exit(0); 
             }
       }
       if((xb1<24&&xb_dir1==-1&&xb>15)&&!ric1)
       {
          score1++; 
          ric1=1;
    
          if(scoremax)
             if(score1==scoremax)
             { 
                gotoxy(33,15); 
                cout<<"Player 1 wins!"; 
                delay(2000); 
                exit(0); 
             }
       }
       if((xb1>611&&xb_dir1==1&&xb1<616)&&!ric1)
       {
          score2++; 
          ric1=1;
    
          if(scoremax)
             if(score2==scoremax)
             { 
                gotoxy(33,15); 
                cout<<"Player 2 wins!"; 
                delay(2000); 
                exit(0); 
             }
       }
    }
    
    void move()
    {
       char a;
    
       while(a!=ESC)
       {
          a=0;
          if(kbhit())
          {
             a=getch();
             if(a==UP&&y1>15)
             { 
                drawbrick1(y1+1,0); 
                y1-=10; 
                drawbrick1(y1,2); 
             }
             if(a==DOWN&&y1<365)
             { 
                drawbrick1(y1,0); 
                y1+=10; 
                drawbrick1(y1,2); 
             }
             if(mode==2)
             {
                if(a=='w'&&y2>15)
                { 
                   drawbrick2(y2+1,0); 
                   y2-=10; 
                   drawbrick2(y2,2); 
                }
                if(a=='s'&&y2<365)
                { 
                   drawbrick2(y2,0); 
                   y2+=10; 
                   drawbrick2(y2,2); 
                }
             }
          }
          drawball(xb,yb,0,0);
    
          if(twoball) 
             drawball(xb1,yb1,0,0);
    
          xb+=xb_dir*5; 
          yb+=yb_dir*3;
    
          if(twoball) 
          { 
             xb1+=xb_dir1*4; 
             yb1+=yb_dir1*2; 
          }
    
          drawball(xb,yb,4,1);
    
          if(twoball) 
             drawball(xb1,yb1,14,9);
    
          win();
    
          if(k%lvl==0) 
             if(mode!=2) 
                ai1();
    
          if(ast) 
             if(k%ast==0) 
                ai2();
    
          k++; 
    
          if(ric) 
             ric++; 
    
          if(ric>110) 
             ric=0;
    
          if(ric1) 
             ric1++; 
    
          if(ric1>110) 
             ric1=0;
    
          delay(del);
    
          if(yb>462||yb<18)
          { 
             sound(1500); 
             delay(1); 
             nosound(); 
             yb_dir*=-1; 
          }
          if(xb>619||xb<21||(xb==40&&(yb-y2<100&&yb-y2>0))|| (xb==600&&(yb-y1<100&&yb-y1>0)))
          { 
             xb_dir*=-1; 
          }
       }
    }
    }
    
    void ai1()
    {
       if(yb>y2+25&&xb<320&&xb_dir==-1&&y2<365)
       { 
          drawbrick2(y2,0); 
          y2+=10; 
          drawbrick2(y2,2); 
       }
       if(yb<y2+25&&xb<320&&xb_dir==-1&&y2>15)
       { 
          drawbrick2(y2+1,0); 
          y2-=10; 
          drawbrick2(y2,2); 
       }
       if(xb_dir==1)
       {
          if(y2+50>240) 
          { 
             drawbrick2(y2+1,0); 
             y2-=10; 
             drawbrick2(y2,2); 
          }
          if(y2+50<23cool 
          { 
             drawbrick2(y2,0); 
             y2+=10; 
             drawbrick2(y2,2); 
          }
       }
    }
    
    void ai2()
    {
       if(yb>y1+50 && xb>320 && xb_dir==1&&y1<365)
       { 
          drawbrick1(y1,0); 
          y1+=10; 
          drawbrick1(y1,2); 
       }
       if(yb<y1+50 && xb>320 && xb_dir==1&&y1>15)
       { 
          drawbrick1(y1+1,0); 
          y1-=10; 
          drawbrick1(y1,2); 
       }
    }
    
    }
    

    Bei

    void menu()
    {
    

    zeigt er den Fehler an!

    Edit by AJ: mal gscheit formatiert



  • in der zeile ...

    int driver=DETECT,mode;
    

    kann es sein das die initialisierung falsch ist ?! sollte doch eigentlich immer von rechts nach links initialisiert werden.

    grüßle



  • Du meinst

    int mode,driver;
    driver=DETECT;
    

    ?



  • dein code ist ein einziger fehler.

    - klammern fehlen. dein code KANN nicht funktionieren
    - einen "=-" operator gibt es nicht (mehr)
    - ruecke deinen code ein, aber bitte sauber



  • Hallo!
    Ich habe erst seit diesem Schuljahr Informatik und kenne mich halt noch nicht so aus 😡 ⚠

    -Welche Klammern?
    -Wo habe ich den benutzt (finde ihn nicht)!Habe ledeglich "==-" geschrieben!
    -Ich habe den Code eingerückt aber es wird hier nicht angezeigt!



  • wenn du eingerueckten code in [ cpp ] tags steckst, dann wird der auch ordentlich angezeigt.
    poste deinen code am besten nochmal neu. der code in deinem letzten post scheint ne einfache kopie deines ersten posts zu sein, weil dort code durch smileys ersetzt wurde.

    deine =- operatoren kannst du suchen, indem du in deinem editor (devcpp scheinbar) die suchfunktion benutzt.
    dieser operator heisst richtig "-=".

    gotos verwendest du bitte nicht, okay? wenn du gruende willst:
    http://www.acm.org/classics/oct95/
    http://en.wikipedia.org/wiki/Spaghetti_code



  • c.rackwitz schrieb:

    deine =- operatoren kannst du suchen, indem du in deinem editor (devcpp scheinbar) die suchfunktion benutzt.
    dieser operator heisst richtig "-=".

    Wie kommst du darauf, dass der -= Operator gemeint ist, wo =- steht? =- sind zwei Operatoren hintereinander.

    Schneida_M: Es ist wirklich kein Vergnügen, sich durch diesen Code durchzubeißen. Deshalb werd ich das auch nicht tun. An der Fehlerstelle und kurz davor ist jedenfalls nichts offensichtlich falsches, mal vom falschen Gebrauch des Backslashs im String abgesehen. "C:\BC31\bgi" schreibt man in C "C:\\BC31\\bgi", weil ein einzelner \ eine Escape-Sequenz einleitet.



  • #include <iostream.h>
    

    lässt darauf schliessen dass das C++-code ist.
    also ist

    main() { menu(); start(); move(); }
    

    illegal
    versuchs mit

    int main() { menu(); start(); move(); return 0;}
    

    Kurt



  • Bashar schrieb:

    Wie kommst du darauf, dass der -= Operator gemeint ist, wo =- steht? =- sind zwei Operatoren hintereinander.

    diesen operator gab es mal und als ich indent auf den code loslassen wollte, hat sich dieses unter anderem ueber diese mehrdeutige stelle beschwert. ein einfaches leerzeichen wuerde wunder wirken.



  • c.rackwitz schrieb:

    diesen operator gab es mal

    Ja, vor 30 Jahren. Im K&R läuft der schon unter "gabs mal". Vielleicht hat dein indent auch eine ANSI-Funktion ...



  • ZuK schrieb:

    #include <iostream.h>
    

    lässt darauf schliessen dass das C++-code ist.
    also ist

    main() { menu(); start(); move(); }
    

    illegal
    versuchs mit

    int main() { menu(); start(); move(); return 0;}
    

    Kurt

    int sollte immer vor main() stehen, egal ob C oder C++.

    c.rackwitz schrieb:

    gotos verwendest du bitte nicht, okay?

    Also ich weiß nicht, was du hast. Ich kann kein einziges goto in seinem Coding finden. Vielleicht solltest du den Code doch mal lieber durch"lesen" als ihn durch ein Programm zu jagen.

    Für mich sieht das Coding eher nach Borland aus. Noch dazu, dass auch der entsprechende Pfad zur BGI-Grafik enthalten ist ;).

    Vielleicht ist der Fehler behoben indem man einfach das macht, was sich gehört und zwar zuminest ein return() in die main()!



  • Schneida_M schrieb:

    void menu()
    {
    st: clrscr();
      //...
      for(;;)
      {
        opt=getch();
        if(opt=='G'||opt=='g') { del++; if(del==21) del=3; goto st; }
        //..
      }
    }
    

    *mal etwas gekürzt* Da hast du ein goto 😉



  • CStoll (off) schrieb:

    Schneida_M schrieb:

    void menu()
    {
    st: clrscr();
      //...
      for(;;)
      {
        opt=getch();
        if(opt=='G'||opt=='g') { del++; if(del==21) del=3; goto st; }
        //..
      }
    }
    

    *mal etwas gekürzt* Da hast du ein goto 😉

    Ok, ich nehm alles zurück und behaupte das Gegenteil 🤡

    Außerdem wird das jetzt mal gescheit formatiert...



  • Also ich habe den Quellcode noch etwas geändert:

    #include <graphics.h>
    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <comm.h>
    #include <dos.h>
    
    int y1,y2,
        xb,yb,
        xb_dir=1,yb_dir=1,
        del=10,
        lvl=4,mode,
        ast=0,
        ric,ric1;
    int xb1,yb1,
        xb_dir1,yb_dir1,
        twoball=0,
        score1=0,score2=0,scoremax=5;
        long k=1;
    
    void drawball(int i,int j,int c1,int c2);
    void drawbrick1(int i,int c);
    void drawbrick2(int i,int c);
    void drawborder();
    void graphinit();
    void display();
    void start();
    void menu();
    void move();
    void ai1();
    void ai2();
    void win();
    
    int main()
    {
       menu();
       start();
       move();
       return 0;
    }
    
    void graphinit()
    {
       int driver=DETECT,mode;
       initgraph(&driver,&mode,"C:\BC31\bgi");
    }
    
    void menu()
    {
       char opt;
       _setcursortype(_NOCURSOR);
       st: clrscr();
    
       gotoxy(31,5);
       textcolor(9);
       cprintf("P I N G - P O N G");
    
       gotoxy(33,9);
       textcolor(12);
       cprintf("S");
       gotoxy(34,9);
       textcolor(10);
       cprintf("ingle Player");
    
       gotoxy(34,12);
       textcolor(12);
       cprintf("M");
       gotoxy(35,12);
       textcolor(10);
       cprintf("ultiplayer");
    
       gotoxy(32,18);
       textcolor(12);
       cprintf("G");
       gotoxy(33,18);
       textcolor(10);
       cprintf("ame speed: %d",del);
    
       gotoxy(37,24);
       textcolor(12);
       cprintf("Q");
       gotoxy(38,24);
       textcolor(10);
       cprintf("uit");
    
       for( ; ; )
       {
          opt=getch();
          if(opt=='G'||opt=='g')
          {
             del++;
             if(del==21)
                del=3;
             goto st;
          }
    
          if(opt=='Q'||opt=='q')
          {
             clrscr();
             cout<<" Bye!";
             delay(500);
             exit(0);
          }
    
          if(opt=='s'||opt=='S')
          {
             mode=1;
             dif();
             return;
          }
    
          if(opt=='m'||opt=='M')
          {
             mode=2;
             return;
          }
       }
    }
    
    void start()
    {
       int j;
       randomize();
       j=random(100);
       yb_dir=-1;
       yb_dir1=1;
    
       if(j%2==0)
       {
          xb_dir=1;
          xb_dir1=-1;
       }
       else
       {
          xb_dir=-1;
          xb_dir1=1;
       }
    
       graphinit();
       drawborder();
    
       xb=320;
       yb=400;
       xb1=320;
       yb1=80;
       y1=y2=200;
    
       drawbrick1(y1,2); drawbrick2(y2,2);
    
       drawball(xb,yb,4,1);
    }
    
    void drawborder()
    {
       setcolor(1);
       rectangle(5,4,635,476);
    }
    
    void drawbrick1(int i,int c)
    {
       int brick1[10]={634,i,634,i+100,611,i+100,611,i,634,i};
    
       setcolor(c);
       setfillstyle(7,c);
       fillpoly(4,brick1);
    }
    
    void drawbrick2(int i,int c)
    {
       int brick2[10]={6,i,28,i,28,i+100,6,i+100,6,i};
    
       setcolor(c);
       setfillstyle(8,c);
       fillpoly(4,brick2);
    }
    
    void win()
    {
       if((xb<24&&xb_dir==-1&&xb>15)&&!ric)
       {
          score1++;
          ric=1;
          if(scoremax)
             if(score1==scoremax)
             {
                gotoxy(33,15);
                cout<<"Player 1 wins!";
                delay(2000);
                exit(0);
             }
       }
       if((xb>611&&xb_dir==1&&xb<616)&&!ric)
       {
          score2++;
          ric=1;
    
          if(scoremax)
             if(score2==scoremax)
             {
                gotoxy(33,15);
                cout<<"Player 2 wins!";
                delay(2000);
                exit(0);
             }
       }
       if((xb1<24&&xb_dir1==-1&&xb>15)&&!ric1)
       {
          score1++;
          ric1=1;
    
          if(scoremax)
             if(score1==scoremax)
             {
                gotoxy(33,15);
                cout<<"Player 1 wins!";
                delay(2000);
                exit(0);
             }
       }
       if((xb1>611&&xb_dir1==1&&xb1<616)&&!ric1)
       {
          score2++;
          ric1=1;
    
          if(scoremax)
             if(score2==scoremax)
             {
                gotoxy(33,15);
                cout<<"Player 2 wins!";
                delay(2000);
                exit(0);
             }
       }
    }
    
    void move()
    {
       char a;
    
       while(a!=ESC)
       {
          a=0;
          if(kbhit())
          {
             a=getch();
             if(a==UP&&y1>15)
             {
                drawbrick1(y1+1,0);
                y1-=10;
                drawbrick1(y1,2);
             }
             if(a==DOWN&&y1<365)
             {
                drawbrick1(y1,0);
                y1+=10;
                drawbrick1(y1,2);
             }
             if(mode==2)
             {
                if(a=='w'&&y2>15)
                {
                   drawbrick2(y2+1,0);
                   y2-=10;
                   drawbrick2(y2,2);
                }
                if(a=='s'&&y2<365)
                {
                   drawbrick2(y2,0);
                   y2+=10;
                   drawbrick2(y2,2);
                }
             }
          }
          drawball(xb,yb,0,0);
    
          if(twoball)
             drawball(xb1,yb1,0,0);
    
          xb+=xb_dir*5;
          yb+=yb_dir*3;
    
          if(twoball)
          {
             xb1+=xb_dir1*4;
             yb1+=yb_dir1*2;
          }
    
          drawball(xb,yb,4,1);
    
          if(twoball)
             drawball(xb1,yb1,14,9);
    
          win();
    
          if(k%lvl==0)
             if(mode!=2)
                ai1();
    
          if(ast)
             if(k%ast==0)
                ai2();
    
          k++;
    
          if(ric)
             ric++;
    
          if(ric>110)
             ric=0;
    
          if(ric1)
             ric1++;
    
          if(ric1>110)
             ric1=0;
    
          delay(del);
    
          if(yb>462||yb<18)
          {
             sound(1500);
             delay(1);
             nosound();
             yb_dir*=-1;
          }
          if(xb>619||xb<21||(xb==40&&(yb-y2<100&&yb-y2>0))|| (xb==600&&(yb-y1<100&&yb-y1>0)))
          {
             xb_dir*=-1;
          }
       }
    }
    
    void ai1()
    {
       if(yb>y2+25&&xb<320&&xb_dir==-1&&y2<365)
       {
          drawbrick2(y2,0);
          y2+=10;
          drawbrick2(y2,2);
       }
       if(yb<y2+25&&xb<320&&xb_dir==-1&&y2>15)
       {
          drawbrick2(y2+1,0);
          y2-=10;
          drawbrick2(y2,2);
       }
       if(xb_dir==1)
       {
          if(y2+50>240)
          {
             drawbrick2(y2+1,0);
             y2-=10;
             drawbrick2(y2,2);
          }
    	  if((y2+50)<23 cool);
    	  {
             drawbrick2(y2,0);
             y2+=10;
             drawbrick2(y2,2);
          }
       }
    }
    
    void ai2()
    {
       if(yb>y1+50 && xb>320 && xb_dir==1&&y1<365)
       {
          drawbrick1(y1,0);
          y1+=10;
          drawbrick1(y1,2);
       }
       if(yb<y1+50 && xb>320 && xb_dir==1&&y1>15)
       {
          drawbrick1(y1+1,0);
          y1-=10;
          drawbrick1(y1,2);
       }
    }
    
    ;
    

    Folgende Fehlermeldungen:

    ╔═[■]══════════════════════════════ Message ═════════════════════════════2═[↑]═╗
    ║ Compiling ..\..\DOKUME~1\MICHAEL\DESKTOP\PINGPONG.CPP: ▲
    ║•E~1\MICHAEL\DESKTOP\PINGPONG.CPP 111: Function 'dif' should have a prototype ▒
    ║ Error ..\..\DOKUME~1\MICHAEL\DESKTOP\PINGPONG.CPP 363: If statement missing )▒

    Zeile
    E~1\MICHAEL\DESKTOP\PINGPONG.CPP 111: Function 'dif' should have a prototype

    if(opt=='s'||opt=='S')
          {
             mode=1;
             dif();
             return;
          }
    

    Zeile
    Error ..\..\DOKUME~1\MICHAEL\DESKTOP\PINGPONG.CPP 363: If statement missing )

    if((y2+50)<23 cool);
    	  {
             drawbrick2(y2,0);
             y2+=10;
             drawbrick2(y2,2);
          }
    


  • die funktion dif() gibts nicht
    guck dir das if an. da hat sich ein smiley eingeschlichen und den code zerstoert.



  • Danke jetzt zeigt er keine Fehlermeldungen mehr an!
    Dafür steht jetzt wenn ich das Programm in meinen Compiler (Borland 3.1) ausführen will folgender Error:

    Can't run a Windows EXE file

    ..\..\SOUNDER.EXE

    Wie kann ich den beheben?



  • schmeiss borland in die tonne und nimm was ordentliches. sorry, aber so ist das leben.



  • Und welchen Compiler würdest du mir empfehlen (ausser Bloodsheet der gefällt mir nich)?


Anmelden zum Antworten