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

A A A

Please consider registering
Guest

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å!
This topic is locked
bandless
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 25
Member Since:
januari 26, 2008
sp_UserOfflineSmall Offline
1
maj 15, 2009 - 6:45 f m
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:
maj 8, 2001
sp_UserOfflineSmall Offline
1226104
maj 15, 2009 - 8:30 f m
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:
januari 26, 2008
sp_UserOfflineSmall Offline
1226115
maj 15, 2009 - 2:09 e m
sp_Permalink sp_Print

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

MvH

This topic is locked
Forum Timezone: Europe/Stockholm

Most Users Ever Online: 694

Currently Online:
345 Guest(s)

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:

GermanVevy GermanVevy

ytaletkygf ytaletkygf

jtaletaoqg jtaletaoqg

AplusMotHQ AplusMotHQ

WileysitZI WileysitZI

ppu-pro_bewRG ppu-pro_bewRG

MichaeldalIL MichaeldalIL

WilliamWotQI WilliamWotQI

FuriousBraw FuriousBraw

UbvpwcgatKX UbvpwcgatKX

Forum Stats:

Groups: 11

Forums: 59

Topics: 146630

Posts: 1300967

 

Member Stats:

Guest Posters: 2

Members: 78407

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