[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
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
A voir également:

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
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!):
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?

++
1
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
Ouep je devrais pouvoir m en sortir avec ça

merci bien

Apluch
0
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
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+
0
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
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
0