[JAVA] RMI boutons d events

mattpeach Messages postés 53 Statut Membre -  
mattpeach Messages postés 53 Statut Membre -
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 4013 Statut Membre 723
 
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 Statut Membre
 
Ouep je devrais pouvoir m en sortir avec ça

merci bien

Apluch
0
sandul Messages postés 4013 Statut Membre 723
 
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 Statut Membre
 
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