Accueil > Forum > > > > Programmation événementielle
Programmation événementielle
vendredi 27 juin 2008 à 19:24:15 |
Programmation événementielle

Kite37
|
Bonjour !
Je suis actuellement en train de développer un petit jeu fonctionnant via socket en mode asynchrone, et afin de gagner en automatisme tout en gardant une classe de moteur de connexion réutilisable je m'intéresse à la création d'événements.
Quelques petites questions me sont venues alors à l'esprit :
- le application.doevents agit-il aussi pour les événements personnalisés?
- une fonction/sub qui envoie un événement via raiseEvent attend-elle la fin de la sub de gestion de l'événement pour se terminer/continuer?
Le dernier point est celui qui m'intéresse le plus : en effet, la sub que je cherche à démarrer par événement est la boucle globale du jeu, lorsque le client se connecte au joueur serveur, et cela serait génant si l'application se mettait a freezer ...
Voilà, en attente de vos réponses, merci d'avance !
Cordialement, KiTe
ps : je posterais par la suite sur ce post les problèmes rencontrés, afin d'éviter de créer 50 sujets .. on ne sait jamais ^ ^
|
|
vendredi 27 juin 2008 à 19:49:12 |
Re : Programmation événementielle

PCPT
|
salut, - le application.doevents(...)oui - une fonction/sub qui envoie un événement(...)oui. plus précisément c'est pas qu'elle "attend", c'est que ce n'est juste plus son tour ^^ - la sub que je cherche à démarrer (...)oh çà sent mauvais çà ^^ tu ne devras pas démarrer une sub qui va tourner en boucle une sub va déclencher la connexion, tu va traiter une suite logique (identification, validation etc..) jusqu'à arriver au traitement dans le _DataArrival (ou équivalent en dotnet...) surtout pas de boucle qui ne s'interrompt que par la fermeture!! par contre tu dis au départ jeu fonctionnant via socket en mode asynchrone, ummm çà veut dire que le joueur 2 peu jouer avant la réponse qu'il attend? plusieurs threads? pour un jeu à mon avis il faut que çà soit une connexion synchrone... ++ Prenez un instant pour répondre à ce sondage svp 
|
|
vendredi 27 juin 2008 à 20:20:07 |
Re : Programmation événementielle

