Problem bei der Realisierung eines kleinen Konsolenspieles



  • Hallo zusammen!
    Hab ein Problem mit meinem Programm. Wenn ich einen Haltepunkt bei while(1) setzte zeigt er mir dann folgende Informationen:{m_x=??? m_y=??? m_statusG???}
    CXX0030:Fehler:Ausdruck kann nicht ausgewertet werden.
    weis nicht was das heißen soll. vl weis es wer von euch
    Hier mal der Code:

    #include<stdlib.h> 
    #include<stdio.h> 
    #include<conio2.h> 
    #include<conio.h> 
    #include<iostream> 
    #include<windows.h> 
    #include<dos.h> 
    #include<time.h> 
    #include<list> 
    
    using namespace std; 
    
    void gotoxy(int x,int y){......} 
    
    void clrscr(){.......} 
    
    class Geschoss{ 
            private: 
              int m_x; 
              int m_y; 
    
            public: 
              bool m_statusG; 
              int Bewegung(); 
              Geschoss(int x,int y){ 
                  m_x=x; 
                  m_y=y; 
                  } 
              }; 
    
    int Geschoss::Bewegung(){ 
           do{ 
             clrscr(); 
             gotoxy(m_x,m_y); 
             cout<<"*"; 
             m_y--; 
             clrscr(); 
             }while(m_y>=1); 
           return 0; 
           }; 
    
    int main(){ 
        int x=20, y=22; 
        list<Geschoss> kugeln; 
        list<Geschoss>::iterator iter; 
    
        while(1){ 
          if(GetAsyncKeyState(0x57)){kugeln.push_back(Geschoss(x,y));} 
          if(GetAsyncKeyState(0x1B)){exit(0);} 
          if(GetAsyncKeyState(0x41)){x--;} 
          if(GetAsyncKeyState(0x44)){x++;} 
          for (iter = kugeln.begin(); iter != kugeln.end(); ++iter){ 
              iter->Bewegung();} 
    
          Sleep(50); 
    
          } 
    
        _getch(); 
    }
    

    Bitte helft mir das ich das Spiel bald fertig habe. mfg



  • this==0 nehme ich an.



  • Danke, kann nur leida damit nicht viel anfangen da ich noch nicht so lange programmiere. Was muss ich ändern?? mfg



  • franz-21 schrieb:

    Danke, kann nur leida damit nicht viel anfangen da ich noch nicht so lange programmiere. Was muss ich ändern?? mfg

    war auch falsch. bei while1 haste einfach die drei variablen nicht.

    willste wirklich geschosse so schnell haben?

    #include<stdlib.h>
    #include<stdio.h>
    #include<conio2.h>
    #include<conio.h>
    #include<iostream>
    #include<windows.h>
    #include<dos.h>
    #include<time.h>
    #include<list>
    
    using namespace std;
    
    void gotoxy(int x,int y) {}
    
    void clrscr() {}
    
    class Geschoss
    {
    private:
        int m_x;
        int m_y;
    
    public:
        bool m_statusG;
        bool Bewegung();
        Geschoss(int x,int y)
        {
            m_x=x;
            m_y=y;
        }
    };
    
    bool Geschoss::Bewegung()
    {
        gotoxy(m_x,m_y);
        cout<<"*";
        m_y--;
        if(m_y>=0)
    		return true;
    	else
    		return false;
    };
    
    int main()
    {
        int x=20, y=22;
        list<Geschoss> kugeln1;
        list<Geschoss> kugeln2;
        list<Geschoss>::iterator iter;
    
        for(;;)
        {
            if (GetAsyncKeyState(0x57))
            {
                kugeln.push_back(Geschoss(x,y));
            }
            if (GetAsyncKeyState(0x1B))
            {
                exit(0);
            }
            if (GetAsyncKeyState(0x41))
            {
                x--;
            }
            if (GetAsyncKeyState(0x44))
            {
                x++;
            }
    
            clrscr();
            for (iter = kugeln.begin(); iter != kugeln.end(); ++iter)
            {
                if(iter->Bewegung())
    				kugeln2.push_back(*iter);
            }
            swap(kufeln2,kugeln1);
            kigeln2.clear();
    
            Sleep(50);
    
        }
    
        _getch();
    }
    


  • Ja, wird so eine art space invaders. werd das gleich mal probieren wast geschrieben hast. danke für die korrektur



  • Yeah, funktioniert!!! bin voll happy, versuch schon seit Tagen dies so zu hinbekommen hat aber nicht geklappt. Aber was ich nicht versteh ist wieso man zwei list's braucht?? mfg



  • franz-21 schrieb:

    Yeah, funktioniert!!! bin voll happy, versuch schon seit Tagen dies so zu hinbekommen hat aber nicht geklappt. Aber was ich nicht versteh ist wieso man zwei list's braucht?? mfg

    damit die tozen geschosse weggemacht werden.
    och kopiere nur die lebenden immer um, die toten verschwinden dadurch. das ist auch der zweck des rückgabe von Bewegen.



  • Ok, dankeschön auf jeden Fall mal, werd mich jetzt wieder voll reinhängen das ichs heute noch spielen kann mfg


Anmelden zum Antworten