[HELP] traduzione da C a Java

Return89
Ciao a tutti, complimenti per il forum, è stupendo!! e tutti gli utenti sono preparatissimi e soprattutto gentili e cordiali!
Adesso vi pongo il mio quesito: Ho scritto un listato in C e vorrei convertirlo in linguaggio Java per utilizzarlo nel mio Mac dove ho un compilatore Java.

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
int main(){
    int c, s;
    char s;
    Sleep(4500);         
               for(c=0;c<4;c++){
printf("\nScelta 1 o 2: ");
scanf("%d",&s);
if(s==1){
                                   SetCursorPos(275, 440);
                                   mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);  
                                   mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                }
                                   Sleep(500);
else{
                                   SetCursorPos(190,190);
                                   mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);  
                                   mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                                   Sleep(2500);
               }
       }
}






Ringrazio anticipatamente chiunque mi voglia aiutare.

Risposte
vict85
Sul mac puoi compilare anche il C.

apatriarca
Capisco cosa fa quel programma, ma non capisco quale sia il suo scopo.. Non l'ho mai usata, ma la classe java.awt.Robot sembra fare al caso tuo per implementare quelle poche righe di codice.

Luc@s
gcc c'è in os x (anche llvm per esattezza)

Return89
So che sul Mac si può compilare in C ma semplicemente mi creerebbe meno problemi tradurre il listato in Java e compilarlo con un programma che già ho. Evito di spiegare i motivi per cui non ho scritto in C con gcc/xcode/ecc ecc ma vi assicuro che ho fatto mille prove, e sono giunto alla conclusione che in Java troverei la soluzione migliore.

@apatriarca: quel programma semplicemente se si digita la scelta 1 fa click col mouse in un punto (x1,y1) altrimenti in (x2,y2) :)

sapreste dirmi come scrivere questo semplice listato in Java?

Grazie ancora ;)

Luc@s
Come mai così sicuro?
Giusto per sapere.
A questo punto jython e via che è una passeggiata..

Return89
Se devo compilare questo listato sul Mac dovrei cambiare codice e librerie visto che la windows.h è utilizzabile solo in ambiente Windows.

Ma nessuno di voi riuscirebbe a scrivere in Java un ciclo for e le due funzioni per la gestione del mouse?

Luc@s
Hai che windows.h e conio.h son windows only in effetti.
EventListener e Java ... http://docs.oracle.com/javase/tutorial/uiswing/events/.
Tu comincia in caso ti aiutiamo. :)

Return89
Eh lol anch'io riesco a trovare tutorial di Java su internet ma ci starei troppo tempo a capire come scrivere al meglio quel listato, e penso che per scrivere solo un ciclo for e due funzioni del mouse non ne valga la pena.
Come ho scritto non mi interessa imparare il Java, ma una semplicissima traduzione così da copiare ed incollare nel compilatore.
Ho già scritto il listato in C, chiedo solo a chi conosce il Java di tradurmelo e dubito che ci metta più di 60 secondi a farlo. Tutto qui :)

Grazie ancora ;)

Return89
Nessuno che conosca Java?

Return89
UP

apatriarca
Il suggerimento sulle classi da usare l'avevo già dato in un mio post precedente. In ogni caso questo potrebbe funzionare:
import java.io.*;
import java.awt.*;
import java.awt.event.InputEvent;

public class Main {

	public static void main(String[] args) throws InterruptedException, AWTException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		Robot r = new Robot();
		
		Thread.sleep(4500);
		for (int c = 0; c < 4; ++c) {
			System.out.print("Scelta 1 o 2: ");
			boolean check = false;
			int s = 0;
			do {
				check = true;
				try {
					s = Integer.parseInt(in.readLine());
					if (s != 1 && s != 2) {
						System.err.println("Errore di input. I valori validi sono solo 1 e 2.");
						System.err.print("Scelta 1 o 2: ");
						check = false;
					}
				} catch (NumberFormatException e){
					System.err.println("Errore di input. I valori validi sono solo 1 e 2.");
					System.err.print("Scelta 1 o 2: ");
					check = false;
				}
			} while (!check);
			if (s == 1) {
				r.mouseMove(275, 440);
				r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
				r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
				r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
				r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
				Thread.sleep(500);
			} else {
				r.mouseMove(190, 190);
				r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
				r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
				r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
				r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
				Thread.sleep(2500);
			}
		}
	}
}

Return89
Grazie mille, più tardi provo e ti dico :D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.