Γράψτε ένα πρόγραμμα που παίρνει δύο εισόδους: (1) το περιεχόμενο μιας πίστας pacman από την πρότυπη είσοδο και (2) τις κινήσεις που πρέπει να κάνει ο pacman πάνω στο πλέγμα ως το πρώτο όρισμα και τυπώνει την τελική κατάσταση του παιχνιδιού μετά από αυτές τις κινήσεις. Η πίστα pacman θα έχει την ακόλουθη μορφή:
Οι κινήσεις που πρέπει να κάνει ο pacman θα αποτελούνται από τους 4 χαρακτήρες ‘U’ (Up), ‘D’ (Down), ‘L’ (Left), ‘R’ (Right). Όταν ο pacman κινείται σε κάποια θέση, τότε η τελεία (‘.’) σε εκείνη την θέση εξαφανίζεται. Η πίστα είναι τόρος, δηλαδή αν είσαι στην τελευταία γραμμή της και κινηθείς προς τα κάτω (D) τότε μεταφέρεσαι στην πρώτη γραμμή. Αντίστοιχα για κινήσεις αριστερά-δεξιά. Παραδείγματα εκτέλεσης ακολουθούν:
$ gcc -o pacman pacman.c
$ cat level.txt
7
.......
.......
..P....
.......
.......
.......
.......
$ ./pacman RRD < level.txt
.......
.......
.. ..
....P..
.......
.......
.......
$ ./pacman RRDDLL < level.txt
.......
.......
.. ..
.... ..
..P ..
.......
.......
$ ./pacman RRDDLLUU < level.txt
.......
.......
..P ..
.. . ..
.. ..
.......
.......
$ ./pacman RRDDLLUULLLL < level.txt
.......
.......
P
.. . ..
.. ..
.......
.......
Κρατήστε την πίστα σε δισδιάστατο πίνακα χαρακτήρων δεσμευμένο δυναμικά (η διάσταση
διαβάζεται πρώτη) και διαβάστε τα κελιά αγνοώντας κάθε χαρακτήρα εκτός από . και P.
Διατρέξτε το argv[1] χαρακτήρα-χαρακτήρα: σε κάθε κίνηση αδειάστε το τρέχον κελί και
μετακινήστε τη θέση. Για την αναδίπλωση του τόρου χρησιμοποιήστε υπόλοιπο διαίρεσης,
προσέχοντας ότι στη C το υπόλοιπο αρνητικού αριθμού είναι αρνητικό.
Αριθμός στον οδηγό: Α13.9
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: lab-lab07-pacman ·
Σύνδεσμος: https://progintro.github.io/study/questions/labs/lab-lab07-pacman.html ·
Markdown (GitHub)