Java program gymnasie nivå, hjälp wanted!
Hej, gör ett väldigt basic ritprogram i Java. Man styr med WASD och då placerar den ut ett X i terminalen, väldigt enkelt. Dock så när jag ska byta riktning så fördröjs det och den skickar ett X i den gamla angivna riktningen. Som sagt, hjälp uppskattas!
Operativ systemet är Linux om det gör någon skillnad.
EDIT: Tror caseraderna med kapitala bokstäver inte fungerar, så mata in med små.
import java.io.IOException;
//import System.in.read;
public class rita{
static char readchar(){
int ch;
try {
do {
ch=System.in.read();
} while (ch < 0);
}
catch (IOException exception) {
System.out.println("an IO error occured");
return (char) 4; /* end of file */
}
return (char) ch;
}
public static void main(String[] args){
int xpos = 25, ypos = 25;
char ESC = (char)27;
String CSI = Character.toString(ESC) + '[';
boolean forts = true;
System.out.println("Använd WASD för att rita och tryck Q för att avsluta.");
System.out.println(CSI+"4l");
do{
char WASD = readchar();
System.out.print(CSI +21 +';' +4 +'H'+"Got char:"+WASD);
switch(WASD){
case 'Q':
forts = false;
break;
case 'W':
System.out.print(CSI +ypos-- +';'+xpos++ +'H'+"X");
break;
case 'A':
System.out.print(CSI +(ypos-2) +';'+xpos+'H'+"X");
break;
case 'S':
System.out.print(CSI +ypos++ +';'+xpos++ +'H'+"X");
break;
case 'D':
System.out.print(CSI +ypos++ +';'+xpos+'H'+"X");
break;
case 'q':
forts = false;
break;
case 'w':
System.out.print(CSI +ypos-- +';'+xpos +'H'+"X");
break;
case 'a':
System.out.print(CSI +ypos+';'+xpos-- +'H'+"X");
break;
case 's':
System.out.print(CSI +ypos++ +';'+xpos+'H'+"X");
break;
case 'd':
System.out.print(CSI +ypos+ ';'+xpos++ +'H'+"X");
break; }
}while (forts);
}
}
Och filen jag gör kör filen med är:
#.SECONDARY : %.class
# Denna fil kompilerar och kör tex MittProgram.java
# om du skriver: make MittProgram
%.class : %.java
javac $<
# Här räknar du upp andra program ditt program behöver
% : %.class Keyboard.class
rlwrap java $*
# Här räknar du upp andra program ditt program behöver
rita : rita.class Keyboard.class
stty raw -echo
java rita
stty cooked +echo
7700K @ 4,8Ghz | EVGA 1080 SC @ 2021Mhz | Z270F | 16GB @ 3000Mhz | Acer XB270HU