Εφαρμογή Κορώνα-Γράμματα (CoinFlip) σε AppInventor
A. Δημιουργία εφαρμογής
Να δημιουργήσετε μια εφαρμογή με τίτλο Project CoinFlip που θα προσομοιώνει
το στρίψιμο ενός κέρματος (κορώνα ή γράμματα).
- Το παιχνίδι θα αποτελείται από ένα κουμπί που θα δείχνει αρχικά τη μια πλευρά του νομίσματος.
- Όταν ο χρήστης αγγίξει στο κουμπί – νόμισμα θα αναπαράγεται ο ήχος ρίψης του νομίσματος και θα επιλέγεται με τυχαίο τρόπο η νέα του εικόνα (η εικόνα της κορώνας ή η εικόνα των γραμμάτων).
- Τα αρχεία εικόνων και ήχου που θα χρειαστείτε για την εφαρμογή μπορείτε να τα κατεβάσετε από εδώ
- Η εμφάνιση της εφαρμογής θα είναι περίπου όπως η εικόνα στα δεξιά
B. Δημιουργία εφέ κίνησης (animation) στο νόμισμα που γυρίζει
Για να προσθέσουμε ένα εφέ κίνησης που θα δείχνει το νόμισμα να γυρίζει χρειάζεται να
προσθέσουμε δύο αντικείμενα clock (ρολόι) στην εφαρμογή μας (από το Pallete → Sensors
→ Clock).
- Το πρώτο ρολόι το ονομάζουμε DelayClock και αφορά το συνολικό χρόνο που θα γίνεται το animation (Properties: TimerEnabled: OXI, TimerInterval: 1000, για χρόνο 1 sec)
- Το δεύτερο ρολόι το ονομάζουμε AnimationClock και αφορά το χρόνο που θα αλλάζει η εικόνα από κορώνα σε γράμματα και το ανάποδο (Properties: TimerEnabled: OXI, TimerInterval: 50, για χρόνο 0.05 sec)
- Όταν πατηθεί το κουμπί, θα πρέπει να ενεργοποιούνται τα δύο ρολόγια (set AnimationClock.TimerEnabled to true και set DelayClock.TimerEnabled to true)
- Όταν ενεργοποιηθεί ο DelayClock Timer (when DelayClock.Timer) τότε σημαίνει πως πέρασε το 1 sec και θα πρέπει στο κουμπί να μπει η τυχαία εικόνα της μιας πλευράς του νομίσματος. Προσοχή, τις εντολές για να μπει τυχαία η εικόνα τις έχουμε ήδη στο when Button1.Click και θα πρέπει να τις μεταφέρουμε από εκεί.
- Αρχικά θα δημιουργήσουμε γενικά μία μεταβλητή (variable) με όνομα face (στα Blocks → Built-in → Variables → initialize global face to ). Προσοχή: όχι μέσα σε κάποιο υπάρχον block καθώς αφορά μια γενική μεταβλητή για όλο το πρόγραμμά μας
- Σε αυτή τη μεταβλητή face θα βάλουμε την τιμή true. (Από τα Blocks → Built-in → Logic). Αυτό θα σημαίνει πως θα βλέπουμε την εικόνα 1.png
- Δημιουργούμε ένα νέο block when AnimationClock.Timer do
- Μέσα σε αυτό το block προσθέτουμε από το Blocks → Built-in → Control ένα block if then. Πατώντας πάνω στο γρανάζι του if then επιλέγουμε το else και το μεταφέρουμε μέσα στο δεξιά then, ώστε το block μας να γίνει της μορφής if ____ then _____ else ____. Αυτό το block ελέγχει ότι βάλουμε στο if και αν ισχύει εκτελούνται οι εντολές μέσα στο then, αλλιώς εκτελούνται οι εντολές μέσα στο else
- Δίπλα στο if τοποθετούμε από το Blocks → Built-in → Variables ένα get το οποίο ρυθμίζουμε ώστε να έχει τη μορφή get global face
- Οι εντολές μέσα στο then θα εκτελεστούν όταν το face είναι true. Σε αυτήν την περίπτωση θα πρέπει να ορίσουμε η εικόνα του κουμπιού να γίνει η 2.png και στη συνέχεια η μεταβλητή face να γίνει false (Παίρνουμε ένα set από το Blocks → Built-in → Variables και το ρυθμίζουμε να γίνει set global face to βάζοντας δίπλα του ένα block false που θα το βρούμε στο Blocks → Built-in → Logic
- Οι εντολές μέσα στο else θα εκτελεστούν όταν το face είναι false. Σε αυτήν την περίπτωση θα πρέπει να ορίσουμε η εικόνα του κουμπιού να γίνει η 1.png και στη συνέχεια η μεταβλητή face να γίνει true.
×