J'aime bien aussi les algos de Backtracking pour tout ce qui est résolution...
A ce propos, quelqu'un sait s'il existe une API d'interprétation Prolog en Objective-C ? Ca permettrait de faire des algos de résolution super sympas en peu de lignes, j'ai toujours adoré ce principe
Oui l'alpha beta on s'en ai servi pour faire un jeu de plateau. Enfin c'etait le MinMax, c'est déjà pas mal du tout! Sinon là sur mon graphe j'affiche l'info du noeud et le poid de chaque arc, c'est cool ^^. Je vais essayer d'implementer dijkstra et de mettre dans une autre couleur mes liaisons.
J'essaie d'utilise la méthode -(void)mouseMoved:(NSEvent *)theEvent; pour avoir la position de ma souris sur ma vue mais ca ne marche pas. J'ai ce code tout bete:
Pour utiliser "mouseMoved", il faut que la fenêtre retourne "true" pour "- (BOOL)acceptsMouseMovedEvents" (ce qui n'est pas le comportement par défaut).
Pour l'algorithme min-max, oui... il est plutôt simple celui-ci ; je l'avais re-découvert tout seul y a des années en bossant sur un jeu de morpion 3D (comment ré-inventer la poudre... )... Mais l'alpha-bêta c'est une super optimisation !
Une vue a toujours une fenêtre... Sauf si c'est pour iPhone auquel cas je ne sais pas exactement comment ça fonctionne, mais il doit y avoir un mécanisme équivalent.
Pour info sur iPhone y'a une UIWindow parente forcément dans ton application (et en général unique). Par contre il n'y a pas dans la UIWindow class reference de mention à une méthode équivalente à celle citée pour les mouseMovedEvents... Mais en même temps c'est normal vu qu'il n'y a pas de mouse sur iPhone, mais que des "Touch" (et donc implémenter dans ce cas touchBegan/touchMoved/touchEnded) :P évènements que toute vue bien élevée reçoit du moment que sa propriété allowUserInteraction est à YES.
Après pour Mac je sais pas, je te laisse dans les mains de schlum
In iPhone OS, a touch is the presence or movement of a finger on the screen that is part of a unique multi-touch sequence. For example, a pinch-close gesture has two touches: two fingers on the screen moving toward each other from opposite directions. There are simple single-finger gestures, such as a tap, or a double-tap, or a flick (where the user quickly swipes a finger across the screen). An application might recognize even more complicated gestures; for example, an application might have a custom control in the shape of a dial that users “turn†with multiple fingers to fine-tune some variable.
An event is an object that the system continually sends to an application as fingers touch the screen and move across its surface. The event provides a snapshot of all touches during a multi-touch sequence, most importantly the touches that are new or have changed for a particular view. A multi-touch sequence begins when a finger first touches the screen. Other fingers may subsequently touch the screen, and all fingers may move across the screen. The sequence ends when the last of these fingers is lifted from the screen. An application receives event objects during each phase of any touch.
Touches have both temporal and spatial aspects. The temporal aspect, called a phase, indicates when a touch has just begun, whether it is moving or stationary, and when it ends"that is, when the finger is lifted from the screen (see Figure 3-1). A touch also has the current location in a view or window and the previous location (if any). When a finger touches the screen, the touch is associated with a window and a view and maintains that association throughout the life of the event. If multiple touches arrive at once, they are treated together only if they are associated with the same view. Likewise, if two touches arrive in quick succession, they are treated as a multiple tap only if they are associated with the same view.
In iPhone OS, a UITouch object represents a touch, and a UIEvent object represents an event. An event object contains all touch objects for the current multi-touch sequence and can provide touch objects specific to a view or window (see Figure 3-2). A touch object is persistent for a given finger during a sequence, and UIKit mutates it as it tracks the finger throughout it. The touch attributes that change are the phase of the touch, its location in a view, its previous location, and its timestamp. Event-handling code evaluates these attributes to determine how to respond to the event.
Bon en fait j'ai pas continuer, je mettais mon code au propre et en le commentant toutes les lignes. Mais j'ai pas de variable window définie dans mes classes...
C'est un peu HS mais j'ai pas trop envie de multiplier le post. Je suis tjs sur mon projet de graphe j'aimerai juste mettre un window "textured" quand je le fais et que je compile et que je bouge mes sommets d'arc ma window bouge avec ce qui fait que je ne peux pas bouger mes sommets. Vous savez si on peut désactiver ce déplacement de window ?
Bon en fait j'ai pas continuer, je mettais mon code au propre et en le commentant toutes les lignes. Mais j'ai pas de variable window définie dans mes classes...
Pas besoin de variable outlet "window" en général (sauf quand on l'utilise très souvent, ça peut être pratique !) À partir de n'importe quelle vue, on peut accéder à la fenêtre avec la méthode "window".
Sinon j'ai demandé à mon prof d'info pour placé simplement et judicieusement mes sommets sans pour le moment faire de la topologie. Il m'a conseillé de dessiner un cercle et de placer mes sommets sur son contour tous les 360°/ nbeSommet. Ca me parait être une bonne idée.
Une bonne idée s'il y a peu de sommets, une très mauvaise s'il y en a beaucoup :P (plus il y aura de sommets, plus ils seront localement quasi-alignés)
oui, pour le moment on bosse avec peu de sommet c'est pour ça qu'il m'a conseillé ça. Tenez j'ai mis une petite vidéo pour vous montrer où j'en suis. Je suis assez content de moi.
Et vous savez pourquoi quand je run mon app, dans la console ça affiche pleins de ligne avec : <Error>: CGContextSetCompositeOperation: invalid context <Error>: CGContextFillRects: invalid context etc ... et comment je peux les enlever?
Réponses
Sinon là sur mon graphe j'affiche l'info du noeud et le poid de chaque arc, c'est cool ^^.
Je vais essayer d'implementer dijkstra et de mettre dans une autre couleur mes liaisons.
pour avoir la position de ma souris sur ma vue mais ca ne marche pas. J'ai ce code tout bete:
Je vois pas ce qui cloche ...
Pour l'algorithme min-max, oui... il est plutôt simple celui-ci ; je l'avais re-découvert tout seul y a des années en bossant sur un jeu de morpion 3D (comment ré-inventer la poudre... )... Mais l'alpha-bêta c'est une super optimisation !
Par contre il n'y a pas dans la UIWindow class reference de mention à une méthode équivalente à celle citée pour les mouseMovedEvents... Mais en même temps c'est normal vu qu'il n'y a pas de mouse sur iPhone, mais que des "Touch" (et donc implémenter dans ce cas touchBegan/touchMoved/touchEnded) :P évènements que toute vue bien élevée reçoit du moment que sa propriété allowUserInteraction est à YES.
Après pour Mac je sais pas, je te laisse dans les mains de schlum
Et dans le cas du multi-touch, ça fonctionne comment ?
Les différents "touch" ajoutés se retrouvent dans le NSSet, ainsi que dans le UIEvent (qui est composé de UITouches)
Ca va chi*** ^^
Bon en fait j'ai pas continuer, je mettais mon code au propre et en le commentant toutes les lignes.
Mais j'ai pas de variable window définie dans mes classes...
Pas besoin de variable outlet "window" en général (sauf quand on l'utilise très souvent, ça peut être pratique !)
À partir de n'importe quelle vue, on peut accéder à la fenêtre avec la méthode "window".
Ben suffit de mettre un "- (void)awakeFromNib"
(plus il y aura de sommets, plus ils seront localement quasi-alignés)
Tenez j'ai mis une petite vidéo pour vous montrer où j'en suis. Je suis assez content de moi.
Et vous savez pourquoi quand je run mon app, dans la console ça affiche pleins de ligne avec :
<Error>: CGContextSetCompositeOperation: invalid context
<Error>: CGContextFillRects: invalid context
etc ...
et comment je peux les enlever?
Je voulais savoir si c'était la bonne méthode car j'ai besoin de ce cercle pour placer mes sommets/noeud sur son contour.
Bon le plus dur reste à faire, positionner mes sommets sur ce cercle