Ένα διασκεδαστικό παιχνίδι που προτρέπει έναν αρχάριο προγραμματιστή να ξεκινήσει τον προγραμματισμό.
Τι κάνει το προγραμματάκι ; Είναι μια φόρμα που κινείται «ακαθόριστα» σε όλη την εικόνα του υπολογιστή σας, μέχρι να την πιάσετε καλά!
Κώδικας σε VB 6.0
Ξεκινώντας, ξεκαθαρίζουμε τι κάνουν κάποιες συναρτήσεις στο πρόγραμμα
Private Form_Load()
συμβάν που προκαλείται κάθε φορά που εκτελείται το πρόγραμμα
Private Timer1_Timer()
συμβάν που προκαλείται από ένα χρονόμετρο, ανά συγκεκριμένο χρονικό διάστημα (το ορίζει ο προγραμματιστής)
θα δούμε τις παρακάτω ρουτίνες αναλυτικά
Private Sub init()
Private Sub new_position()
Private Sub go_end()
Καθώς και την ορισμένη από τον χρήστη δομή δεδομένων gdi_fix
Private Type gdi_fix x As Double ‘κρατάει την οριζόντια θέση της φόρμας y As Double ‘κρατάει την κατακόρυφη θέση της φόρμας u_x As Double ‘ορισμός της τρέχων οριζόντιας ταχύτητας της φόρμας u_y As Double ‘ορισμός της τρέχων κατακόρυφης ταχύτητας της φόρμας max_ux As Double ‘μέγιστη u_x max_uy As Double ‘μέγιστη u_y ct As Double ‘χρήσιμος μετρητής End Type
Private Sub init() ‘αρχικοποίηση δεδομένων
Randomize Timer ‘τυχαίο σημείο αναφοράς για την Rnd()
gdi.u_x = (1 - Rnd() * 2) * Screen.Width / 50 ‘ταχύτητα στον άξονα x
gdi.u_y = (1 - Rnd() * 2) * Screen.Height / 50‘ταχύτητα στον άξονα y
‘το (1 - Rnd() * 2) παίρνει τιμές από -1 έως 1 οπότε το παραπάνω παίρνει ‘τιμές από – ‘Screen.Width / 50 έως Screen.Width / 50
‘ το Screen.Width είναι το μήκος της οθόνης
‘όμοια και για το ύψος
’Η πραγματική ταχύτητα έτσι θα είναι ανεξάρτητη της κατάστασης γραφικών
gdi.max_ux = gdi.u_x ‘αποθήκευση της ταχύτητας στον άξονα Χ ως μέγιστη
gdi.max_uy = gdi.u_y ‘αποθήκευση της ταχύτητας στον άξονα Υ ως μέγιστη
Form1.Left = gdi.x ‘ορισμός της θέσης της φόρμας στον άξονα x (είναι =0)
Form1.Top = gdi.y ‘ορισμός της θέσης της φόρμας στον άξονα y (είναι =0)
End Sub
Private Sub new_position() ‘υπολογισμός νέας θέσης gdi.x = gdi.x + gdi.u_x ‘νέα θέση στον άξονα x gdi.y = gdi.y + gdi.u_y ‘νέα θέση στον άξονα y ‘εάν οι συντεταγμένες της φόρμας είναι εκτός της οθόνης, περιόρισε την If gdi.x < x =" 0:" u_x =" -gdi.u_x If gdi.y < y =" 0:" u_y =" -gdi.u_y If gdi.x + Form1.Width > Screen.Width Then gdi.x = Screen.Width - Form1.Width: gdi.u_x = -gdi.u_x If gdi.y + Form1.Height > Screen.Height Then gdi.y = Screen.Height -Form1.Height:: gdi.u_y = -gdi.u_y ‘τέλος περιορισμών οθόνης ‘εάν οι συντεταγμένες της φόρμας είναι «αρκετά διαφορετικές» από αυτές που ορίζει ‘το πρόγραμμα σημαίνει ότι ο χρήστης έχει «πιάσει» την φόρμα και την εξαναγκάζει ‘να έχει περίπου τις συντεταγμένες του δείκτη του ποντικιού οπότε τερματίζεται οι εφαρμογή If (Form1.Left - gdi.x) > Screen.Width / 5 Then go_end If (Form1.Top - gdi.y) > Screen.Height / 5 Then go_end Form1.Left = gdi.x Form1.Top = gdi.y ‘οι ταχύτητες αλλάζουν κάθε φορά (σύμφωνα με την τιμή του gdi.ct) με τους ‘παρακάτω μαθηματικούς τύπους gdi.u_x = gdi.max_ux * (Sin(gdi.ct) + gdi.u_y = gdi.max_uy * (Cos(gdi.ct) + Sin(gdi.ct / 2) * 2) ‘αλλαγή του gdi.ct σε κάθε κλίση της new_position() gdi.ct = gdi.ct + 0.1 End Sub
Private Sub Form_Load() Call init End Sub
‘καλείτε από την new_position όταν διαπιστωθεί ότι την έχει «πιάσει» ο χρήστης
Private Sub go_end()
MsgBox "Με έπιασες!"
End
End Sub
‘κλήση της new_position από ένα χρονόμετρο (στο πρόγραμμα έχει οριστεί ανά 20 ‘κλάσματα δευτερολέπτου)
Private Sub Timer1_Timer()
Call new_position
End Sub
| Αρχεία συνδεδεμένα με αυτό το άρθρο | |||
| Όνομα αρχείου |
|
| |
| Κατεβάστε το εκτελέσιμο |
|
| |
| Κατεβάστε τον κώδικα |
|
| |

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