Γραφικά στην Qbasic . Μέρος 1

Ένας από τους τομείς που απασχόλησε και απασχολεί μεγάλο ποσοστό των προγραμματιστών είναι αυτός των γραφικών . Τα γραφικά στους υπολογιστές εξυπηρετούν πολλύς σκοπούς , όπως τη δημιουργία πιο ευχρηστων προγραμμάτων , όταν το απλό κείμενο δεν επαρκεί , για ψηφιακή επεξεργασία εικόνας , για καλλιτεχνική έκφραση ή για την κατασκευή ηλεκτρονικών παιχνιδιών .

Στα πλαίσια των άρθρων μου για την QBASIC θα εξηγήσω τις λεπτομέρειες της κατασκευής ενός παιχνιδιού τύπου pacman (βλ. εικόνα).

Καταρχήν διευκρινίζουμε ότι όλα αυτά τα γραφικά που βλέπουμε στην οθόνη του υπολογιστή μας σχηματίζονται από πολύ μικρές κουκίδες που παίρνουν το κατάλληλο χρώμα (λέγονται "pixels" ή στα Ελληνικά "εικονοστοιχεία") (υπάρχει κανείς που να μην το ξέρει αυτο??) . Στα μικρά προγράμματα που φτιάξαμε ως τώρα , χρησιμοποιήσαμε μόνο κείμενο και έτσι δεν χρειάστηκε να ασχοληθούμε με τα pixels , αφού χρησιμοποιήσαμε τον υπολογιστή μας σε "κατάσταση κειμένου" . Τα προγράμματα που χρησιμοποιούν αποκλειστικά κείμενο ήταν μια αναγκαιότητα στους υπολογιστές προηγούμενων γενεών , αφού η επεξεργασία των γραφικών είναι διαδικασία που απαιτεί μεγάλη υπολογιστική ισχύ . Ακόμα και τα λειτουργικά συστήματα στερούνταν γραφικού περιβάλλοντος (όπως το DOS) . Τα γραφικά βέβαια ήταν αναγκαία σε εφαρμογές όπως αυτές που αναφέραμε στην αρχη . Έτσι , εκτός από την κατάσταση του κειμένου , υπήρχε σε αυτά τα λειτουργικά συστήματα και η κατάσταση γραφικών , που κατανάλωνε μεν μεγάλη υπολογιστική ισχύ , αλλά μπορούσε να γεμίσει την οθόνη μας με σχήματα και χρώματα .

Για να αλλάξουμε λοιπόν την κατάσταση της οθόνης από κείμενο σε γραφικά , γίνουμε την εξής εντολή :

SCREEN X

όπου Χ , η κατάσταση γραφικών που προτιμάμε . Υπάρχουν διάφορες καταστάσεις γραφικών , που διαφέρουν μεταξύ τους ως προς το πόσα pixels υπάρχουν μέσα στην οθόνη και πόσα χρώματα απεικονίζονται . Βεβαίως όσο περισσότερα , τόσο περισσότερη υπολογιστική ισχύ θα καταναλώνουν . Περισσότερα για τις διάφορες καταστάσεις γραφικών θα βρείτε στη βοήθεια της QBASIC , στα SCREEN MODES .

Στα προγράμματά μας θα χρησιμοποιήσουμε το SCREEN 13 (μου άρεσε επειδή έχει σχετικά χαμηλή ανάλυση και μεγάλη γραμματοσειρά . Θυμίζει υπολογιστή παλιάς τεχνολογίας) . Γράψτε τον εξής κώδικα :

CLS

SCREEN 13

COLOR 1

PRINT "Hello"

Και τρέξτε το πρόγραμμα . Πρέπει να δείτε ένα μπλε κείμενο στην οθόνη . Αλλάζοντας το COLOR από 1 , σε κάποια άλλη τιμή παίρνετε και διαφορετικό χρώμα . Πειραματιστείτε .

Βεβαίως δεν πήγαμε σε κατάσταση γραφικών για να συνεχίσουμε να ασχολούμαστε με κείμενο . Καιρός να αρχίσουμε να ελέγχουμε και τα ίδια τα εικονοστοιχεία της οθόνης μας . Η οθόνη 13 έχει ανάλυση 320 * 200 pixels . Ένα pixel χαρακτηρίζεται απόδύο αριθμούς . Τις συντεταγμένες του πάνω στην οθόνη . Η αρχή του άξονα συντεταγμένων είναι πάνω αριστερή γωνία της οθόνης μας . Έτσι το pixel (15,49) είναι το pixel που βρίσκεται 15 pixels δεξιά από την αριστερή πλευρά της οθόνης και 49 pixels κάτω από την πάνω πλευρά της οθόνης . Δύσκολο? Προσωπικά θα προτιμούσα την αρχή των αξόνων στο κάτω και αριστερό μέρος της οθόνης , αλλά τι να κάνουμε ?

