Τετάρτη, 11 Νοεμβρίου 2015

Παράδειγμα Τρία Καταγραφικά (νέο)




Εδώ είναι ένα κάπως μεγάλο παράδειγμα. Φτιάχνουμε τρία καταγραφικά στην οθόνη. Κάθε καταγραφικό παίρνει τιμή από ένα σχήμα (έχουν οριστεί τρία βασικά, αλλά μπορεί κανείς να αλλάξει σχήματα δίνοντας τον αριθμό πολυγώνων). Κάθε καταγραφικό έχουμε ορίσει να έχει διαφορετική ταχύτητα εγγραφής, ενώ γράφουν στον ίδιο χρόνο! Δηλαδή η ταχύτητα έχει να κάνει με την ολίσθηση. Όποιο "βιάζεται" σημαίνει ότι δείχνει περισσότερη λεπτομέρεια σε μικρότερο χρονικό διάστημα.
Η βάση του χρόνου για όλα τα καταγραφικά είναι το δέκατο του δευτερολέπτου., κάθε 3 δευτερόλεπτα εμφανίζεται και μια νέα αξονική γραμμή στο κάθε καταγραφικό. Επιπλέον εμφανίζεται ο αριθμός δευτερολέπτων πάνω στο καταγραφικό.
Γράφεται όλο σε ένα τμήμα (μπορεί κανείς να το αντιγράψει από εδώ). Χρησιμοποιώ και δυο κλάσεις για ευκολία!

Με τα πλήκτρα του ποντικιού αλλάζουμε ταχύτητα περιστροφής (μπορούμε αν το πάνε και ανάποδα). Και βλέπουμε στα καταγραφικά τις αλλαγές

Σε Windows βάλτε την εντολή Ομαλά ναι  για να εμφανίζονται οι γραμμές χωρίς "δοντάκια". Γίνεται χρήση της GDI+ βιβλιοθήκης σχεδιασμού. Σε Linux θα τρέξει μεν αλλά χωρίς αποτέλεσμα, πιθανόν γιατί ο αλγόριθμος anti-aliasing είναι πατενταρισμένος.

Ξεκινάμε την Μ2000 με εκτέλεση του m2000.exe.
Γράφουμε Σ Α και πατάμε enter
Αντιγράφουμε το πρόγραμμα.
Πατάμε Esc για να βγούμε πάλι στη γραμμή εντολών της Μ2000
Γράφουμε Α και πατάμε το enter και τρέχει
Με οποιοδήποτε πλήκτρο του πληκτρολογίου σταματάει (τα Esc και Break κάνουν την δουλειά, το μεν πρώτο σταματάει το κώδικα εκεί που τρέχει, το δεύτερο διαγράφει το πρόγραμμα και γυρνάει στην αρχική κατάσταση- εδώ μας ρωτάει κιόλας, αλλά καμιά φορά η ερώτηση έρχεται μετά τη διαγραφή).

Με τα πλήκτρα του ποντικού αλλάζουμε ταχύτητα στις ακίδες.

Με Σώσε τρια σώνουμε το πρόγραμμα (ως τρια.gsb)
Με Νεο καθαρίζουμε το διερμηνευτή από οποιαδήποτε τμήματα/συναρτήσεις.
Με Φόρτωσε τρια ξανά φορτώνουμε το πρόγραμμα

Ο κατάλογος που σώνει τα προγράμματα βγαίνει με την εντολή Σύστημα Κατ$
Ο χρωματισμός γίνεται στο διορθωτή και δεν σώνεται (ο διορθωτής τον κάνει άμεσα, δεν τον αποθηκεύει όταν τον κλείνουμε). Αν θέλουμε να εξάγουμε το πρόγραμμα με χρώμα τότε απλά το αντιγράφουμε στο πρόχειρο και τότε γίνεται η μετατροπή σε html, και σε απλή μορφή και προγράμματα όπως το  Word βλέπουν ότι υπάρχει σε html στο πρόχειρο και το ανοίγουν με το χρώμα. Το ίδιο κάνει και ο Blogger εδώ, σε Chrome. Σε Linux πρώτα το αντιγράφω σε libreoffice και μετά το αντιγράφω από εκεί στο Blogger (σε FireFox).

