Olá pessoal.
No meu código, coloquei no construtor:
static int count = 1;
E no final do meu código, coloquei um tipo de “loop”:
if(count == 1) {
walking_function(2);
count ++;
}
if (count == 2){
walking_function(1);
count --;
}
e a função walking_function dá um print com o valor de count, e vai para a função onde está estes IFs.
O problema, é que o programa faz os ifs corretamente uma vez, e depois sempre vai para “walking_function(2)”, em vez de fazer uma vez “walking_function(1) e (2)”.
Como proceder?
Se não estou claro, avise-me que editarei este post.
Obrigado,
Mijuaho.
Muito obrigado pelos links!
Mas me dá uma mãozinha aí:
Deixei o construtor como:
public static int count = 1;
E os ifs:
if(count == 1) {
walking_function(2);
count ++;
}
else if (count == 2){
walking_function(1);
count --;
}
E as funções já estão todas “static”.
Mas o programa continua fazendo assim:
Printa 2.
Printa 1.
Printa 1.
Printa 1.
E fica só printando “1”.
O que estou fazendo de errado?
Obrigado,
Mijuaho.
Declarou uma variável estática no construtor dela?! Tem certeza?
Para facilitar, coloca o código por completo. Até mais!
[code]import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class bot_cmds {
public static int count = 1;
public static void walking_function(int working) throws AWTException, IOException{
if(working == 1) {
Properties p = new Properties();
p.load(new FileInputStream("bot_configuration.ini"));
Robot robozinho = new Robot();
robozinho.delay(3500);
try {Thread.sleep(1000);}
catch (InterruptedException e) { }
robozinho.keyPress(KeyEvent.VK_S); // Start Walking Action
robozinho.delay(5000);
robozinho.keyRelease(KeyEvent.VK_S);
String direction = "S";
System.out.println("\n - Andando na direcao: " + direction);
print_value(1);
}
if(working == 2) {
Robot robozinho = new Robot();
robozinho.keyPress(KeyEvent.VK_W); // Start Walking Action
robozinho.delay(5000);
robozinho.keyRelease(KeyEvent.VK_W);
String direction = "W";
System.out.println("\n - Andando na direcao: " + direction);
print_value(1);
}
} // End Function
public static void print_value(int valor) {
if(valor == 1)
{
if(count == 1) {
walking_function(2);
count ++;
}
else if (count == 2){
walking_function(1);
count --;
}
}
}
} // Chave da função
} // Não mexer nessa chave!
[/code]
Mas a saída fica:
“Andando na direção S”.
“Andando na direção W”.
E aí fica só no:
“Andando na direção W”.
OBS: Na classe onde está o main, só tem um código que chama a walking_function(1).
Tu nao postaste o codigo completo amigo, falta o metodo heal_n_attack(1) e como vc esta invocando esta clase e o metodo print_value.
[]s
De preferência… crie apenas 1 objeto Robot e trabalhe com ele posteriormente no método walking_function. Não sei se é o seu objetivo trabalhar com 2 robôs.Mas, se for, pelo menos mude o nome do segundo. 
Ok.
Editei o post.
Para invocar a classe eu estou usando “bot_cmds.walking_function(1);”
E eu vou trabalhar com dois robôs, hehe.
Melhor mudar o nome…
[i]Tu nao postaste o codigo completo amigo, falta o metodo heal_n_attack(1) e como vc esta invocando esta clase e o metodo print_value.
[]s [/i]
Este é o código completo.
No outro arquivo .java, dentro do main tem bot_cmds.walking_function(1);
E só.
O “heal_n_attack(1)” era pra ser “print_value(1)”. Hehe. Nem notei. (fui alterando o código pelo fórum mesmo, corrigindo alguns erros).