Για να βάλουμε ένα pixel όποιου χρώατος θέλουμε σε όποιο σημείο της οθόνης θέλουμε χρησιμοποιούμε την εντολή PSET , η οποία έχει την ακόλουθη σύνταξη :

PSET (Συντεταγμενες) , χρώμα

πχ

PSET (15,49) , 1

... θα μας δώσει ένα μπλε pixel στις συντεταγμενες (15,49) . Βεβαίως δεν είναι ανάγκη να γεμίσουμε μια ολόκληρη οθόνη pixel προς pixel . Ευτυχώς υπάρχουν και άλλες σχεδιαστικές εντολές , όπως η LINE και η CIRCLE . Από τα ονόματά τους , μάλλον θα καταλάβατε τι κάνουν .

Η εντολή LINE έχει την ακόλουθη σύνταξη :

LINE (ΑΡΧ ΣΥΝΤΕΤΑΓΜ)-(ΤΕΛ . ΣΥΝΤΕΤΑΓΜΕΝΕΣ) , χρώμα , επιλογή

Όπως θα καταλάβατε η εντολή LINE σχεδιάζει μια γραμμή στην οθόνη . Για να περιγράψεις μια γραμμή χειάζεσαι 3 δεδομένα : Το σημείο στο οποίο ξεκινάει , αυτό στο οποίο καταλήγει και βέβαια το χρώμα της γραμμής . Έτσι δίνοντας τις δύο συντεταγμένες αρχικού και τελικού pixel και τον αριθμό του χρώματος της γραμμής (πχ. 1 για μπλε χρώμα) παίρνουμε την επιθυμητή γραμμή στην οθόνη . Για παράδειγμα ο κώδικας :

LINE (0,0)-(320,200) , 1

μας δίνει μια γραμμή μπλε χρώματος που διασχίζει διαγώνια την οθόνη μας .

Το πεδίο "επιλογή" είναι προαιρετικό . Το χρησιμοποιούμε όταν θέλουμε να φτιάξουμε ένα παραλληλόγραμμο . Για παράδειγμα αν θέλουμε ένα παραλληλόγραμμο από το pixel (100,100) ς το pixel (150,150) δίνουμε την εξής εντολή :

LINE (100,100)-(150,150) , 1 , B

Αν πάλι θέλουμε το παραλληλόγραμμο να μην είναι μόνο περίγραμμα , αλλά να είναι γεμάτο χρώμα δίνουμε την εντολή BF (box full).

LINE (100,100)-(150,150) ,1 , BF

Για να περιγράψουμε ένα κύκλο χρειαζόμαστε πάλι 3 πράγματα . Το κέντρο του , την ακτίνα του και το χρώμα του . Έτσι η εντολή CIRCLE έχει την ακόλουθη σύνταξη :

CIRCLE (ΣΥΝΤΕΤΑΓΜ. ΚΕΝΤΡΟΥ) , ακτίνα , χρώμα

πχ

CIRCLE (100,100) ,10 , 1

...θα μας δώσει έναν μπλε κύκλο ακτίνας 10 pixels κεντραρισμένο στο pixel (100,100)

Αυτά προς το παρόν . Μέχρι στιγμής ξέρετε όσες εντολές χρειάζεστε για να γεμίσετε την οθόνη του υπολογιστή σας με ό,τι θέλετε εσείς . Στο επόμενο μέρος των γραφικών θα περιγράψω την κατασκευή πιο πολύπλοκων σχεδίων , όπως οι γραφικές παραστάσεις των συναρτήσεων . Το μέρος 3 θα έχει να κάνει με τις μηχανές γραφικών , όταν θα αρχίσουμε να σχεδιάζουμε το pacman . Το 4ο μέρος , που θα δημοσιεύσω αργότερα θα αναλύει την κατασκευή τρισδιάστατων γραφικών με την QB .

Για οποιαδήποτε απορία , διευκρίνιση ή πρόταση έχετε επικοινωνήστε μαζί μου στο email μου