Spielfigur auf der Y-Achse bewegen lassen?



  • Liebe C++ -Freunde,

    ich stehe in meinem Studium derzeit vor einem Problem für mein Prüfungsprojekt. Wir müssen Donkey Kong Adventure nach programmieren (Aufgabe folgt) und bisher habe ich auch den Grundriss erstellen können. Jedoch fehlt mir das Knowledge, die Figur auf der Y-Achse bewegen zu lassen. Vielleicht kann mir jemand weiterhelfen? Mir wurde auch gesagt, dass ich den Leitern und Ebenen Positionen und Längen zuordnen soll, damit sich die Figur bei einer bestimmten Position die Leiter dann hoch und runter bewegen kann - diesem Hinweis kann ich bisher aber nicht so wirklich folgen.

    Ich weiß gerade wirklich nicht mehr weiter und die Deadline ist bald erreicht.
    Danke für die Aufmerksamkeit und liebe Grüße,

    GrandSeani

    Mir wurde auch gesagt, dass ich alles gehartcodet hätte (mit dem Begriff konnte ich bis vor Kurzem noch nicht so viel anfangen..), also peinigt mich bitte nicht dafür.

    //  main.cpp
    
    //  DONKEY KONG ADVENTURE
    
    //
    
    //  Created by GrandSeani on 31.01.2023
    
    //
    
    
    #include <iostream>
    
    #include <stdio.h>
    
    #include <stdlib.h>
    
    
    class Stickman {
    
    public:
    
        Stickman() : position(0) {}
    
    
        // Zeichne den Stickman auf folgende Position
    
        void draw() {
    
            for (int i = 0; i < position; i++) {
    
                std::cout << " ";
    
            }
    
            std::cout << "  o\n";
    
    
            for (int i = 0; i < position; i++) {
    
                std::cout << " ";
    
            }
    
    
            std::cout << " /|\\\n";
    
            for (int i = 0; i < position; i++) {
    
                std::cout << " ";
    
            }
    
            std::cout << " / \\\n";
    
        }
    
    
        //Bewegung von Stickman
    
        void movementLR(char direction) {
    
            if (direction == 'a' && position != 0) {
    
                position--;
    
            }
    
            else if (direction == 'd' && position <= 6) {
    
                position++;
    
            }
    
        }
    
       
    protected:
    
        int position;
    
    };
    
    
    class Stage {
    
    public:
    
    
        //Erste Ebene von Stage
    
        void ersteEtage() {
    
            for (int i = 0; i < 10; i++) {
    
                std::cout << "-";
    
            }
    
    
            for (int i = 0; i < 4; i++) {
    
                std::cout << " ";
    
            }
    
    
            for (int i = 0; i < 9; i++) {
    
                std::cout << "-";
    
            }
    
    
            for (int i = 0; i < 2; i++) {
    
                std::cout << " ";
    
            }
    
    
            for (int i = 0; i < 8; i++) {
    
                std::cout << "-";
    
            }
    
        }
    
    
        //Leiter zwischen 1 und 2 Etage
    
        void leiter12() {
    
            char drabina1[4][1] = { {'H'},{'H'},{'H'},{'H'} };
    
            char drabina2[4][1] = { {'H'},{'H'},{'H'},{'H'} };
    
            for (int i = 0; i < 4; i++) {
    
                std::cout << "     " << drabina1[i][0] << " "; //5 Leerzeichen
    
                for (int j = 0; j < 22; j++) {
    
                    std::cout << " ";
    
                }
    
                std::cout << drabina2[i][0] << std::endl;
    
            }
    
        }
    
    
        //zweite Ebene von Stage
    
        void zweiteEtage() {
    
            for (int i = 0; i < 9; i++) {
    
                std::cout << "-";
    
            }
    
    
            for (int i = 0; i < 10; i++) {
    
                std::cout << " ";
    
            }
    
    
            for (int i = 0; i < 14; i++) {
    
                std::cout << "-";
    
            }
    
        }
    
    
        //Leiter zwischen 2 und 3 Etage
    
        void leiter23() {
    
            char drabina1[4][1] = { {'H'},{'H'},{'H'},{'H'} };
    
            char drabina2[4][1] = { {'H'},{'H'},{'H'},{'H'} };
    
            for (int i = 0; i < 4; i++) {
    
                std::cout << "       " << drabina1[i][0] << " "; //7 Leerzeichen
    
                for (int j = 0; j < 15; j++) {
    
                    std::cout << " ";
    
                }
    
                std::cout << drabina2[i][0] << std::endl;
    
            }
    
        }
    
    
        //dritte Etage von Stage
    
        void dritteEtage() {
    
            for (int i = 0; i < 6; i++) {
    
                std::cout << " ";
    
            }
    
            for (int i = 0; i < 21; i++) {
    
                std::cout << "-";
    
            }
    
        }
    
    
        /*
    
        void leiter12second() {
    
            char drabina[4][1];
    
            for (int i = 0; i < 4; i++) {
    
                drabina[i][0] = 'H';
    
            }
    
            for (int i = 0; i < 4; i++) {
    
                std::cout <<"\t\t\t" << drabina[i][0] << std::endl;
    
            }
    
        }
    
        */
    
    };
    
    
    int main() {
    
        Stickman stickman;
    
        Stage Ebene;
    
        char direction;
    
    
        do {
    
            //Die Konsole zu bereinigen
    
            system("clear");
    
    
            //Stickman auf der Konsole
    
            stickman.draw();
    
    
            //Erste Etage auf der Konsole
    
            Ebene.ersteEtage();
    
            std::cout << std::endl;
    
    
            //Leiter 1-2 auf der Konsole
    
            Ebene.leiter12();
    
    
            //Zweite Etage auf der Konsole
    
            Ebene.zweiteEtage();
    
            std::cout << std::endl;
    
    
            //Leiter 2-3 auf der Konsole
    
            Ebene.leiter23();
    
    
            //Dritte Etage auf der Konsole
    
            Ebene.dritteEtage();
    
            std::cout << std::endl;
    
    
            //Eingabe der Richtung
    
            std::cin >> direction;
    
            stickman.movementLR(direction);
    
        }
    
        while (true); {
    
            //
    
        }
    
        /*
    
        std::cout << "Press 'q' to quit: ";
    
            std::cin >> quit;
    
            while (quit != 'q')
    
            {
    
                std::cout << "Press 'q' to quit: ";
    
                std::cin >> quit;
    
            }
    
            std::cout << "Program terminated." << std::endl;
    
        */
    
        return 0;
    
    }
    
    

    Die Aufgabe:

    Aufgabenseite 1
    Aufgabenseite 2


  • Mod

    Vielleicht würde es helfen, wenn deine Spielfigur eine y-Position hätte?



  • Habe deinen Code jetzt nur übersprungen aber hier mal Kurz:

    string Input;
    class Player {
    public:
        int X;
        int Y;
    
    
    };
    Player Player1 ={ 100,100};
    int main()
    {
    while(!exit)
    {
    //Spieler malen SDL_Draw oder so
    
    //wait for UserInput 
    cin>>Input;
    switch(Input)
    {case "a":
    Player1.X--;
    
    //und so weiter für die anderen Tasten...
    
    }
    }
    }