Petit jeu à  venir (casse-tête).

ceburoceburo Membre
10:48 modifié dans Vos applications #1
Bonjour (ou bonsoir là ).

Bon alors, nouveau projet à  peine commencé et déjà  embetté.

J'étais en train de réfléchir à  la conception quand je me suis heurté à  un soucis.
J'aimerai faire une petite application façon casse-tête.
Il y aura plusieurs éléments à  l'écran (de forme rectangulaire avec angles arrondis) et chacun des éléments pourra être déplacé (sur un seul axe horizontal ou vertical).

Je me demande comment réaliser tout ça.

A un moment je pensais juste déclarer mes éléments dans mon code puis dans le touchBegan et touchMoved, vérifier si le doigt est posé sur un des éléments. Mais comme le nombre d'éléments peut varier entre les parties, je pense que le code deviendra vite imbuvable  B) .

Alors je ne sais pas trop.

Il faut aussi savoir que les éléments ont une taille variable totalement aléatoire  :fouf):.

Voilà , j'aimerai des conseils si vous avez des idées  :why?:.

Merci par avance.

Réponses

  • DrakenDraken Membre
    10:48 modifié #2
    Utilise une liste pour stocker tes éléments: position et taille.

    Et balaye la liste à  chaque touchBegan, pour voir si cela correspond à  un élément.

    ça marchera avec le même code, quel que soit le nombre d'éléments: 2, 5, 10, ou plus si affinité.




  • Philippe49Philippe49 Membre
    octobre 2009 modifié #3
    En programmation objet, on crée une classe correspondant à  chacun de tes éléments. C'est eux-mêmes qui sauront répondre au touch, en demandant éventuellement des renseignements au contrôleur général de l'application.

    @interface MyUIElement : UIView&nbsp; {&nbsp; &nbsp; // ou UIImageView, UIButton, ..<br />&nbsp; &nbsp;  NSInteger shape;&nbsp; &nbsp; // Valeur d&#39;une énumération correspondant à  la forme de ton élément <br />&nbsp; &nbsp;  .... autres éléments géométriques<br />&nbsp; &nbsp;  ModelController * modelController; // référence au contrôleur général<br />&nbsp; &nbsp;  ....<br />}<br />@property ... modelController;<br />...<br />@end<br /><br />@implementation MyUIElement<br /><br />- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {<br />&nbsp; &nbsp;  CGPoint newPosition=[self.modelController newPositionForElement:self];<br />&nbsp; &nbsp;  .....<br />}<br />
    



    @interface ModelController : NSObject&nbsp; {&nbsp; &nbsp; // ou UIVIewController ?<br />&nbsp; &nbsp;  NSMutableArray * uiElements;&nbsp; &nbsp; // Le model&nbsp; &nbsp; // ou NSMutableSet<br />}<br />-(CGPoint) newPositionForElement:(MyUIElement*) uiElement;<br />@end
    

  • ceburoceburo Membre
    10:48 modifié #4
    Salut,

    alors je comprends bien ton code Philippe mais j'ai une petite question sur la partie NSInteger shape.
    Les différents "shape" devront être déclaré dans le modelController ? Enfin, mo, c'est comme ça que je le comprend.

    Tu me le confirmes ?

    Toutes façons, je n'utiliserai que des rectangles arrondis donc le NSInteger n'est peut-être même pas nécessaire.
Connectez-vous ou Inscrivez-vous pour répondre.