Πιάστε την φόρμα! ( για αρχάριους προγραμματιστές)

Ένα διασκεδαστικό παιχνίδι που προτρέπει έναν αρχάριο προγραμματιστή να ξεκινήσει τον προγραμματισμό.


Τι κάνει το προγραμματάκι ; Είναι μια φόρμα που κινείται «ακαθόριστα» σε όλη την εικόνα του υπολογιστή σας, μέχρι να την πιάσετε καλά!

Κώδικας σε 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

Dim gdi As gdi_fix ‘δήλωση μεταβλητής, δομής δεδομένων (προς χρήση)

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) + Cos(gdi.ct / 4) * 1)

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




Αρχεία συνδεδεμένα με αυτό το άρθρο
Όνομα αρχείου

Κατεβάστε αυτό το αρχείο Catch the form
Κατεβάστε το εκτελέσιμο


Κατεβάστε αυτό το αρχείο Catch the form
Κατεβάστε τον κώδικα


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

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