Kite37
|
Merci pour tes réponses =)
Le jeu est synchrone, seul le mode de connexion et de réception des données ne l'est pas.
Et bien oui, une boucle ça pue, je l'ai remarqué il y a bien longtemps déjà, mais je n'arrive pas a m'en séparer..
En effet, voici le fonctionnement globale de mon jeu, un jeu de carte type tetra master, (version J vs IA) :
Lorsqu'un des joueurs joue, passe son tour ou se défausse de sa main, j'appelle une fonction de vérification globale, qui gère les informations affichées dans l'interface de jeu (points de vie, points d'action pour jouer des cartes, cartes sur le plateau, etc) et qui fait jouer l'IA si besoin. Ici est de problème.
En effet, si l'IA joue, alors la fonction de vérification est de nouveau appelée, sans qu'elle ne se soit terminée précédement... La fonction de vérification peut alors etre appelée 2,3 de manière récurrente.
De même, si je fais une fonction de vérification de l'IA séparée de la vrification globale.
Ce problème était réglé dans le fait de faire une boucle globale, ne s'achévant qu'à la fin de la partie (et non fermeture du programme) :
Public Shared Sub BoucleGlobale() While _gameOver = False If Not _gameType = TypeGame.Remote And _playerTour = PlayerType.Adversaire Then IAVerif() End If Application.DoEvents() verif() Application.DoEvents() End While ClearGame() End Sub 'BoucleGlobale
Dans ce cas ci, vérfi et IAverif sont totalement indépendantes, donc plus de récurrences, plus de problèmes ... Je pense que si j'arrive a régler ça, alors les problèmes liés au socket se régleront aisément.
J'ai bien réussi a régler le problème version bidouille, mais je n'aime pas ça ... (un jeu de variable booléenne, c'est bof =/ )
Voilà, si il y a des idées.. Cordialement, KiTe
|
|
vendredi 27 juin 2008 à 20:49:51 |
Re : Programmation événementielle

PCPT
|
des idées, peut-être sur le principe oui (attention, à traduire mentalement de vb6 vers dotnet ^^) J vs IA, ou J vs J, exactement pareil le principe réside dans "où j'en suis", à savoir "à quelle étape du jeu" en gros on a quoi.... [***] *ouverture appli *connexion (vers serveur, ou écoute pour attente client, ou appel de l'IA) *début de partie, init tout à 0 + "qui est le premier à jouer" et à partir de ce premier coup, il n'y a plus d'étape. donc tu n'as rien à attendre **jusqu'à -> victoire/défaite/null çà s'arrêtera comment alors? [---] *je (serveur) déconnecte (je fais 'quitter', ou 'recommencer', déco adsl naturelle, ou je prends un tournevis pour démonter mon modem sans raison ^^) *idem pour mon adversaire (client) si J vs J *coupure de courant chez l'un ou l'autre (çà reste toujours du même ordre = erreur à gérer) *je perds la partie *je gagne la partie *selon le jeu on est dans une impasse, bloqués qui impliquera un match NULL un peu plus concrêtement çà PEUT donner une sorte d'enum selon ce qu'on vient de dire, et arrivé à l'avant dernière étape, tu reçois juste les data à analser, et donc fais tes calculs (score, bouger des pièces, etc...) uniquement là (donc si mStep = GameRunning dans le _DataArrival) + gestion déco etc...., + perdant gagnant qu'en dis-tu? (pas super facile à expliquer à l'écrit....) Prenez un instant pour répondre à ce sondage svp 
|
|
vendredi 27 juin 2008 à 21:14:53 |
Re : Programmation événementielle

Kite37
|
J'ai exactement ça : en gros on a quoi.... [...] **jusqu'à -> victoire/défaite/null
Et tout les cas d'arrêt de jeu que tu énonces sont gérés (plantage de la connexion entre client et serveur, ou fin de partie)
Pour ce qui est du traitement des données je fais comme ça :
-cas JvJ remote : on reçoit les datas par socket, on les analyse dans une fonction prévues pour, et en fonction de ce qu'on reçoit on agit (pose de carte, perte de PV, etc), mais le tout en MEMOIRE Puis une fonction de vérification est appelée, et transcrit tout ce qui est en mémloire (Pv, etc) dans l'interface visuelle. Seules les cartes sont posées directement a l'analyse des datas.
coté J v IA, c'est en gros la même chose, sauf que ya pas de socket.
Donc a lire tes conseil, la structure globale du jeu est bien respectée, reste juste a virer cest sub de vérification et a inclure les modification visuelle directement dans les fonction d'analyse... Cependant le problème de récurrence reste le même, il faut bien faire jouer l'IA, qui ré-appelle ces sub d'analyse avant leur fin =S
Où que je regarde, ce pb de récurrence reste, je vais essayer de faire avec, en bidouillant un peu et en réfléchissant a comment limiter cela.. Ca restera tjrs plus économique qu'une boucle barbare..
|
|
vendredi 27 juin 2008 à 22:12:34 |
Re : Programmation événementielle

PCPT
|
du peu que j'ai lu en dotnet et de "comment je ferais en vb6", tu ne peux pas plutôt gérer dans ton appli un objet USER (donc forcément 2) régit soit par une data venant d'une IA, soit de certaines touches d'un clavier, soit d'un socket? c'est dans ce sens que j'entendais " J vs IA, ou J vs J, exactement pareil" tu as tes 2 SEULS users, avec leurs évènements "identiques" mais respectifs, qui renvoient leurs actions à ton appli. actions elles régient soit par ton fonctionnement IA, soit par pression clavier, soit par réception de data enfin çà me semble le plus propre..., je ne vois pas quel intérêt ton appli peut avoir à différencier "de quoi ou comment ou d'où" les data arrivent... Prenez un instant pour répondre à ce sondage svp 
|
|
Cette discussion est classée dans : programmation, jeu, événement, intéresse, événementielle
Répondre à ce message
Sujets en rapport avec ce message
Access, problème d'enregistrement en programmation [ par DarkSchneider ]
Bonjour, le problème qui se pose est le suivant :On m'a dit qu'il était possible d'enregistrer un jeu d'enregistrement sans qu'il y est au préalable d
Jeu de carte multijoueur en ligne [ par zaptfire ]
Bonjour, Je souhaite monter un projet de jeu de carte multijoueur via le net réference : http://www.urban-rivals.com (avec un autre systeme de jeu) j
Programmation événement click dasn un état [ par Pagodvd ]
Bonjour,j'ai créer une requte par sql, ensuite j'aimerais créer un état en découlant, par programmation,maintenant on voit que l'état pour afficher le
Rien à voir avec la programmation !! [ par Kristof_Koder ]
Si comme moi vous adorez coder en musique, allez-donc faire un tour sur http://www.deezer.com ! C'est gratuit, légal, et il y a des dizaines de milli
Problème KeyDown [ par turchi ]
Bonjour à tous, Je vais essayer d'être le plus possible possible : j'essaie de créer un controle en VB 2005 Express. ma classe hérite donc de "Syste
détéction d'événement windows [ par sephiroth27 ]
bonjour a tous,voila je cherche le moyen via les événements windows ou autre, une solution pour que mon programme lance une instruction (controle d'in
Connaitre la couleur d'un pixel [ par Razor_rws1 ]
Salut, ça fais 3 fois que je pose la même question mais sans succès. Pourtant, il me semble que la question ne sois pas si compliqué. J'imagine que je
API [ par gokudo ]
j'ai besoin d'un tutorial detaillé sur les API, je commance en programmation 32bit et j'aimerai bien avoir le max d'information si qq'1 a un site ou j
débuter jeu de l'oie ou bonne paye [ par e1huet ]
Je suis débutant en vba et je dois développer un jeu sur le principe d'un jeu de plateau (jeu de l'oie, bonne paye) mais je ne sais vraiment pas comm
jeu de domino [ par Truande ]
Salut,je suis sur un projet sur les jeu de domino en c sur linux.Je susi étudiante en master science cogntive mais j'ai de grosses difficultés en c.L
Livres en rapport
|
Derniers Blogs
[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc
Forum
RE : VITESSERE : VITESSE par ossama261988
Cliquez pour lire la suite par ossama261988
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|