Υλοποίησε τη λογική του παιχνιδιού Κρεμάλα χρησιμοποιώντας συναρτησιακό αντιδραστικό προγραμματισμό.
Η Κρεμάλα είναι ένα απλό παιχνίδι μαντέματος λέξεων.
Ο συναρτησιακός αντιδραστικός προγραμματισμός είναι ένας τρόπος να γράφεις διαδραστικά προγράμματα. Διαφέρει από τη συνηθισμένη οπτική στο ότι, αντί να λες "όταν πατηθεί το κουμπί, αύξησε τον μετρητή", γράφεις "η τιμή του μετρητή είναι το άθροισμα των φορών που πατήθηκε το κουμπί".
Υλοποίησε τη βασική λογική πίσω από την Κρεμάλα χρησιμοποιώντας συναρτησιακό αντιδραστικό προγραμματισμό. Θα χρειαστεί να εγκαταστήσεις μια βιβλιοθήκη FRP γι' αυτό. Αυτό περιγράφεται στα αρχεία της άσκησης που αφορούν συγκεκριμένα τη γλώσσα/track.
Ένα βασικό χαρακτηριστικό του Συναρτησιακού Προγραμματισμού είναι να έχεις συναρτήσεις χωρίς παρενέργειες, χωρίς να χρειάζεται να αναρωτιέσαι ποια κρυμμένα αντικείμενα άλλαξε μια συνάρτηση.
Με τον Αντιδραστικό Προγραμματισμό, αντί ένα component να ψάχνει ενεργά για δουλειά, η δουλειά ωθείται προς το component. Αυτό μοιάζει με τα callbacks, αλλά σε πολύ υψηλότερο επίπεδο, με πιο ισχυρές αφαιρέσεις. Πολύ συχνά, ο Αντιδραστικός Προγραμματισμός χρησιμοποιείται σε συνδυασμό με τον Συναρτησιακό Προγραμματισμό.
Στην άσκηση, θα χρησιμοποιήσουμε το RxJava, μια γνωστή βιβλιοθήκη για Αντιδραστικό Προγραμματισμό με API της Java.
Το προσομοιωμένο πλαίσιο αυτής της άσκησης είναι μια εφαρμογή που δέχεται δύο εισόδους:
Αυτές οι δύο είσοδοι υλοποιούνται με Observables - χρησιμοποιώντας την κλάση io.reactivex.Observable.
Βασικά, μπορείς να εγγραφείς σε ένα Observable για να "αντιδράς" στις τιμές που παράγονται κάπου. Για παράδειγμα, η μηχανή παιχνιδιού ωθεί νέες λέξεις όταν ανιχνεύσει ότι ξεκίνησε ένα νέο παιχνίδι, ή τα συμβάντα πληκτρολογίου παράγουν γράμματα ως είσοδο.
Αλλά πολλά Reactive frameworks προσφέρουν ισχυρές αφαιρέσεις, όπως το map που σου επιτρέπει να αλλάξεις την είσοδο που δέχεσαι, ή το combine που σου επιτρέπει να συνενώσεις ένα ή περισσότερα Observables.
Η κλάση Output είναι το αναμενόμενο αποτέλεσμα της επεξεργασίας της άσκησης, επιτρέποντας σε ένα front-end να
εμφανίσει την πλήρη κατάσταση του παιχνιδιού χωρίς να απαιτεί από αυτό καμία μορφή αποθήκευσης - κάνοντάς το έτσι
συναρτησιακό και αυτό.
Σε αυτή την άσκηση, πρέπει να βρεις έναν τρόπο να χρησιμοποιήσεις και τις δύο εισόδους για να παράγεις αυτή την έξοδο με τη μορφή ενός Observable.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.