Αύγουστος 2008 - Posts
Στίς δύο προηγούμενες δημοσιεύσεις μου εδειξα 2 πολυ απλά και μικρά projects με κανα δυο ενδιαφέρον σημεία.Στο feedback όμως κατάλαβα πως έπρεπε να δώσω λίγο μεγαλύτερη προσοχή στο UI(User Interface) των εφαρμογών.Σε πρώτη φάση έβαλα εικόνες στο Black Jack (όπως πολύ σωστά είχε παρατηρήσει ο Tristanos!).Ύστερα σουλούπωσα λιγο τον κώδικα του τηλεφωνικού κατάλογου και τον έκανα λιγο πιο φιλικο προς τον χρήστη(μιάς και αυτό ήταν ενα απο τα παράπονα που δέχτηκα :( )..
Ενδιαφέροντα σημεία ειναι το πώς επικοινωνούν οι φόρμες στον τηλεφωνικό κατάλογο( πχ με read-only properties, constructors κλπ).Μετά απο τα δύο αυτά "upgrades" βγήκα κερδισμένος με την έννοια οτι κατάλαβα για τα καλά πως και τα παράθυρα ειναι κι αυτά κλάσεις.Ξέρω σας ακούγεται χαζό, αλλά παλιότερα θα δισταζα να χρησιμοποιήσω μια φόρμα που στον constructor της θα δέχεται μια λίστα με κλάσεις και μια ακόμα κλάση(ειναι η φόρμα που δείχνει τα αποτελέσματα της αναζήτησης, η κλάση ειναι όλες οι επαφές μαζεμένες και η λίστα είναι μια λίστα με όλες τις επαφές που προκύπτουν από την αναζήτηση.Οπότε στο listbox της φόρμας εμφανιζεται η λίστα εκείνη ;) ).
Ακόμη αξίζουν προσοχής τα 2 animation των εφαρμογών(μήν τρομάξετε, 5 γραμμες κώδικας ειναι ;) ).Στο Black Jack οι κάρτες που τραβάει ο χρήστης ξεδιπλώνονται (αντι απλά να εμφανίζονται) και στον τηλεφωνικο κατάλογο όταν πατήσει ο χρήστης το κουμπί Find contact γίνονται Hidden τα 2 grids και το listbox και ξετυλιγετε ένα άλλο grid (που πρίν ήτανε hidden ;) )που περιέχει τα control για την αναζήτηση επαφης/ων με συγκεκριμένο χαρακτηριστικό.
Το επόμενο βήμα της εφαρμογης του τηλεφωνικού καταλόγου είναι να ειδοποιει των χρήστη όταν πλησιάζουν τα γενέθλια κάποιας επαφής του.
Μερικά screenshots
P.S.1 Ένα ευχαριστώ στην anima animus που μου έστειλε link με όλα τα τραπουλόχαρτα με το που είδε το ποτ του Tristanos :D(τις οποίες και έβαλα στο project ;) )
P.S.2 Μόλις είδα πως μόνο ένα αρχείο μπορώ να ανεβάσω :S
(άν κάποιος θέλει να ρίξει μια ματιά και στο Black Jack ας μου το πεί)
Δέν είχα τί να κάνω και ειπα να χαρτοπαίξω λιγο :$..Λοιπόν έγραψα ενα ακρετά απλό projectακι που προσωμιώνει ενα παιχνίδι Black Jack.Είναι απλό.Όταν τρέξει, ποντάρεις Credits, τραβάς κάρτες και όταν θες σταματάς πατώντας End.
To solution ειναι αρκετα απλό και αξίζει να δεί κανείς το """"κολπάκι"""" για την αναπαρασταση των καρτών ;).Επίσης εχει πλάκα το πώς θα αποφασήσει ο υπολογιστής αν θα κάνει τον ασο ενα η έντεκα :)
/*επειδη καποιοι πονηροι μπορει πρωτα να τραβουσαν και αμα δεν τους αρεσε το τραβηγμα να κατεβαζαν το πονταρισμα εκανα το κουμπάκι που ποντάρεις να εξαφανίζεται μόλις τραβήξεις :P*/

Τις τελευταίες μέρες ασχολήθηκα με ένα μικρό project οπου θα προσφέρει έναν τηλεφωνικό κατάλογο μαζί με κάποιες στοιχειώδες υπηρεσίες (οπως πχ επεξεργασία, διαγραφή κλπ), που θα αποθήκευε όμως τις επαφές σε ένα XML αρχείο.Μπορώντας εύκολα να μεταφερθεί και να διαβαστεί.Όλη η διαδικασία του να μετατρέψεις μια κλάση σε ένα XML αρχείο λέγεται XMl Serialization.
Ο κύριος σκοπός του XML serialization στο .ΝΕΤ Framework ειναι να ενεργοποιήσει την επικοινωνία XMl αρχείων και ρευμάτων σε common language runtime αντικείμενα και το αντίστροφο.Αυτή η διαδικασία επιτρέπει την μετατροπή XMl αρχείων σε μια μορφή που είναι ευκολότερο να επεξεργαστούν χρησιμοποιώντας συμβατικές γλώσσες προγραμματισμού.Στην συγγεκριμένη εφαρμογή φάνηκε ιδιαίτερα χρήσιμο κατά την φόρτωση των αποθηκευμένων επαφών καθώς και την αποθήκευση τους.Έτσι, απλά μεταφέροντας το contacts.xml αρχείο στον κατάλογο που εκτελείται το πρόγραμμα θα μπορείτε να φορτώσετε τις επαφές καθώς και να τις επεξεργαστείτε.
Όταν ξεκινήσει η εφαρμογή θα δείτε αυτό το παράθυρο
Για να φορτώσετε ήδη υπάρχουσες επαφές πατήστε το κουμπί Load
Άν δέν βρεί το contacts.xml αρχείο θα σας γκρινιάξει λίγο :P
Για να αποθηκεύσετε μία επαφή απλά βάλτε τα στοιχεία της στα αντίστοιχα πεδία και πατήστε Store.Για να αλλάξετε κάτι σε μία ήδη υπάρχουσα επαφή, απλά γράψτε στο αντίστοιχο πεδίο την αλλαγή, επιλέξτε την στο listbox και πατήστε Edit.Για να κάνετε τις επαφές ένα ωραίο XMl πατήστε Save :)
Ο κώδικας περιέχει σχόλια όπου χρειάζεται οπότε μην διστάσετε να του ρίξετε μια ματιά ;)
/*Πέρα απο τα σημεία του Serialize/Deserialize αξίζει να δείτε τις λειτουργίες του listbox το οποίο μου φάνηκε αρκετά χρήσιμο,
όπως και το οτι η κλάση PhoneRecord υλοποιεί το IComparable<PhoneRecord> interface ωστε να μπορεί να γίνει το σορτάρισμα στην λιστα ;)*/