[Projet] Casse briques
mylon
Membre
Bonjour à tous,
J'ai comme projet la création d'une application de Casse briques sur iPhone. Les rebondissements de la balle ainsi que la gestion de la raquette sont terminés. Là ou je rencontre un problème c'est pour création des différentes briques. En effet, il va falloir créer n briques (n étant variable en fonction du niveau) a partir du code. Cependant il faut tout de même que je garde un pointeur vers ces objets pour pouvoir les supprimer lorsque la balle va les toucher. Savez-vous comment créer n objets (objet1, objet2, ..., objetn) ? Je penses stocker les pointeurs vers ces objets dans un NSArray.
Si vous avez une petite idée merci de bien vouloir m'aider.
PS : Je suis nouveau sur PommeDev, j'espère avoir respecté toutes les règles.
J'ai comme projet la création d'une application de Casse briques sur iPhone. Les rebondissements de la balle ainsi que la gestion de la raquette sont terminés. Là ou je rencontre un problème c'est pour création des différentes briques. En effet, il va falloir créer n briques (n étant variable en fonction du niveau) a partir du code. Cependant il faut tout de même que je garde un pointeur vers ces objets pour pouvoir les supprimer lorsque la balle va les toucher. Savez-vous comment créer n objets (objet1, objet2, ..., objetn) ? Je penses stocker les pointeurs vers ces objets dans un NSArray.
Si vous avez une petite idée merci de bien vouloir m'aider.
PS : Je suis nouveau sur PommeDev, j'espère avoir respecté toutes les règles.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il est d'usage pour un nouveau venu de se présenter dans cette section : http://pommedev.mediabox.fr/presentation-des-membres/. Et de proclamer son allégeance à l'ordre ancestrale du Perrier Citron.
En ce qui concerne la position des briques je penses les stocker dans un .plist, ce sera plus simple pour ajouter d'autres niveaux et pour améliorer le jeux dans les versions suivantes.
Ensuite un array c'est vite parcouru, et puis ne t'inquiète pas l'iPhone sait gérer avec fluidité des logiciels très gourmands en calcul. Regarde les jeux 3D.
Les fichiers PLIST existent en plusieurs formats, dont ASCII, XML et Binaire. Le format le plus répandu est le XML.
Donc en pratique bien souvent les PLIST ne sont que des fichiers XML (qui respectent une DTD bien précise, comme tous les formats basés sur XML)
Sauf que pour les fichiers PLIST tu as des méthodes en Cocoa permettant de sérialiser et désérialiser un PLIST très simplement. Un peu comme une NSArchive. En une ligne de code, tu transformes par exemple un NSArray de NSDictionary plein de données en un fichier PLIST, et vice-versa.
Alors qu'avec le XML, tu n'as avec les classes Cocoa que du parsing SAX (donc événementiel) de disponible. Et en plus tu devras implémenter tout ce qu'il faut pour faire la transformation de tes noeuds XML en tes objets modèles.
Pas la peine de tester l'état de la balle 100 fois par seconde. La fréquence de rafraichissement de l'écran iPhone est de 60 Hz. Et on obtient une belle animation fluide avec seulement 30 images/s.
Me revoilà avec mon casse briques. J'ai pas mal avancé au niveau de l'interface, je vais maintenant m'attaquer plus précisément au jeu en lui même. Je voulais vous poser une question. J'ai créé une classe Brique qui me permet de stocker toutes les infos et les actions concernant une brique. J'aimerais savoir si dans un fichier .plist, je peux stocker un Array de Briques ou est-ce qu'on ne peut stocker que les types prédéfinis (String, Int...).
Dans un PLIST, on ne peut mettre que des PLIST-Objects (NSArray, NSDictionary, NSDate, NSData, NSString, NSNumber, je crois pas en oublier mais tout est écrit dans la doc en cas de doute).
Si tu veux stocker d'autres types de données, le mieux est plutôt de faire une NSArchive.
Documentation Apple sur les archives et la sérialisation de données dans des fichiers
A noter que NSData permet justement de prendre en compte des objets d'autres natures, l'exemple classique étant celui de NSColor que l'on enregistre dans un fichier préférences. Mais on en revient effectivement à utiliser NSArchiver.
Mais je te rejoins sur le faite que quand on a une classe modèle autant implémenter NSArchiver dedans pour faire les choses proprement.
Me voici devant un nouveau problème. Savez-vous, si cela est possible, comment passer des paramètres entre deux ViewControllers ?
J'arriver a changer de ViewController sans problème, mais pour passer des information au nouveau ViewController c'est autre chose...
Allez, je suis sympa je te mets le lien!
Toujours dans mon projet d'application qui avance tout doucement, je cherches à modifier l'image d'un UIButton. En fait j'ai un bouton par niveau et chaque bouton affiche 0, 1, 2 ou 3 étoiles en fonctions de l'avancement (un peu à la manière d'angry birds). Le problème est que je n'arrive pas à changer cette image (même en faisant des test très simple)...
exemple : [niveau1 setImage:[UIImage imageNamed:@niveau_2.png] forState:UIControlStateNormal];
ceci ne fonctionne pas.
Cela peut paraitre tout simple mais en cherchant sur le net j'ai l'impressions que pas mal de gens ont ce problème.