Ein @ in der Konsole mit Pfeiltasten Steuern



  • Wie steuere ich ein @ in der Konsole mit Pfeiltasten?

    Und wie mach ich wenn es ein ² Berührt das es dort nicht durch kommt?

    Am besten machst du das Ganze mit C++... 🙄

    Das hört sich so an als sollten wir deine Hausaufgaben machen.
    Um ein Spielfeld zu begrenzen , und unteranderem auch noch trigger einzubauen kannst du so vorgehen :

    int pos_row = 1, pos_col = 1;
    int offset_row = 0, offset_col = 0;
       ...
    gotoxy(pos_col, pos_row);
    ...
    case ARROW_UP:
                        offset_row = -1;
    		zug();
                        break;
    ...
     gotoxy(pos_col, pos_row);
    ...
    pos_row += offset_row;
    pos_col += offset_col;
    if (pos_row < 1) { pos_row = 1; }
    if (pos_row > 45) { pos_row = 45; }
    ...
    

    Das ganze in eine kompakte while schleife usw.
    So schwer ist das nicht 🙄



  • Uff ich check ja nichma ne while schleife 🙄



  • Xenotack schrieb:

    Uff ich check ja nichma ne while schleife 🙄

    und dann wilslst du ein @ steuern? lern erstmal while schleifen.



  • otze schrieb:

    Xenotack schrieb:

    Uff ich check ja nichma ne while schleife 🙄

    und dann wilslst du ein @ steuern? lern erstmal while schleifen.

    Sehe ich auch so. Ein @ zu steuern ist eben nichts für Anfänger.



  • ... 🙄
    Ist nicht dein ernst oder ?
    Du willst ein @ in deiner Konsole bewegen , aber kennst keine schleifen ?
    Das errinert mich an so was :

    DirectX(Mach jetzt mal ein großes Spiel);
    DirectX(mit viel booom und so);
    DirectX(dann noch ganz viele quests);
    DirectX(dankeschön);
    

    Kauf dir ein C++ buch , aber NICHT von JW
    mit NICHT mein ich niemals.Wenn du dir ausversehen die erste Seite ansiehst verbrenne das buch/Stech einen silbernen Pfahl durch es hindurch



  • Xenotack schrieb:

    Uff ich check ja nichma ne while schleife 🙄

    Die idealen Voraussetzungen für so ein Projekt 😃



  • Die idealen Voraussetzungen für so ein Projekt 😃

    xDDDD 😃 😃
    Der war wieder lustig 😃

    Nein aber mal im Ernst :
    Du kannst nicht von deinem Gehiern verlangen , das es einfach C++ kann , so schön es auch wäre.Kauf dir einfach ein gutes buch.



  • Ach und noch was als verbesserung :

    Du kannst statt @ auch das asc2 zeichen 1 oder 2 nehmen.Sind Smilies.
    Oder 15 , sieht aus wie ein bug



  • V ist kuhl. Sieht aus wie ein voll kuhles Raumschiff. Man muss zwar seinen Monitor dafür um 180° drehen, aber das ist ja schnell gemacht.
    Alternativ kann man #> verwenden, wenn man nen Side-Scrolling Shooter oder sowas machen will, das ist auch kuhl. Und man kann den Monitor so lassen wie er ist.



  • Aber es gibt doch <>, die sehen viel KUHLER aus.



  • Du kannst dir die Demo (Edit: Mover-Demo auf der Download-Seite) der http://ic.c-plusplus.net ansehen, dort passiert etwas Ähnliches. Vielleicht hilft dir der Beispielcode auch die Schleife zu verstehen.

    MfG SideWinder



  • #include <windows.h>
    #include <iostream>
    #include <conio.h>
    
    namespace taste {
        const int Apfeil_oben   = 72; //die ASCII-tabellenwerte fuer die tasten
        const int Apfeil_unten  = 80;
        const int Apfeil_links  = 75;
        const int Apfeil_rechts = 77;
        const int Aesc          = 27;
        const int Aleer         = 32;
    
        void gotoxy(int X, int Y) { //wir verzichten mal auf prototypen
            HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
            COORD pos;
            pos.X = Y - 1;
            pos.Y = X - 1;
            SetConsoleCursorPosition(hCon, pos);
        } //windows-funktion zum setzen der cursorposition
    
        void pos_cout(int X, int Y, char zeichen) {
            gotoxy(X, Y);
            std::cout << zeichen;
        }
    }
    
    int main() {
        using namespace std;
        char Taste;
        unsigned short Xpos = 1, Ypos = 1; //die position aufm bildschirm
    
        cout << "@";
    
        taste::pos_cout(5, 10, 'X'); //ein extra-zeichen ausgeben
    
        do {
            Taste = getch(); //zeichen eingeben lassen (ohne enter)
            switch(Taste) { //taste auswerten
                case taste::Apfeil_oben: //pfeil nach oben? dann..
                case 'w': //wasd-steuerung akzeptiert
                 taste::pos_cout(Xpos, Ypos, ' '); //lösche das alte zeichen vom bild
                 if(Xpos > 1) --Xpos; //ist er noch nicht am rand, dann verringere Xpos
                break;
    
                case taste::Apfeil_unten:
                case 's':
                 taste::pos_cout(Xpos, Ypos, ' ');
                 if(Xpos < 15) ++Xpos;
                break;
    
                case taste::Apfeil_rechts:
                case 'd':
                 taste::pos_cout(Xpos, Ypos, ' ');
                 if(Ypos < 30) ++Ypos;
                break;
    
                case taste::Apfeil_links:
                case 'a':
                 taste::pos_cout(Xpos, Ypos, ' ');
                 if(Ypos > 1) --Ypos;
                break;
    
                default: ; //nichts davon? egal
            }
            taste::pos_cout(Xpos, Ypos, '@'); //zeichne zeichen mit aktuellen koord.
    
            if(Xpos == 5 && Ypos == 10) return 0; //zum spaß: wenn
            //er das zeichen erreicht wird das prog beendet
        } while(Taste != taste::Aesc); //solange nicht die esc-taste gedrueckt wurde
    }
    

    Das hatte ich irgendwann mal gemacht..


Anmelden zum Antworten