Υλοποίησε τη λογική του παιχνιδιού Κρεμάλα χρησιμοποιώντας συναρτησιακό αντιδραστικό προγραμματισμό.
Η Κρεμάλα είναι ένα απλό παιχνίδι μαντέματος λέξεων.
Ο συναρτησιακός αντιδραστικός προγραμματισμός είναι ένας τρόπος να γράφεις διαδραστικά προγράμματα. Διαφέρει από τη συνηθισμένη οπτική στο ότι, αντί να λες "όταν πατηθεί το κουμπί, αύξησε τον μετρητή", γράφεις "η τιμή του μετρητή είναι το άθροισμα των φορών που πατήθηκε το κουμπί".
Υλοποίησε τη βασική λογική πίσω από την Κρεμάλα χρησιμοποιώντας συναρτησιακό αντιδραστικό προγραμματισμό. Θα χρειαστεί να εγκαταστήσεις μια βιβλιοθήκη FRP γι' αυτό. Αυτό περιγράφεται στα αρχεία της άσκησης που αφορούν συγκεκριμένα τη γλώσσα/track.
Αγνόησε το κομμάτι που αφορά μια βιβλιοθήκη FRP: δεν χρειάζεται βιβλιοθήκη τρίτου μέρους για αυτή την άσκηση. Αυτή η άσκηση εστιάζει στον προγραμματισμό με γεγονότα, χρησιμοποιώντας callbacks και τον βρόχο γεγονότων της Tcl.
Πρέπει να φτιάξεις έναν TCP server και ένα πρωτόκολλο ειδικού πεδίου. Αυτός ο server ξεκινά με τη λέξη που πρέπει να μαντέψεις. Το test script υλοποιεί τον client που στέλνει εντολές στον server.
Οι εντολές του πρωτοκόλλου που πρέπει να υλοποιήσεις είναι:
STATUS για να επιστρέψει την τρέχουσα κατάσταση του παιχνιδιού. Η απάντηση θα είναι μια
λίστα με τρία στοιχεία:
GUESS x, όπου x είναι ένα γράμμα που πρέπει να μαντέψεις. Ο server θα απαντήσει με τη
λίστα κατάστασης μετά από κάθε μαντεψιά.SHUTDOWN για να τερματίσεις απομακρυσμένα τον server. Διαφορετικά, ο server θα
τερματιστεί μετά από νίκη ή ήττα.Ο server θα πρέπει να μπορεί να χειρίζεται αυτές τις εντολές ανεξάρτητα από πεζά και κεφαλαία.
Ξεκίνα τον server σου χρησιμοποιώντας τον αριθμό θύρας 0: η Tcl θα βρει μια θύρα που
δεν χρησιμοποιείται, ώστε να μη χρειάζεται να βάλουμε καρφωτή τιμή για τον αριθμό θύρας στο
test script. Όλοι οι διερμηνευτές που τρέχουν σε μια διεργασία (μαζί και τα νήματα)
μοιράζονται το ίδιο περιβάλλον, οπότε ο server μπορεί να ανακοινώσει τη θύρα του πίσω στο
test script μέσω του καθολικού πίνακα env. Υπάρχει ένα παράδειγμα στο αρχικό αρχείο
hangman.tcl.
Θα χρειαστείς αυτές τις εντολές της Tcl:
socket,
fileevent,
vwait.
Αυτό το παράδειγμα προγράμματος socket μπορεί να σε βοηθήσει να ξεκινήσεις.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Tcl με 135 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.