Αρχική

Παιχνίδια σε Python & Pygame

Οποιοσδήποτε σήμερα ξεκινάει να μάθει προγραμματισμό - από το μηδέν - έχει να αντιμετωπίσει ένα βασικό δίλλημα: με ποια γλώσσα να ξεκινήσει. Στις παλιές (καλές;) εποχές της πληροφορικής, το δίλλημα αυτό ήταν σημαντικά μικρότερο ως και μηδαμινό: Την εποχή που μεσουρανούσαν οι οικιακοί υπολογιστές, ο ιδιοκτήτης θα μάθαινε την εκδοχή της γλώσσας BASIC που έρχονταν με το μηχάνημα. Θα έπαιρνε έτσι βασικές γνώσεις στην επίλυση προβλημάτων και αλγοριθμικής τις οποίες θα χρησιμοποιούσε και αργότερα όταν επέλεγε να συνεχίσει με κάποια άλλη γλώσσα.

Στις μετέπειτα εποχές, με την άνοδο ισχυρότερων 16bit μηχανημάτων αλλά και την σταδιακή επικράτηση του PC τα πράγματα δεν έγιναν ιδιαίτερα πιο πολύπλοκα: στις περισσότερες περιπτώσεις είχαμε να διαλέξουμε ανάμεσα σε BASIC, Pascal, C - απλώς υπήρχαν περισσότερες εκδόσεις από διάφορους κατασκευαστές (Borland, Microsoft, Lattice κλπ). Πάντα όμως σκοπός της πρώτης γλώσσας είναι περισσότερο να μας μάθει βασικές αρχές τις οποίες μπορούμε μετά να μεταφέρουμε και αλλού. Είναι φυσικό ότι κάποιες γλώσσες είναι καλύτερες από άλλες για αυτό το σκοπό, ειδικά αν πρόκειται για αυτοδιδασκαλία. Ωστόσο παρατηρούμε στις μέρες μας ότι οι περισσότεροι νέοι δεν ενδιαφέρονται πια να μάθουν προγραμματισμό.

Μπορεί να φαίνεται παράδοξο: στις μέρες της πραγματικής αφθονίας των ελεύθερων μεταγλωττιστών και διερμηνευτών, για οποιοδήποτε περιβάλλον και γλώσσα επιλέξει κάποιος, υπάρχει φθίνον ενδιαφέρον για το πιο δημιουργικό κομμάτι της πληροφορικής. Εύκολα κάποιος μπορεί να σκεφτεί μερικούς λόγους:

  • Υπάρχουν τόσα πράγματα που μπορεί να κάνει κάποιος σε ένα υπολογιστή και είναι ήδη έτοιμα. Γιατί να ασχοληθεί;
  • Ο κόσμος προτιμάει να περνάει την ώρα του στα κοινωνικά δίκτυα από το να δημιουργεί.
  • Η νέα γενιά έρχεται σε επαφή με τον προγραμματισμό σε μαθήματα του Γυμνασίου και του Λυκείου και έπειτα δεν θέλει να ασχοληθεί ξανά.

Παραβλέποντας για λίγο τους δύο πρώτους λόγους, ας ασχοληθούμε με τον τρίτο: φυσιολογικά μια εισαγωγή στον προγραμματισμό θα έπρεπε να φέρνει κόσμο σε αυτή τη δημιουργική ασχολία αντί να τον απομακρύνει. Τι πάει στραβά;

Θα μπορούσαμε να γράψουμε ίσως ολόκληρο βιβλίο με τα στραβά της Ελληνικής εκπαίδευσης, αλλά αν επικεντρώσουμε απλά στο παραπάνω, εύκολα θα βρούμε ότι:

  • Διδάσκονται γλώσσες προγραμματισμού και περιβάλλοντα ξεπερασμένα (π.χ. PASCAL στο μάθημα του Δομημένου Προγραμματισμού των ΕΠΑΛ).
  • Τα προγράμματα που χρησιμοποιούνται ως παραδείγματα αποτυγχάνουν να εξάψουν την φαντασία και τη δημιουργική ικανότητα των μαθητών.
  • Υπάρχει τεράστια διαφορά στα προγράμματα που φτιάχνουν οι μαθητές σε σχέση με τα έτοιμα που χρησιμοποιούν κάθε μέρα: που είναι τα γραφικά, η κίνηση, η σύγχρονη διεπαφή με το χρήστη;

Αν πάρουμε ειδικά τον τελευταίο λόγο και γυρίσουμε λίγο πίσω στο χρόνο, θα δούμε ότι τα πράγματα δεν ήταν πάντα έτσι: την εποχή των οικιακών υπολογιστών, ο επίδοξος προγραμματιστής έγραφε μικρά ίσως αλλά ενδιαφέροντα προγράμματα: με κινούμενα γραφικά, sprites, ήχο. Τι και αν πολλά από αυτά τα παιχνίδια δεν δούλευαν τέλεια. Τουλάχιστον δεν ήταν αυτές οι χαζές μετατροπές βαθμών κελσίου σε φαρενάιτ και οι κλιμακωτές χρεώσεις της ΔΕΗ που αναγκάζονται κάθε μέρα να φτιάχνουν χιλιάδες μαθητές στα σχολεία τους. Υπάρχει σωτηρία;

Παιχνίδια σε Python & Pygame

Φυσικά και υπάρχει. Πρέπει να φέρουμε πίσω τα ενδιαφέροντα προγράμματα που γράφαμε κάποτε ως αρχάριοι. Εννοείται σε μια σύγχρονη και κατάλληλη για διδασκαλία γλώσσα όπως η python. Και για να κρατήσουμε το ενδιαφέρον ψηλά θα τη συνδυάσουμε με τη βιβλιοθήκη pygame για δημιουργία παιχνιδιών. Διδασκαλία (ή και αυτοδιδασκαλία) προγραμματισμού με τη δημιουργία παιχνιδιών!

Καθώς η καθημερινή μου εργασία είναι διδασκαλία σε τομέα πληροφορικής των ΕΠΑΛ, κοντά στις διακοπές Χριστουγέννων του 2011 είχα ένα προβληματισμό: είχα αναλάβει για πρώτη φορά το μάθημα "Εφαρμογές Πολυμέσων" και σκεφτόμουν ότι μετά τα βασικά εισαγωγικά μαθήματα στα είδη και αρχεία πολυμέσων, έπρεπε να βρω κάτι ουσιαστικό και ενδιαφέρον να διδάξω. Την ίδια περίπου εποχή, έψαχνα και για μια αντίστοιχη και ενδιαφέρουσα σειρά άρθρων για το περιοδικό deltaHacker. Δεν χρειάστηκε να προβληματιστώ και πολύ: θα έφτιαχνα μια σειρά άρθρων για προγραμματισμό σε Python και Pygame για αρχάριους το οποίο με την ολοκλήρωση του θα κυκλοφορούσε ως ελεύθερο ebook. Καθώς επεξεργαζόμουν την ιδέα, κατάλαβα ότι θα ήταν κάτι παραπάνω από ένα απλό βιβλίο: ένα αφιέρωμα στην εποχή και τους υπολογιστές που ξεκινήσαμε να γράφουμε προγράμματα στη δεκαετία του 80. Και αυτό φαίνεται σε όλο το βιβλίο: μαζί με το σύγχρονο κώδικα (και την αναδημιουργία παλιών κλασικών παιχνιδιών) θα βρείτε φωτογραφίες υπολογιστών και screenshots από προγράμματα που έγραψα από το 1984-1987 περίπου στον πιστό μου ΤΙ-99/4Α αλλά και σε άλλους υπολογιστές της εποχής.

Το βιβλίο ξεκινάει με απλά παιχνίδια κειμένου (Guess the number), συνεχίζει με την αναδημιουργία ενός παιχνιδιού text adventure που είχε δημοσιευθεί ως άρθρο στο θρυλικό Pixel και σταδιακά εισάγει τον αναγνώστη στο pygame. Μετά τα πρώτα απλά παραδείγματα κίνησης υπάρχουν ακόμα δύο πλήρη παιχνίδια στο βιβλίο, το Graphics Match, αναδημιουργία ενός απλού παιχνιδιού τύπου κουλοχέρη (όχι το βιβλίο δεν προάγει το τζόγο!) και ενός arcade τύπου Invaders - από αυτά που όλοι θέλαμε να γράψουμε τότε, αλλά συνήθως δεν πετυχαίναμε.

Η σειρά άρθρων και το βιβλίο ολοκληρώθηκαν και κυκλοφόρησαν το Σεπτέμβρη του 2012 και μπορείτε να τα κατεβάσετε από το παρακάτω site:

Παιχνίδια σε Python & Pygame

To παραπάνω site περιέχει φυσικά και όλο τον πηγαίο κώδικα των παραδειγμάτων και των παιχνιδιών του βιβλίου (μπορείτε επίσης να κατεβάσετε απευθείας ένα ISO image με όλα τα απαραίτητα για να ξεκινήσετε).

Εννοείται ότι το βιβλίο το χρησιμοποιώ και φέτος ολοκληρωμένο στη διδασκαλία. Η όλη εργασία παρουσιάστηκε και στην Έκθεση Μαθητικής Δημιουργίας Πληροφορικής (δείτε και τη σχετική φώτο) και ελπίζουμε ότι κίνησε το ενδιαφέρον σε αρκετά παιδιά και συναδέλφους καθηγητές.

Ελπίζω να το διασκεδάσετε διαβάζοντας το, όσο και εγώ καθώς το έγραφα!

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου