ΟΜΙΛΗΤΗΣ 1: Ας γράψουμε τώρα ένα πρόγραμμα που περιλαμβάνει ένα παράθυρο, ένα κύκλο, και ο δρομέας μου. Ειδικότερα, ας υπόσταση ένα μαύρο κύκλο στην οθόνη, και, στη συνέχεια, ας εκπαιδεύσει να ακολουθούν το δρομέα μου. Έτσι, αν μετακινήσετε το ποντίκι μου πάνω, κάτω, αριστερά ή προς τα δεξιά, ο κύκλος ακολουθεί κατά μήκος. Ας πρώτα περιλαμβάνουν gevents.h, έτσι ώστε να έχουμε πρόσβαση σε γραφική γεγονότα. Ας επόμενη περιλαμβάνουν GObjects, έτσι ώστε να έχουμε πρόσβαση σε αντικείμενα όπως κύκλους - ή ακριβέστερα, ωοειδή, όπως θα δούμε. Και τότε ας περιλαμβάνουν gwindow.h, έτσι ώστε να έχουμε πρόσβαση σε ένα γραφικό παράθυρο. Στη συνέχεια, ας κηρύξει κατά τον συνήθη τρόπο. Int main κενό. Ας δούμε τώρα την υπόσταση, ή να δημιουργήσετε, ένα παράθυρο με GWindow. Και θα καλέσουμε το μεταβλητό παράθυρο. Παίρνει newGWindow. Και θα κάνω κάπως αυθαίρετα η παράθυρο 320 pixels από 240 pixels. Τώρα πρέπει να υπόσταση ότι κύκλο. Λοιπόν, αποδεικνύεται ότι ένας κύκλος είναι μια ειδική περίπτωση του οβάλ. Είναι ακριβώς έτσι συμβαίνει ότι το πλάτος και το το ύψος ενός κύκλου είναι ίσες. Οπότε ας υπόσταση ένα οβάλ ως ακολούθως. Goval. Θα το ονομάσουμε κύκλο, όμως. Και αυτό πρόκειται να πάρει newGOval. Και θα πάμε να διευκρινιστεί ότι θα αρχίσει στην πάνω αριστερή πλευρά γωνία, του οποίου οι συντεταγμένες είναι 0 κόμμα 0. Και το πλάτος αυτής της παγκόσμιας πρόκειται να είναι 50 με 50 - Με άλλα λόγια, ένας κύκλος. Τώρα έχουμε ένα παράθυρο, έχουμε ένα κύκλο. Αλλά δεν έχουν ακόμη προστεθεί ότι κύκλο στο παράθυρο. Γι 'αυτό και πρέπει να το κάνουμε αυτό ρητά. Προσθέστε το παράθυρο, κύκλος. Με αυτόν τον τρόπο η προσθήκη του τελευταίου με την προηγούμενη. Τώρα, ας κάνουμε κάτι για πάντα. Ας καθίσουμε σε ένα άπειρο βρόχο, ακούγοντας για τα γεγονότα του ποντικιού. Συγκεκριμένα, δεν κάνει κλικ, αλλά κινήσεις του ποντικιού. Και να ανταποκριθούν σε αυτές τις κινήσεις μετακινώντας τον κύκλο. Εδώ πάμε. Ενώ η αλήθεια. Ας ελέγξει για μια εκδήλωση με GEvent, καλώντας το συμβάν. Παίρνει getNextEvent. Και ας συγκεκριμένα προσπαθήσει να πάρει ένα συμβάν ποντικιού από κάποιο τύπο. Ας επόμενη βεβαιωθείτε ότι το συμβάν δεν δεν ισούται null, έτσι ώστε να υπάρχει πραγματικά κάτι να ανταποκριθεί. Και ας επόμενο έλεγχο, εάν getEventType, περνώντας περίπτωση, ισούται με MOUSE_MOVED, η οποία είναι μια ειδική σταθερά, δήλωσε σε το φορητό Βιβλιοθήκη του Στάνφορντ, ότι σημαίνει ότι το ποντίκι πράγματι έχει μετακινηθεί. Στη συνέχεια, ας προχωρήσουμε σε ακολουθήστε τα παρακάτω βήματα. Αναγνωρίσει ένα διπλό. Και εγώ θα το ονομάσουμε x. Συγκεκριμένα αποθήκευση στο ότι η επιστροφή αξία της getX της εκδήλωσης. Με άλλα λόγια, να μου το x-συντεταγμένη στην οποία η ποντίκι κινήθηκε προς. Αλλά ακριβώς για να κάνουν τη γραμμή κύκλο μέχρι ακριβώς στην κορυφή του δρομέα μου, επιτρέψτε μου τώρα αφαιρούμε το πλάτος των ίδιο κύκλο διαιρούμενο δια του 2. Με άλλα λόγια, ας αφαιρέσουμε το off ακτίνα του. Ας κάνουμε κάτι παρόμοιο τώρα για y. Y παίρνει πάρει η y-συντεταγμένη της εν λόγω εκδήλωσης - δηλαδή, το ποντίκι μετακινηθεί - μείον getWidth του κύκλου. Και αυτή τη φορά θα κάνει την πλήρη διάμετρο, όχι η ακτίνα. Τέλος, ας ορίσουμε τη θέση της κύκλος να είναι ότι οι νέες x y κόμμα. Ας σώσει τώρα, την κατάρτιση, και τρέξτε το πρόγραμμα. Κάντε δρομέα. . / Δρομέα. Υπάρχει ο κύκλος στο πάνω αριστερά γωνία. Τώρα, επιτρέψτε μου να μετακινήσετε το ποντίκι μου πάνω από αυτό παράθυρο και να δούμε αν οι ασφάλειες κύκλο επάνω σε αυτό, όπως αναμενόταν. Και πράγματι το κάνει. Παρατηρήστε ότι Συγκεκριμένα, ο κύκλος είναι στην κορυφή του δρομέα μου, τέλεια στο κέντρο, λόγω της μαθηματικά κάναμε τη συμμετοχή της διαμέτρου του και ακτίνα του.