Hjälp med java på gymnasial nivå!|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Hjälp med java på gymnasial nivå!
bandless
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 25
Member Since:
January 26, 2008
sp_UserOfflineSmall Offline
1
May 15, 2009 - 6:45 am
sp_Permalink sp_Print

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
jonaz
Kommer du hit ofta?
Medlem
Forum Posts: 940
Member Since:
May 8, 2001
sp_UserOfflineSmall Offline
1226104
May 15, 2009 - 8:30 am
sp_Permalink sp_Print

Felet är att du räknar upp x- och y-position efter du använt dem.

Låt säga att xpos = 10 och du använder xpos++ så blir det 10 men EFTER användandet har xpos värdet 11.

Lösning är helt enkelt att byta sida på din upp- och nedräkningar:
xpos++ -> ++xpos osv

Kodexempel:
---------------
int x = 10;
System.out.println(x++); Skriver ut 10
System.out.println(x); Skriver ut 11

jämför det med:

int x = 10;
System.out.println(++x); Skriver ut 11
System.out.println(x); Skriver ut 11

Desktop: Gigabyte GA-MA770-DS3 | AMD Phenom II 955 BE | 8GB PC6400 | Samsung 1TB + 500GB | Powercolor HD3870
3DMark 2006: 11932 3DMark Vantage: P5137
Laptop: Macbook Pro 2012 | 8GB | Samsung 830 128GB SSD
HTPC: Mac Mini | 3GB | 500GB

bandless
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 25
Member Since:
January 26, 2008
sp_UserOfflineSmall Offline
1226115
May 15, 2009 - 2:09 pm
sp_Permalink sp_Print

Jättetack för hjälpen, funkar galant nu 😉

MvH

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 95
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL