Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α12.17 · Κινήσεις σε Πλέγμα

Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #11, Θέμα 3 · Δυσκολία ★★☆ · programming · Κεφάλαια: 12, 18

Πρόγραμμα: pacman.c

Γράψτε ένα πρόγραμμα που παίρνει δύο ορίσματα: (1) το όνομα ενός αρχείου που περιέχει μια πίστα pacman και (2) τις κινήσεις που πρέπει να κάνει ο pacman πάνω στο πλέγμα και τυπώνει την τελική κατάσταση του παιχνιδιού μετά από αυτές τις κινήσεις. Το αρχείο θα έχει την ακόλουθη μορφή:

  1. Διάσταση του πλέγματος του παιχνιδιού (δεκαδικός ακέραιος).
  2. Τετράγωνο πλέγμα με χαρακτήρες ‘.’ και ένα ‘P’ για την αρχική θέση του pacman. Όλοι οι άλλοι χαρακτήρες αγνοούνται. Οι κινήσεις που πρέπει να κάνει ο pacman θα αποτελούνται από 4 χαρακτήρες ‘U’ (Up), ‘D’ (Down), ‘L’ (Left), ‘R’ (Right). Όταν ο pacman κινείται σε κάποια θέση, τότε η τελεία (‘.’) σε εκείνη την θέση εξαφανίζεται. Η πίστα είναι τόρος, δηλαδή αν είσαι στην τελευταία γραμμή της και κινηθείς προς τα κάτω (D) τότε μεταφέρεσαι στην πρώτη γραμμή. Αντίστοιχα για κινήσεις αριστερά-δεξιά. Παραδείγματα εκτέλεσης ακολουθούν:
$ gcc -o pacman pacman.c
$ cat level.txt
7
.......
.......
..P....
.......
.......
.......
.......
$ ./pacman level.txt RRD
.......
.......
..   ..
....P..
.......
.......
.......
$ ./pacman level.txt RRDDLL
.......
.......
..   ..
.... ..
..P  ..
.......
.......
$ ./pacman level.txt RRDDLLUU
.......
.......
..P  ..
.. . ..
..   ..
.......
.......
$ ./pacman level.txt RRDDLLUULLLL
.......
.......
     P
.. . ..
..   ..
.......
.......

Υπόδειξη

Φορτώστε την πίστα σε δισδιάστατο πίνακα, βρείτε το P και εφαρμόστε τις κινήσεις μία-μία, αφήνοντας κενό όπου περνάει ο pacman. Η αναδίπλωση του τόρου γίνεται με υπόλοιπο διαίρεσης· προσέξτε τις αρνητικές τιμές ((x - 1 + n) % n). Άγνωστος χαρακτήρας κίνησης είναι σφάλμα.

Αριθμός στον οδηγό: Α12.17 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2023-fall-ex11-q3 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-fall-ex11-q3.html · Markdown (GitHub)