Αν σταματάμε το πρόγραμμα με το Esc, ίσως χρειαστεί να αδειάσουμε το σωρό τιμών.
Η εντολή Σωρός μας δείχνει αν έχει τιμές
Η εντολή Άδειασε τον αδειάζει. Ο σωρός τιμών μεταφέρει τιμές από και προς τα τμήματα, Οπότε το τελευταίο τμήμα που διακόπηκε μπορεί να τον έχει χρησιμοποιήσει και να έχει αφήσει τιμές. Αν το τμήμα στην εκκίνηση διαβάζει από το σωρό, στην επόμενη εκκίνηση θα βρει τιμές. Μπορούμε αν θέλουμε να βάζουμε την εντολή Άδειασε από την αρχή.
Επίσης η εντολή Καθαρό καθαρίζει μεταβλητές που δημιουργήσαμε στην κονσόλα. Αυτές είναι γενικές. Παράλληλα καθαρίζει και τις στατικές που πιθανόν έχουμε φτιάξει στα τμήματα. Αυτές διατηρούνται και μετά το πέρας εκτέλεσης, ενώ παίρνουν μια φορά την αρχική τιμή. Η Καθαρό μπορεί να χρησιμοποιηθεί εντός τμήματος για να καθαρίσει τις τοπικές του τμήματος και τις στατικές των τμημάτων που κάλεσε. Αν ένα τμήμα είναι γενικό και έχει στατικές μεταβλητές τότε για κάθε άλλο τμήμα που το καλεί θα έχει το δικό του σετ στατικών. Το ίδιο τμήμα δηλαδή για κάθε άλλο τμήμα έχει τη κατάσταση που του δίνει το κάθε τμήμα. Ένα τμήμα μπορεί να καλέσει μόνο τα δικά του τμήματα (και μάλιστα όχι αυτά που υπάρχουν σε αυτά) και γενικά τμήμα. Ένα τμήμα μπορεί να έχει δικά του τμήματα και ορισμένα να τα δηλώσει γενικά. Αυτά τα γενικά τμήματα θα παραμείνουν όσο το τμήμα τρέχει και θα σκιάζουν υπάρχοντα γενικά με το ίδιο όνομα. Ομοίως και για τις γενικές μεταβλητές. Αν υπάρχει η Αλφα ως γενική και στο τμήμα δώσουμε το Αλφα=40 τότε θα δημιουργηθεί τοπική μεταβλητή, που θα σκιάζει την Άλφα μόνο μέσα στο τμήμα. Για να αλλάξουμε τιμή στη Γενική (ενώ δεν την έχουμε σκιάσει) χρησιμοποιούμε το <= και όχι το =. Για τους γενικούς πίνακες δεν χρησιμοποιούμε το <= επειδή ορίζονται με την Πίνακας (ενώ οι μεταβλητές ορίζονται και με εκχώρηση τιμής, και με άλλους τρόπους, με χρήση τύπων).

Όταν θέλουμε ένα τμήμα Γενικό δεν θα χρησιμοποιούμε γενικές μεταβλητές σε αυτό! Μπορούμε να θέσουμε κάποιες αρχικές τιμές σε στατικές, οι οποίες φαίνονται μόνο από την ίδια, και μπορούν να αλλαχθούν, ενώ για κάθε διαφορετικό τμήμα έχουν διαφορετικές τιμές

Τμήμα Γενικό Αλφα {
      Τύπωσε "Είμαι το Άλφα"
}
Τμήμα Γενικό Βήτα {
      Αλφα
}
Τμήμα Δέλτα {
      Τμήμα Γενικό Άλφα {
            Τύπωσε "Είμαι το Άλφα στο Δέλτα"
      }
      Βήτα 'καλεί το Βήτα, το οποίο καλεί το Άλφα στο Δέλτα
}
Βήτα ' τώρα καλεί το πρώτο Άλφα
Δέλτα
Βήτα   ' τώρα καλεί το πρώτο Άλφα


και σε μεταβλητές:
Γενική Άλφα=500
Τμήμα Γενικό Βήτα {
      Τύπωσε Αλφα
}
Τμήμα Δέλτα {
      Γενική Αλφα=1000
      Βήτα 'καλεί το Βήτα, το οποίο δείχνει το 1000
}
Βήτα ' τώρα δείχνει το 500
Δέλτα
Βήτα   ' τώρα δείχνει το 500


Με στατικές, χρήση τύπων και προαιρετικών παραμέτρων (το ? στην κλήση της Βήτα σημαίνει απροσδιόριστο, και δεν βγαίνει λάθος αν όντως η χ πάρει τιμή. Αν παράμετρος δεν πάρει τιμή τότε βγαίνει λάθος):


Καθαρό ' σβήνει τις στατικές
Τμήμα Γενικό Βήτα ( χ=0, ψ ως λογικός=Αλήθές){
      Στατικές α=10, β$="ναι"
      Αν ψ τότε Αν χ>50 τότε α+=10 : β$="ναι" αλλιώς β$="όχι"
      Τύπωσε α, β$
}
Τμήμα Δέλτα {
      Τύπωσε "Δέλτα"
      Βήτα 100
      Βήτα ?, Αληθές
}
Τμήμα Ζήτα {
      Τύπωσε "Ζήτα"
      Βήτα 100
      Βήτα 100
      Βήτα ?, Αληθές
}
Δέλτα  ' φθάνει στο 20
Ζήτα   ' φθάνει στο 30
Δέλτα  'φθάνει στο 30


Τα παραδείγματα παραπάνω (Ειδικά με τους τύπους παραμέτρων τρέχουν με τις τελευταίες εκδόσεις - πάνω από 9). Η Ανάρτηση ανανεώθηκε στις 2 Δεκ 2018. Έκδοση γλώσσας 9.6


Πρόγραμμα Τρια
Αντιγράψτε από εδώ:


γενικη αλφα=12*4 \\  κρατάμε το 12 γιατί διαιρείται με το 3 και το 4
οθονη 5,0
πένα 14
φοντο 5,1
\\ ορίζω την ανανέωση οθόνης στο ενάμιση δευτερόλεπτο
\\ αλλά ουσιαστικά θα την ανανεώνω κάθε δέκατο του δευτεροπλέτου
Ανανέωση 1500
\\ ορίζω πλάτος 8000 για την αναφορά και το 2 σημαίνει
\\ ότι το κείμενο θα μπει στο κέντρο αυτού!
Αναφορα 2, {Παράδειγμα "Τρία Καταγραφικά"},8000
\\ καλώ μερικές απλές ρουτίνες
διαμέσου βαλε_τιτλο
διαμέσου ορισε_τμημα_β
διαμέσου φτιάξε_κλάσεις \\ αν αλλάξουμε τόνο δεν θα βρεθεί η ρουτίνα και θα τερματίσει το πρόγραμμα
\\ τώρα υπάρχουν δυο συναρτήσεις, η σχεδιο() και η Καταγρ()
\\ που φτιάχνουν αντικείμενα
\\ τα νούμερα δηλώνουν που θα είναι τα σχέδια και που τα καταγραφικά
\\ Πρέπει να τα έχουμε σωστό ύψος
\\ γιατί η καταγραφή γίνεται από την "ακίδα" του σχεδίου
Τριγωνο=σχεδιο(4000,2500)
Τκ=Καταγρ(8000,500,8000,4000,45)
β 2000,3, &Τριγωνο.Α(), 0
Εξάγωνο=σχεδιο(4000,6750)
Εκ=Καταγρ(8000,4750,8000,4000,15)
β 2000,6, &Εξάγωνο.Α(), 0
Κυκλος_μου=σχεδιο(4000,11000)
Κκ=Καταγρ(8000,9000,8000,4000,30)
β 2000,αλφα δια 2, &Κυκλος_μου.Α(), 0
\\ βασικό εδώ να κρατήσουμε την οθόνη, σαν φόντο
\\ θα χρησιμοποιούμε την Άφησε και θα γράφουμε πάνω στο φόντο αυτό
κρατησε
ι=0
\\ εδώ δίνω χρόνο 100 χιλιοστά του δευτερολέπτου
Κάθε 100 {
      πένα 15 {
            ανανεωση 1500
            αφησε
            Τριγωνο.τυπωσε_το (ι+αλφα/6) υπολ αλφα
                       \\ μεταφέρω τη ΘΕΣΗ.Υ στην είσοδο του καταγραφικού (8000)
                        χαραξε εως 8000,θέση.υ
                        Τκ.Ακιδα
                 
            Εξάγωνο.τυπωσε_το (ι+αλφα/12) υπολ αλφα
                        χαραξε εως 8000,θέση.υ
                        Εκ.Ακιδα
                 
            Κυκλος_μου.τυπωσε_το ι
                        χαραξε εως 8000,θέση.υ
                        Κκ.Ακιδα
            ανανεωση 
1500
            ι++
            ι=ι υπολοιπο αλφα ''  αν βάλουμε 60 θα πάρουμε άλλη καταγραφή.
      }
      αν ενκομ$<>"" τότε έξοδος
}
έξοδος
\\ υποχρεωτικά βάζουμε "έξοδος" γιατι έχουμε την ρουτίνα παρακάτω
\\ η ρουτίνα δεν είναι σαν την Ρουτινα Όνομα()
\\ δεν παίρνει παραμέτρους, απλά είναι κώδικας που ήθελα να μην φαίνεται στην αρχή!
\\ Ο μεταφραστής πηδάσει στη βάλε_τίτλο αλλά καταγράφει την επιστροφή
\\ και γυρίζει μόλις βρει μια εντολή Επιστροφή.  Από την παλιά Basic.
βαλε_τιτλο:
      αν έκδοση=8 και αναθεώρηση<84 τότε Επιστροφή
      θεση κλιμαξ.χ-2200, κλιμαξ.υ
      \\ φτιάχνω μια περιοχή από γράμματα
      \\ μόνο ότι τυπωθεί εντός θα φανεί
      χρωμα {
          Επιγραφή "Μ2000","Arial Black", 90,πι/2,0,0,100
      } ;
      θεση χ.σημεια-2200,υ.σημεια-8000
      βαψε 2000, 8000, #775566, #221133,1,1
      \\ Τώρα την παίρνω πίσω..δηλαδή αφήνω να τυπωθεί οτιδήποτε οπουδήποτε!
      \\ αυτή η εντολή μπήκε στην 84η αναθεώρηση.
      \\ Μπορούσαμε να κάνουμε το ίδιο ορίζοντας μια άλλη περιοχή
      \\ αλλά εδώ είναι πιο εύκολο!
      χρωμα { } ;
Επιστροφή
\\ Αν χρησιμοποιούσαμε το Ρουτινα ονομα_ρουτινας()....Τέλος Ρουτίνας
\\ το τμήμα θα διαγραφόταν στο πέρας της Ρουτίνας
\\ Αυτή όμως η "απλή" ρουτίνα είναι μια "συνέχεια" του τμήματος
ορισε_τμημα_β:
Τμήμα Β {
      διαβασε α, ν, &π(), κυκλ
      πίνακας π(αλφα,2)
      ζ=πι/2
      κμ=0
      Χ=θέση.χ
      Υ=θέση.υ
      αν κυκλ τότε κυκλος α
            γ=ν/2
            κκ=αλφα/ν
            βήμα γωνια -(πι/2+πι/ν),α
            β=(Χ-θεση.Χ)*2/κκ
            δ=απολ(Υ-θεση.υ)
            βήμα γωνια -(πι/2+πι/ν),-α
            αν κυκλ τότε αν δ>0 τότε κυκλος δ
            βήμα γωνια -(πι/2+πι/ν)+ζ,α
            βημα γωνια 0,0
            για ι=0 εως 2*πι-πι/γ ανα πι/γ {
            Χ1=ΘΕΣΗ.Χ
            Υ1=ΘΕΣΗ.Υ
            για λ=1 εως κκ {
            ΘΕΣΗ Χ1, Υ1
                  χαραξε γωνια ι+ζ, β*Λ
                 π(κμ,0)=θέση.χ
                 π(κμ,1)=θέση.υ
                 κμ++
                 κμ=κμ υπολοιπο αλφα
                  αν κυκλ τότε κυκλος γεμισμα 11,30,1,11
                  }
       }
      βήμα γωνια -(πι/2+πι/ν)+ζ,-α
}
Επιστροφή
φτιάξε_κλάσεις:
κλάση σχεδιο {
      Πίνακας α(0)
      χ, υ
      τμημα σχεδιο {
            διάβασε,
            θέση,
      }
      τμημα τυπωσε_το {
      αν ταύτιση("Α") τότε {
            διάβασε ι
            ι=απολ(ακ(ι)) υπολοιπο αλφα
                  θεση,
                  χαραξε εως .α(ι,0), .α(ι,1)
      } αλλιώς {
            για ι=0 εως αλφα-1 {
                  θεση,
                  χαραξε εως .α(ι,0), .α(ι,1)
            }
      }
      }
}
Κλάση Καταγρ {
      χ, υ, πλ,υψ, βημ, ακ=-1
      περ$, μετρητής
      τμημα Καταγρ {
            \\ αυτό το τμήμα είναι ο κατασκευαστής
            \\ δεν το καλούμε ως τμήμα αλλά ως συνάρτηση με αυτό το όνομα.
            διάβασε,,.πλ,.υψ, .βημ
            -=30
            .υψ+=60
            .ακ<=1
            χ1=θεση.χ
            υ1=θεση.υ
            θέση,
            βαψε .πλ, .υψ, 1,7
            θέση+100,+.υψ-100
            πενα 11 {
                  επιγραφη "Μιζενς 2000", "Verdana", 8,πι/2,0,0
            }
            θέση χ1, υ1
      }
      Τμήμα Ακιδα {
            αν .ακ=-1 τότε έξοδος
            ακ1=θέση.υ
            αν .περ$<>"" τότε { αντέγραψε+.βημ, με .περ$ } αλλιώς .ακ=ακ1
            .μετρητής++
            αν .μετρητής υπολ (αλφα δια 4)=1 τότε θέση+.βημ/2, : πάχος 1,3 { χάραξε 0 ,.υψ,14 }
            θέση, ακ1
            χαραξε εως+.βημ, .ακ
            .ακ<=ακ1 \\ εδώ βάζουμε <= γιατί η ακ είναι της κλάσης και όχι του τμήματος
            θεση,
            αντέγραψε .πλ-.βημ/2, .υψ στο .περ$
            θέση,+.υψ/2
            πενα 14 { χάραξε .πλ }
            θέση+.πλ/2,+200
            πενα 12 {
                  επιγραφη μορφη$("Καταγραφικό: {0}sec",γραφη$(.μετρητής/10,"000000.0")), "Lucida Console", 11, 0, 2, 1, 20
            }
      }
}
Επιστροφή





Μια παραλλαγή με τα πλήκτρα του ποντικιού να επιταχύνουν αριστερόστροφα το αριστερό και δεξιόστροφα το δεξιό. Σε κάποια στιγμή μπορεί να σταματήσει η περιστροφή και θα φαίνεται μια οριζόντια γραμμή στα καταγραφικά!

