[JAVA] RMI boutons d events
Fermé
mattpeach
Messages postés
53
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
16 novembre 2008
-
27 juin 2008 à 19:25
mattpeach Messages postés 53 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 16 novembre 2008 - 27 juin 2008 à 20:49
mattpeach Messages postés 53 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 16 novembre 2008 - 27 juin 2008 à 20:49
Bonjour,
Je dois utiliser le RMI, dans le cadre d un projet, pour saisir depuis le clavier d un ordinateur distant, des evenements (appuis sur touche du clavier).
Je n ai trouve des exemples de RMI qui n utilisent que une execution de fonction (du type calcul de pi ou HelloWorld), mais pas qui permettraient de faire ce genre de chose.
Si quelqu un sait comment faire ou possede un lien , son aide est la bienvenue
Merci
Je dois utiliser le RMI, dans le cadre d un projet, pour saisir depuis le clavier d un ordinateur distant, des evenements (appuis sur touche du clavier).
Je n ai trouve des exemples de RMI qui n utilisent que une execution de fonction (du type calcul de pi ou HelloWorld), mais pas qui permettraient de faire ce genre de chose.
Si quelqu un sait comment faire ou possede un lien , son aide est la bienvenue
Merci
A voir également:
- [JAVA] RMI boutons d events
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
- Java runtime environment - Télécharger - Langages
2 réponses
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
27 juin 2008 à 20:44
27 juin 2008 à 20:44
Hum.
Clarifions un peu les choses:
Nous avons l'ordi A (A Contrôler) et l'ordi C (Controlleur) [erf, pour les notations sagement choisies :))]
Sur A, tu as le GUI (ou l'IHM), avec affichage du jeu; tu as également un service RMI. Sur la machine C, tu as ton prog de contrôle à distance: ceci peut également être un GUI avec ton KeyPressed ou une simple appli ligne de commande genre (soyons créatifs!):
Du coup, je ne vois pas du tout où tu bloques. A chaque KeyPressed (si GUI) ou chaque commande (LEFT, FIRE, ... ci-dessus), un appel RMI est envoyé par C à A; la réponse de A peut être complexe (genre un java.util.List d'objets sérialisés) et C interprète ces informations ainsi que les éventuelles exceptions levées par A.
Est-ce que ceci est suffisant pour te mettre sur la piste?
++
Clarifions un peu les choses:
Nous avons l'ordi A (A Contrôler) et l'ordi C (Controlleur) [erf, pour les notations sagement choisies :))]
Sur A, tu as le GUI (ou l'IHM), avec affichage du jeu; tu as également un service RMI. Sur la machine C, tu as ton prog de contrôle à distance: ceci peut également être un GUI avec ton KeyPressed ou une simple appli ligne de commande genre (soyons créatifs!):
c:\Enter command LEFT c:\Ket event left sent to remote machine. Little guy should move two inches to the left *but* not enough space. Only 1.5 inches motion done. What's next? c:\Enter command FIRE c:\Little guy fired & killed one hundred bad guys. What's next? ...
Du coup, je ne vois pas du tout où tu bloques. A chaque KeyPressed (si GUI) ou chaque commande (LEFT, FIRE, ... ci-dessus), un appel RMI est envoyé par C à A; la réponse de A peut être complexe (genre un java.util.List d'objets sérialisés) et C interprète ces informations ainsi que les éventuelles exceptions levées par A.
Est-ce que ceci est suffisant pour te mettre sur la piste?
++
sandul
Messages postés
3927
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
723
27 juin 2008 à 20:02
27 juin 2008 à 20:02
Salut,
Est-ce que tu pourrais détailler, s'il te plaît? Je n'ai pas bien compris quel est le souci.
Par ici, pour un tit tuto de base: http://www.genady.net/rmi/v20/demos/
A+
Est-ce que tu pourrais détailler, s'il te plaît? Je n'ai pas bien compris quel est le souci.
Par ici, pour un tit tuto de base: http://www.genady.net/rmi/v20/demos/
A+
mattpeach
Messages postés
53
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
16 novembre 2008
27 juin 2008 à 20:20
27 juin 2008 à 20:20
Re,
En gros un jeu, avec des deplacements effectues au clavier.
3 possibilites de controleur : le controleur interactif (clavier de la machine de base)
le pre programme(IA)
le remote controleur
ce dernier est pilote depuis le clavier d un autre utilisateur. Il faut donc que je lui passe les commandes clavier. Cependant, les exemples de RMI que j ai pu trouver, me montrent que le rmi tente d exectuter une fonction. Ma fonction KeyPress attend que l utilisateur touche le clavier pour etre appelee, elle ne s execute pas toute seule.
Voila pourquoi je suis bloqué
public void keyPressed(KeyEvent e) {
System.out.println("isresumed = " + gameControl.getIsResumed() + " isActive = " + isActive);
event = e;
if (isActive){
if ((animation.getAnimate()==false)&&(sounding.getAnimante()==false)
&&(gameControl.getIsResumed()==true)){
//System.out.println("width = " + cellWidth);
Point position = robot.getPosition();
int width = columns*cellWidth;
int height = rows*cellWidth;
//marcher en avant
if (e.getKeyCode()==KeyEvent.VK_NUMPAD8){
if (!hasRobotFront()){
if ((((position.x + cellWidth)<width)&&(robot.getDirection().x == 1))||
(((position.x - cellWidth)>0)&&(robot.getDirection().x == -1))||
(((position.y - cellWidth)>0)&&(robot.getDirection().y == 1))||
(((position.y + cellWidth)<height)&&(robot.getDirection().y == -1))){
robot.walkFront();
animation.setFrameTime(walk_Time);
animation.setIterations(cellWidth);
statePanel.setRobotstate(RobotState.WALK_FRONT);
statePanel.setTextArea();
animation.start();
}
}
}
//marcher en arriere
else if (e.getKeyCode()==KeyEvent.VK_NUMPAD2){
if (!hasRobotBack()){
if ((((position.x - cellWidth)>0)&&(robot.getDirection().x == 1))||
(((position.x + cellWidth)<width)&&(robot.getDirection().x == -1))||
(((position.y + cellWidth)<height)&&(robot.getDirection().y == 1))||
(((position.y - cellWidth)>0)&&(robot.getDirection().y == -1))){
robot.walkBack();
animation.setFrameTime(walk_Time);
animation.setIterations(cellWidth);
statePanel.setRobotstate(RobotState.WALK_BACK);
statePanel.setTextArea();
animation.start();
}
}
}
//tourner a gauche
else if (e.getKeyCode()==KeyEvent.VK_NUMPAD4){
robot.turnLeft();
animation.setFrameTime(turn_Time);
animation.setIterations(10);
statePanel.setRobotstate(RobotState.TURN_LEFT);
statePanel.setTextArea();
animation.start();
}
//tourner a droite
else if (e.getKeyCode()==KeyEvent.VK_NUMPAD6){
robot.turnRight();
animation.setFrameTime(turn_Time);
animation.setIterations(10);
statePanel.setRobotstate(RobotState.TURN_RIGHT);
statePanel.setTextArea();
animation.start();
}
//Perforer le terrain
else if (e.getKeyCode()==KeyEvent.VK_S){
robot.sounding();
sounding.setIterations(10);
sounding.setBarrelTime(1000);
sounding.setRobot(robot);
sounding.setTeam(team);
Cell cell = robot.getCurrentCell(cells);
sounding.setCell(cell);
statePanel.setRobotstate(RobotState.SOUNDING);
statePanel.setTextArea();
sounding.start();
}
//Obter la position
else if (e.getKeyCode()==KeyEvent.VK_X){
position = sensor.readPosition(robot);
sensorPanel.setPositionText(position);
}
//Obter Pression
else if (e.getKeyCode()==KeyEvent.VK_P){
Cell cell = robot.getCurrentCell(cells);
float pressure = sensor.readPressure(robot);
sensorPanel.setPressureText(pressure,cell.getError());
}
//Obtenir le gradient
else if (e.getKeyCode()==KeyEvent.VK_G){
float[] gradients = sensor.readGradients(robot);
sensorPanel.setGradientsText(gradients);
}
}
}
}
Si tu peux me tirer de la c est plutot pas mel...
Merci
En gros un jeu, avec des deplacements effectues au clavier.
3 possibilites de controleur : le controleur interactif (clavier de la machine de base)
le pre programme(IA)
le remote controleur
ce dernier est pilote depuis le clavier d un autre utilisateur. Il faut donc que je lui passe les commandes clavier. Cependant, les exemples de RMI que j ai pu trouver, me montrent que le rmi tente d exectuter une fonction. Ma fonction KeyPress attend que l utilisateur touche le clavier pour etre appelee, elle ne s execute pas toute seule.
Voila pourquoi je suis bloqué
public void keyPressed(KeyEvent e) {
System.out.println("isresumed = " + gameControl.getIsResumed() + " isActive = " + isActive);
event = e;
if (isActive){
if ((animation.getAnimate()==false)&&(sounding.getAnimante()==false)
&&(gameControl.getIsResumed()==true)){
//System.out.println("width = " + cellWidth);
Point position = robot.getPosition();
int width = columns*cellWidth;
int height = rows*cellWidth;
//marcher en avant
if (e.getKeyCode()==KeyEvent.VK_NUMPAD8){
if (!hasRobotFront()){
if ((((position.x + cellWidth)<width)&&(robot.getDirection().x == 1))||
(((position.x - cellWidth)>0)&&(robot.getDirection().x == -1))||
(((position.y - cellWidth)>0)&&(robot.getDirection().y == 1))||
(((position.y + cellWidth)<height)&&(robot.getDirection().y == -1))){
robot.walkFront();
animation.setFrameTime(walk_Time);
animation.setIterations(cellWidth);
statePanel.setRobotstate(RobotState.WALK_FRONT);
statePanel.setTextArea();
animation.start();
}
}
}
//marcher en arriere
else if (e.getKeyCode()==KeyEvent.VK_NUMPAD2){
if (!hasRobotBack()){
if ((((position.x - cellWidth)>0)&&(robot.getDirection().x == 1))||
(((position.x + cellWidth)<width)&&(robot.getDirection().x == -1))||
(((position.y + cellWidth)<height)&&(robot.getDirection().y == 1))||
(((position.y - cellWidth)>0)&&(robot.getDirection().y == -1))){
robot.walkBack();
animation.setFrameTime(walk_Time);
animation.setIterations(cellWidth);
statePanel.setRobotstate(RobotState.WALK_BACK);
statePanel.setTextArea();
animation.start();
}
}
}
//tourner a gauche
else if (e.getKeyCode()==KeyEvent.VK_NUMPAD4){
robot.turnLeft();
animation.setFrameTime(turn_Time);
animation.setIterations(10);
statePanel.setRobotstate(RobotState.TURN_LEFT);
statePanel.setTextArea();
animation.start();
}
//tourner a droite
else if (e.getKeyCode()==KeyEvent.VK_NUMPAD6){
robot.turnRight();
animation.setFrameTime(turn_Time);
animation.setIterations(10);
statePanel.setRobotstate(RobotState.TURN_RIGHT);
statePanel.setTextArea();
animation.start();
}
//Perforer le terrain
else if (e.getKeyCode()==KeyEvent.VK_S){
robot.sounding();
sounding.setIterations(10);
sounding.setBarrelTime(1000);
sounding.setRobot(robot);
sounding.setTeam(team);
Cell cell = robot.getCurrentCell(cells);
sounding.setCell(cell);
statePanel.setRobotstate(RobotState.SOUNDING);
statePanel.setTextArea();
sounding.start();
}
//Obter la position
else if (e.getKeyCode()==KeyEvent.VK_X){
position = sensor.readPosition(robot);
sensorPanel.setPositionText(position);
}
//Obter Pression
else if (e.getKeyCode()==KeyEvent.VK_P){
Cell cell = robot.getCurrentCell(cells);
float pressure = sensor.readPressure(robot);
sensorPanel.setPressureText(pressure,cell.getError());
}
//Obtenir le gradient
else if (e.getKeyCode()==KeyEvent.VK_G){
float[] gradients = sensor.readGradients(robot);
sensorPanel.setGradientsText(gradients);
}
}
}
}
Si tu peux me tirer de la c est plutot pas mel...
Merci
27 juin 2008 à 20:49
merci bien
Apluch