Hallo und willkommen
Ich nehme mal stark an, dass du das in der Konsole ohne spezielle Libraries machen willst
Nun musst du dir gut überlegen, wie du das machst.
Im Endeffekt kannst du kein Zeichen einzeln auf der Konsole verändern (kannst du natürlich iwie, aber ist ja mal egal).
Du musst also bei jeder Änderung den kompletten Bildschirm neuzeichnen.
Du brauchst also einen Speicher, in dem dein Bildschirminhalt gehalten wird, der verändert wird, wenn eine Taste z.B. gedrückt wurde und dann neu auf den Bildschirm gespeichert wird.
Code: Alles auswählen
char screen[25*20];//Die Zahlen stehen für Höhe und Breite, dass musst du anpassen
Nun musst du wissen, wo sich dein C und wo sich dein Ziel befindet.
Dein Spielfeld kannst du ja schon zeichnen. Mit dieser Anordnung hier geht das ähnlich.
Du gibst einfach zuerst 25 (=Breite) Zeichen von screen aus, fügst dann ein "\n" an, gibst die nächsten 25 aus etc bis du alle Zeilen (20 in meinem Bsp) ausgegeben hast.
Wenn du dein Spielfeld ausgegeben hast frägst du nach einer Tasteneingabe.
Die wertest du dann aus.
Bsp:
w => nach oben
a => nach links
s => nach unten
d => nach rechts
q => beenden
Je nachdem was gedrückt wurde führst du deine Aktion aus.
Wenn du z.B. nach Links gehst, überprüfst du, ob du nicht schon ganz links stehst.
Wenn nicht, dann kannst du gucken, was denn in dem Feld links von dir ist (durch die cposx).
Ist da frei, dann kannst du rein.
Heißt: In das Feld schreibst du das C, im Feld mit dem alten C schreibst du eine Leerstelle.
Dann änderst du noch cposx und cposy auf die neuen Koordinaten.
Dann kannst du screen wieder zeichnen.
Wenn du das geschafft hast, dann hast du eine Art 2D-Text-Renderer programmiert

Sogar mit Kollisionserkennung
Wenn du etwas nicht verstehst, dann frag einfach