γενικη αλφα=60*4 \\  κρατάμε το 12 γιατί διαιρείται με το 3 και το 4
ομαλά ναι
οθονη 5,0
πένα 14
φοντο 5,1
\\ ορίζω την ανανέωση οθόνης στο ενάμιση δευτερόλεπτο
\\ αλλά ουσιαστικά θα την ανανεώνω κάθε δέκατο του δευτεροπλέτου
Ανανέωση 1500
\\ ορίζω πλάτος 8000 για την αναφορά και το 2 σημαίνει
\\ ότι το κείμενο θα μπει στο κέντρο αυτού!
Αναφορα 2, {Παράδειγμα "Τρία Καταγραφικά"},8000
\\ καλώ μερικές απλές ρουτίνες
διαμέσου βαλε_τιτλο
διαμέσου ορισε_τμημα_β
διαμέσου φτιάξε_κλάσεις \\ αν αλλάξουμε τόνο δεν θα βρεθεί η ρουτίνα και θα τερματίσει το πρόγραμμα
\\ τώρα υπάρχουν δυο συναρτήσεις, η σχεδιο() και η Καταγρ()
\\ που φτιάχνουν αντικείμενα
\\ τα νούμερα δηλώνουν που θα είναι τα σχέδια και που τα καταγραφικά
\\ Πρέπει να τα έχουμε σωστό ύψος
\\ γιατί η καταγραφή γίνεται από την "ακίδα" του σχεδίου
Τριγωνο=σχεδιο(4000,2500)
Τκ=Καταγρ(8000,500,8000,4000,45)
β 2000,3, &Τριγωνο.Α(), 0
Εξάγωνο=σχεδιο(4000,6750)
Εκ=Καταγρ(8000,4750,8000,4000,15)
β 2000,6, &Εξάγωνο.Α(), 0
Κυκλος_μου=σχεδιο(4000,11000)
Κκ=Καταγρ(8000,9000,8000,4000,30)
β 2000,αλφα δια 2, &Κυκλος_μου.Α(), 0
\\ βασικό εδώ να κρατήσουμε την οθόνη, σαν φόντο
\\ θα χρησιμοποιούμε την Άφησε και θα γράφουμε πάνω στο φόντο αυτό
κρατησε
ι=0
κ=1
\\ εδώ δίνω χρόνο 10 χιλιοστά του δευτερολέπτου
Κάθε 10 {
      πένα 15 {
            ανανεωση 1500
            αφησε
            Τριγωνο.τυπωσε_το (ι+αλφα/6) υπολ αλφα
                       \\ μεταφέρω τη ΘΕΣΗ.Υ στην είσοδο του καταγραφικού (8000)
                        χαραξε εως 8000,θέση.υ
                        Τκ.Ακιδα
                      
            Εξάγωνο.τυπωσε_το (ι+αλφα/12) υπολ αλφα
                        χαραξε εως 8000,θέση.υ
                        Εκ.Ακιδα
                      
            Κυκλος_μου.τυπωσε_το ι
                        χαραξε εως 8000,θέση.υ
                        Κκ.Ακιδα
            ανανεωση 1500
            αν πατημένο(1) τότε {
                  κ++
            } αλλιώς.αν πατημένο(2) τότε {
                  κ--
            }
            ι+=κ
            ι=ι υπολοιπο# αλφα ''  αν βάλουμε 60 θα πάρουμε άλλη καταγραφή.
      }
      αν ενκομ$<>"" τότε έξοδος
}
έξοδος
\\ υποχρεωτικά βάζουμε "έξοδος" γιατι έχουμε την ρουτίνα παρακάτω
\\ η ρουτίνα δεν είναι σαν την Ρουτινα Όνομα()
\\ δεν παίρνει παραμέτρους, απλά είναι κώδικας που ήθελα να μην φαίνεται στην αρχή!
\\ Ο μεταφραστής πηδάσει στη βάλε_τίτλο αλλά καταγράφει την επιστροφή
\\ και γυρίζει μόλις βρει μια εντολή Επιστροφή.  Από την παλιά Basic.
βαλε_τιτλο:
      αν έκδοση=8 και αναθεώρηση<84 τότε Επιστροφή
      θεση κλιμαξ.χ-2200, κλιμαξ.υ
      \\ φτιάχνω μια περιοχή από γράμματα
      \\ μόνο ότι τυπωθεί εντός θα φανεί
      χρωμα {
          Επιγραφή "Μ2000","Arial Black", 90,πι/2,0,0,100
      } ;
      θεση χ.σημεια-2200,υ.σημεια-8000
      βαψε 2000, 8000, #775566, #221133,1,1
      \\ Τώρα την παίρνω πίσω..δηλαδή αφήνω να τυπωθεί οτιδήποτε οπουδήποτε!
      \\ αυτή η εντολή μπήκε στην 84η αναθεώρηση.
      \\ Μπορούσαμε να κάνουμε το ίδιο ορίζοντας μια άλλη περιοχή
      \\ αλλά εδώ είναι πιο εύκολο!
      χρωμα { } ;
