Για το καλοκαίρι:
Εδώ
https://github.com/M2000Interpreter/Version9/wiki/BlackJack-in-M2000-code και εδώ το ίδιο αλλά με χρώμα
https://georgekarras.blogspot.com/2017/12/blackjack-verison-3-m2000-code.html είναι ο κώδικας για το BlackJack, το γνωστό παιχνίδι με κάρτες, σε M2000. Ακολουθεί τους κανόνες του παιχνιδιού με τις δυνατότητες επιπλέον παιχνιδιών μεταξύ "μάνας" και "παίκτη", ανάλογα με το τι θα είναι τα δυο πρώτα χαρτιά.
Ο κώδικας είναι γραμμένος με αγγλικές εντολές σε Μ2000, που στην ουσία είναι μια βελτιωμένη BASIC,
Στην αρχή του παιχνιδιού μια μεταβλητή κρατάει τον αριθμό των παικτών (εδώ είναι 4, αλλά μπορούμε να βάλουμε μεγαλύτερο νούμερο), και κάθε παίκτης ξεκινάει με 10000 μονάδες. Οι παίκτες μπορεί να βγουν εκτός όποτε θέλουν, ή βγαίνουν υποχρεωτικά όταν χάσουν τις μονάδες τους.
Το παιχνίδι δεν έχει γραφικά, αλλά μόνο κείμενο, με χρώμα και εμφανίζει και τα σύμβολα όπως κούπα, καρό, σπαθί, μπαστούνι (όπως τα λέμε). Για κάθε παίκτη, όπως έρχεται η σειρά του, μας ρωτάει το πρόγραμμα αν θέλουμε να πάρουμε χαρτί (hit) ή να μείνουμε εκεί που είμαστε (stand). Στην ουσία ο διάλογος γίνεται από τον dealer (την "μάνα"). Η μάνα δεν έχει ΑΙ (τεχνητή νοημοσύνη) αλλά παίζει με σταθερούς κανόνες (υποχρεωτικά). Παρόλο που εδώ θα σκεφτεί κανείς ότι με αυτόν τον τρόπο θα χάσει, είναι έτσι φτιαγμένο το παιχνίδι που πάντα κερδίζει σε βάθος χρόνου. Βρείτε τους κανόνες από το πρόγραμμα!
Χρησιμοποιούνται αντικείμενα για να κρατάμε τη κατάσταση του κάθε παίκτη αλλά και τον αριθμό παιχνιδιών που μπορεί να κάνει στη σειρά με την μάνα (ανάλογα με το τι χαρτιά πάρει στην αρχή, και τι επιλογή θα κάνει ο παίκτης, και τι υπόλοιπο σε μονάδες έχει).
Θα δείτε ότι η χρήση του GOTO σε ετικέτα είναι χρήσιμη (όταν δεν γίνεται κατάχρηση, το GOTO είναι αποδοτικό)
Η εντολή For έχει στο πρόγραμμα δυο παραλλαγές. Η μία είναι για την επανάληψη, και η άλλη είναι για να γίνεται μαζική προσπέλαση σε αντικείμενα. Η διαφορά φαίνεται στο δεύτερο γιατί δεν υπάρχει το = να δώσει τιμή έτσι το For Players(i) { } ανοίγει ένα μπλοκ για χειρισμό του αντικειμένου στη θέση του πίνακα Players(i). Μέσα σε ένα τέτοιο For, ονόματα μεταβλητών που ξεκινούν με τελεία αναφέρονται στα μέλη του αντικειμένου (τα οποία είναι δημόσια, σε αυτό το πρόγραμμα δεν έχουμε ιδιωτικά μέλη ομάδων, όπως λέγονται τα αντικείμενα της Μ2000)
Λοιπόν μπορεί κανείς να δώσει το δικό του BlackJack, στη γλώσσα που θα επιλέξει (εξαιρείται η ΓΛΩΣΣΑ, γιατί δεν έχει γεννήτρια τυχαίων αριθμών), όπως με Java και Python. Δεν είναι υποχρεωτικό να υποστηρίζει το πρόγραμμά σας όλα τα στοιχεία που υποστηρίζει το υπάρχον πρόγραμμα σε Μ2000.
Χρόνος που απαιτείται για να γίνει σε Java/Python και να είναι πλήρως διορθωμένο, όχι λιγότερο από ένα μήνα! Μια ωραία άσκηση λοιπόν (ενώ υπάρχει ήδη μια λύση). Αντί λοιπόν να υπάρχει "λογικό διάγραμμα", ή "εκφώνηση", υπάρχει κώδικας σε γλώσσα που δεν είναι γνωστή, αλλά είναι εύκολα κατανοητή (αν και η Μ2000 υποστηρίζει τύπους στις δηλώσεις μεταβλητών, δεν είναι απαραίτητο να δώσουμε τύπους, κάτι που μεγαλώνει πολύ τον κώδικα και εδώ δεν κερδίζουμε κάτι).
Η μεγαλύτερη δυσκολία είναι το πώς θα κάνει κανείς στην java ή στην python τις κατάλληλες δομές δεδομένων που θα κρατούν την κατάσταση του προγράμματος για όλους τους παίκτες και την μάνα, και την τράπουλα απ' όπου τραβάμε χαρτιά και κάθε φορά που τελειώνουν τα φύλα, προσθέτουμε άλλα ανακατεμένα επίσης.