Sunday, August 9, 2009

iPhone Coding Part1

Από καιρό είχα σκοπό τη δημιουργία ενός παιχνιδιού καθαρά για να γνωρίσω το μαγικό κόσμο του iPhone. Μπορεί να μην είχα το τηλέφωνο αλλά είχα κατεβάσει το Xcode μαζί με το SDK και ότι PDF χρειαζόμουν από το Apple Developer Connection. Μετά από μερικές μέρες μόρφωσης και παραμόρφωσης μπροστά στον PDF Viewer αποφάσισα ότι το πρώτο project θα έπρεπε να είναι ένα απλό retroπαιχνίδι τύπου Deflector.

Ο σκοπός του παιχνιδιού είναι να κατευθύνει ο παίχτης μια ακτίνα με τη βοήθεια κάποιων καθρεπτών στους οποίους ανακλάται. Διάφορα εμπόδια εμποδίζουν την ακτίνα να βρει το στόχο της, κάποιο πρίσμα που την σπάει σε δύο άλλες με διαφορετικά ίσως χρώματα, κάποιος τηλεμεταφορέας που τη μεταφέρει αλλού κ.α
Το πρώτο πράγμα που έκανα ήταν να στήσω ένα svn ώστε να μη χάσω τη μπάλα. Η διαδικασία πολύ απλή, για όσους δυσκολεύονται υπάρχουν μερικές χιλιάδες sites στο internet που τα λένε καλύτερα από μένα.

Το Project που επέλεξα στον αρχικό wizard στο Xcode ήταν το πιο απλό, αφού δε χρησιμοποιούμε πρακτικά τίποτα από αυτά που μας προσφέρει εκεί. Εμείς ένα παραθυράκι χρειαζόμαστε.

Ένα παιχνίδι χρειάζεται γραφικά τα οποία για μένα είναι ο μεγαλύτερος πονοκέφαλος.
Ξεκίνησα να φτιάχνω με το gimp και άλλα προγράμματα μερικά PNGs και φυσικά μιας και είμαι εντελώς άχρηστος σε οτιδήποτε έχει να κάνει με γραφιστικά, επόμενο ήταν και το αποτέλεσμα να είναι χάλια αλλά δε πτοούμαστε συνεχίζουμε. Στο κάτω-κάτω αν σκοπεύετε να φτιάξετε κάποιο παιχνίδι και να το ανεβάσετε στο appstore θα έχετε και γραφικά κάποιου επιπέδου, αλλιώς “που πα ρε Καραμήτρο?”


Μετά έφτιαξα τη δομή των groups κάτω από το resources node του Xcode. Για την ακρίβεια πρόσθεσα ένα Gfx και μέσα σε αυτό TileBackgrounds και Spites.

Νομίζω ότι είναι ευνόητο το πιο πάει που.
Επίσης τα κόκκινα που βλέπετε είναι η διαφορά του repository με το filesystem.
Περισσότερα για αυτό αργότερα.
Αφού με το καλό ξεπεράσουμε αυτό το μαρτύριο, βάσανο που λέγεται γραφιστική τέχνη πάμε ντουγρού στο ζουμί της υπόθεσης.
Delegates
Ωραίο πράγμα οι delegatoκλασες. Φανταστείτε ότι είναι βοηθητικά αντικείμενα, υπάρχουν εκεί για να κάνουν τη ζωή μας πιο εύκολη. Στο μικρό αυτό projectάκι θα τις χρησιμοποιήσουμε 2-3 φορές. Τουλάχιστον μια φορά είμαστε όλοι υποχρεωμένοι να τις χρησιμοποιήσουμε και αυτή είναι στο app delegate του κάθε προγράμματος μας.
Ας δούμε όμως τι είναι αυτό.
Η Objective C όπως και όλες οι C έχει μια main ρουτινούλα που είναι το entry point της εφαρμογής. Και εδώ έχουμε κάτι τέτοιο απλά δε χρειάζεται να το πειράξουμε. Εμείς σαν entry point σαν main δηλαδή θα έχουμε το app delegate που μας έχει φτιάξει το Xcode και έχει δώσει το όνομα της εφαρμογής μας.
Αν το πρόγραμμα το ονομάσατε deflector όπως εγώ τότε η delicateόκλαση θα λέγεται DeflectorAppDelegate και θα τη βρείτε μέσα στο classes group σε δύο αρχεία (header, body).
Το Xcode προσπαθεί να μας δομήσει λίγο τον κώδικα μας σε header files καλό είναι να ακολουθούμε αυτά τα πρότυπα. Θα μπορούσαμε να τα βάζαμε όλα σε ένα αρχείο και να μην κάναμε include τίποτα αλλά έτσι θα γράφατε χειρότερα....και από μένα!
ΚΑΙ ΚΑΝΕΝΑΣ ΔΕ ΘΑ ΜΟΥ ΠΑΡΕΙ ΤΗ ΔΟΞΑ!

0 σχόλια:

Post a Comment