Επιστροφή
\\ Αν χρησιμοποιούσαμε το Ρουτινα ονομα_ρουτινας()....Τέλος Ρουτίνας
\\ το τμήμα θα διαγραφόταν στο πέρας της Ρουτίνας
\\ Αυτή όμως η "απλή" ρουτίνα είναι μια "συνέχεια" του τμήματος
ορισε_τμημα_β:
Τμήμα Β {
      διαβασε α, ν, &π(), κυκλ
      πίνακας π(αλφα,2)
      ζ=πι/2
      κμ=0
      Χ=θέση.χ
      Υ=θέση.υ
      αν κυκλ τότε κυκλος α
            γ=ν/2
            κκ=αλφα/ν
            βήμα γωνια -(πι/2+πι/ν),α
            β=(Χ-θεση.Χ)*2/κκ
            δ=απολ(Υ-θεση.υ)
            βήμα γωνια -(πι/2+πι/ν),-α
            αν κυκλ τότε αν δ>0 τότε κυκλος δ
            βήμα γωνια -(πι/2+πι/ν)+ζ,α
            βημα γωνια 0,0
            \\  πριν την 9.6
            \\             για ι=0 εως 2*πι-πι/γ ανα πι/γ {
            για ι=0 εως 2*πι ανα πι/γ {
            Χ1=ΘΕΣΗ.Χ
            Υ1=ΘΕΣΗ.Υ
            για λ=1 εως κκ {
            ΘΕΣΗ Χ1, Υ1
                  χαραξε γωνια ι+ζ, β*Λ
                 π(κμ,0)=θέση.χ
                 π(κμ,1)=θέση.υ
                 κμ++
                 κμ=κμ υπολοιπο αλφα
                  αν κυκλ τότε κυκλος γεμισμα 11,30,1,11
                  }
       }
      βήμα γωνια -(πι/2+πι/ν)+ζ,-α
}
Επιστροφή
φτιάξε_κλάσεις:
κλάση σχεδιο {
      Πίνακας α(0)
      χ, υ
      τμημα σχεδιο {
            διάβασε ,
            θέση ,
      }
      τμημα τυπωσε_το {
      αν ταύτιση("Α") τότε {
            διάβασε ι
            ι=απολ(ακ(ι)) υπολοιπο αλφα
                  θεση ,
                  χαραξε εως .α(ι,0), .α(ι,1)
      } αλλιώς {
            για ι=0 εως αλφα-1 {
                  θεση ,
                  χαραξε εως .α(ι,0), .α(ι,1)
            }
      }
      }
}
Κλάση Καταγρ {
      χ, υ, πλ,υψ, βημ, ακ=-1
      περ$, μετρητής
      τμημα Καταγρ {
            \\ αυτό το τμήμα είναι ο κατασκευαστής
            \\ δεν το καλούμε ως τμήμα αλλά ως συνάρτηση με αυτό το όνομα.
            διάβασε ,,.πλ,.υψ, .βημ
            -=30
            .υψ+=60
            .ακ<=1
            χ1=θεση.χ
            υ1=θεση.υ
            θέση ,
            βαψε .πλ, .υψ, 1,7
            θέση +100, +.υψ-100
            πενα 11 {
                  επιγραφη "Μιζενς 2000", "Verdana", 8,πι/2,0,0
            }
            θέση χ1, υ1
      }
      Τμήμα Ακιδα {
            αν .ακ=-1 τότε έξοδος
            ακ1=θέση.υ
            αν .περ$<>"" τότε { αντέγραψε +.βημ, με .περ$ } αλλιώς .ακ=ακ1
            .μετρητής++
            αν .μετρητής υπολ (αλφα δια 4)=1 τότε θέση +.βημ/2, : πάχος 1,3 { χάραξε 0 ,.υψ,14 }
            θέση , ακ1
            χαραξε εως +.βημ, .ακ
            .ακ<=ακ1 \\ εδώ βάζουμε <= γιατί η ακ είναι της κλάσης και όχι του τμήματος
            θεση ,
            αντέγραψε .πλ-.βημ/2, .υψ στο .περ$
            θέση , +.υψ/2
            πενα 14 { χάραξε .πλ }
            θέση +.πλ/2,+200
            πενα 12 {
                  επιγραφη μορφη$("Καταγραφικό: {0}sec",γραφη$(.μετρητής/10,"000000.0")), "Lucida Console", 11, 0, 2, 1, 20
            }
      }
}
Επιστροφή

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου