Σάββατο 30 Ιανουαρίου 2016

Παράδειγμα Λουλούδια 2

Στις 26/10/2015 είχε δημοσιεύσει το πρώτο παράδειγμα με τις περιστρεφόμενες καμπύλες. Σήμερα έχω ένα ακόμα όπου τις μεταφέρουμε όπου θέλουμε με το ποντίκι ενώ παράλληλα γράφουμε αριθμούς στην οθόνη.
Χρησιμοποιώ τη Διέκοψε για να βγω από την φόρμα. Επίσης χρησιμοποιώ την Δείκτη.μορφή για να κρύψω το ποντίκι πάνω στην οθόνη (το επαναφέρω στο τέλος). Επίσης ενώ έχω δείξει πως χωρίζουμε την οθόνη για να κρατάμε κάποιες γραμμές στο πάνω μέρος χωρίς ολίσθηση, με την εντολή Οθόνη που σβήνει το κάτω μέρος, σήμερα έχω την εντολή Κύλιση που θέτει το χώρισμα στην γραμμή (εδώ η 4 είναι η πέμπτη γραμμή άρα κρατάμε από 0 έως 3, άρα τέσσερις γραμμές).
Δώστε βοήθεια Κύλιση (με αυτή την εντολή μπορούμε επιπλέον να κάνουμε ανάποδη ολίσθηση, να προσθέτουμε γραμμές από πάνω, δείτε τι έχει στη βοήθεια)



Στο παράδειγμα οι μεταβλητές ορίζονται όταν θέλουμε να τις χρησιμοποιήσουμε. Αυτή είναι μια ευκολία που είχε η Basic, και έχει και η M2000. Συνήθως αυτή η πρακτική δεν είναι καλή σε άλλες γλώσσες. Εδώ όμως επειδή μας χρωματίζει τα δικά μας αναγνωριστικά ο διορθωτής έχουμε άμεση εποπτεία του τι έχουμε ορίσει. Εννοείται πως αν βρει ο διερμηνευτής ένα άγνωστο αναγνωριστικό στην δεξιά πλευρά της αντικατάστασης τότε έχουμε λάθος.
Δεν υπάρχει καθόλου αναμονή. Δίνουμε μόνο μια ανανέωση 1000 που σημαίνει, κάνε τώρα ανανέωση οθόνης και βάλε το μετρητή στο ένα δευτερόλεπτο (ώστε μετά από αυτό να κάνεις πάλι ανανέωση). Ουσιαστικά πριν περάσει το δευτερόλεπτο πάλι κάνουμε ανανέωση και ρυθμίζουμε το μετρητή. Κάθε σχήμα τυπώνεται με XOR έτσι την πρώτη φορά τυπώνεται:

Νέα_Οθόνη=Σχήμα XOR Τωρινή_Οθόνη 

και μετά η οθόνη επανέρχεται επειδή τυπώνουμε πάλι το ίδιο από πάνω!

 Νέα_Οθόνη1= Σχήμα XOR Νέα_Οθόνη

Η Νέα_Οθόνη1 είναι η Τωρινή_Οθόνη δηλαδή παίρνουμε την αρχική.  Αμέσως μετά τυπώνουμε και πιθανόν να ολισθήσει το κάτω μέρος της οθόνης. Απλά ο μετρητής της Ανανέωση δεν θα επιτρέψει να δούμε την ολίσθηση πριν σχεδιάσουμε ξανά την Nέα_Οθόνη. 
Πώς τα καταφέρνει η Μ2000 και δεν αφήνει να ανανεωθεί η οθόνη; Αυτό δεν είναι μυστικό, αλλά είναι γραμμένο στο κώδικα της Μ2000 που είναι ανοιχτός (το exe αρχείο έρχεται μαζί με το κώδικα του περιβάλλοντος της γλώσσας)


Οθόνη 1,0
Φόντο 1,2 ' από μπλε μέχρι πράσινο
Πένα 13
Διπλά
Χρώμα 4,2 { \\ 2 για περίγραμμα μόνο
      Τύπωσε "Μ2000",,"Λουλούδια 2"
}
Κανονικά
Πένα 15
κκ=0
Κύλιση Χώρισμα 4
Δείκτη.μορφή Κρύψε
Επανέλαβε {
      Για ι=Πι/10 Έως Πι Ανά Πι/2 {
            μια_τιμή=Τυχαίος(2,15)
            μεταβλητή1=-3900
            μεταβλητή2=-3600
            Για Λ=0 Έως 2*Πι-Πι/32 Ανά Πι/32 {
                  κκ++
                  βάσηΧ=δείκτης.χ
                  βάσηΥ=δείκτης.υ
                  Αν Δείκτης>0 Τότε Δείκτη.Μορφή Δείξε : Διέκοψε
                  μεταβλητή2+=60
                  μεταβλητή1+=60
                  Χρώμα ! μια_τιμή {
                        Για Μ=0 Έως 2*Πι-Πι/8 Ανά Πι/8 {
                              Θέση βάσηΧ,ΒάσηΥ
                              α=Πι/3+Μ+Λ
                              β=2*Λ+Μ
                              γ=Πι+Μ+Λ
                              Καμπύλη Γωνία α,500,β,-3000,γ,2000
                              Θέση βάσηΧ-μεταβλητή1,βάσηυ-μεταβλητή2
                              Καμπύλη Γωνία Πι/16-α,100,Πι/16-β,-600,Πι/16-γ,400
                        }
                  }
                  Ανανέωση 1000
                  Χρώμα ! μια_τιμή { \\ το ! δηλώνει ότι θα γίνει Xor με τα περιεχόμενα της οθόνης
                        Για Μ=0 Έως 2*Πι-Πι/8 Ανά Πι/8 {
                              α=Πι/3+Μ+Λ
                              β=2*Λ+Μ
                              γ=Πι+Μ+Λ
                              Θέση βάσηΧ,ΒάσηΥ
                              Καμπύλη Γωνία α,500,β,-3000,γ,2000
                              Θέση βάσηΧ-μεταβλητή1, βάσηυ-μεταβλητή2
                              Καμπύλη Γωνία Πι/16-α,100,Πι/16-β,-600,Πι/16-γ,400
                        }
                  }
                 Τύπωσε κκ,
            }
      }
} Πάντα


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

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

You can feel free to write any suggestion, or idea on the subject.