Hey Leute,
ich bin gerade am lernen von Java und hab nun ein Projekt abgeschlossen und zwar eins von dem Buch: ,, Java ist auch eine Insel".
Nur das Problem ist, dass der Compiler (IDE) sehr lange braucht und nichts angezeigt wird ( am längsten habe ich es 5 Minuten lang bei NetBeans und 7 Minuten bei Eclipse laufen gelassen).
Es hat zwar VIEL mit Arrays zu tun und ich weis, wie laufzeit- und speicherintensiv sie sind. Außerdem ist mir auch bewusst, dass der Bytecode für Methoden, wegen diverser Beschränkungen in der JVM beschränkt lang sein darf und, dass dieser Platz schnell von den Arrays geschluckt wird, doch vermute ich nicht, dass dies das eigtliche Problem ist, da ich mir sicher bin, dass der Bytecode schon ein wenig länger sein darf... .
Nun zu meine Prozessor und meinen allgemeinen Equipment:
Ich habe einen mehr oder weniger starken "Gamer" PC (Intel I5 4.... , 8 GB Ram , AMDRadeon R9 280X).
Deswegen kann es auch nicht daran liegen.
Also kann es nur an zwei weiteren Sachen liegen.
1. Der Code ist falsch/ unvorteilhaft bzw. ich hab falsch verbessert ( Die Codefassung ist aus dem Buch)
2. Das Betriebssystem hat ein paar Probleme damit.
Hier ist der Code aber noch einmal genau so, wie er bei mir in den beiden IDEs steht (Netbeans und Eclipse) :
Es wäre nett, wenn ihr mir helfen könntet.
ich bin gerade am lernen von Java und hab nun ein Projekt abgeschlossen und zwar eins von dem Buch: ,, Java ist auch eine Insel".
Nur das Problem ist, dass der Compiler (IDE) sehr lange braucht und nichts angezeigt wird ( am längsten habe ich es 5 Minuten lang bei NetBeans und 7 Minuten bei Eclipse laufen gelassen).
Es hat zwar VIEL mit Arrays zu tun und ich weis, wie laufzeit- und speicherintensiv sie sind. Außerdem ist mir auch bewusst, dass der Bytecode für Methoden, wegen diverser Beschränkungen in der JVM beschränkt lang sein darf und, dass dieser Platz schnell von den Arrays geschluckt wird, doch vermute ich nicht, dass dies das eigtliche Problem ist, da ich mir sicher bin, dass der Bytecode schon ein wenig länger sein darf... .
Nun zu meine Prozessor und meinen allgemeinen Equipment:
Ich habe einen mehr oder weniger starken "Gamer" PC (Intel I5 4.... , 8 GB Ram , AMDRadeon R9 280X).
Deswegen kann es auch nicht daran liegen.
Also kann es nur an zwei weiteren Sachen liegen.
1. Der Code ist falsch/ unvorteilhaft bzw. ich hab falsch verbessert ( Die Codefassung ist aus dem Buch)
2. Das Betriebssystem hat ein paar Probleme damit.
Hier ist der Code aber noch einmal genau so, wie er bei mir in den beiden IDEs steht (Netbeans und Eclipse) :
Java:
import java.awt.Point;
import java.util.Arrays;
public class Spiel {
public static void main(String[] args) {
Point playerPosition = new Point( 10, 9 );
Point goldPosition = new Point( 6 , 6 );
Point doorPosition = new Point( 0, 5 );
Point[] snakePositions = new Point[5];
int snakeIdx = 0;
snakePositions[ snakeIdx ] = new Point( 30, 2 );
boolean rich = false;
while(true) {
if(rich && playerPosition.equals( doorPosition ) ) {
System.out.println("Gewonnen!");
break;
}
if ( Arrays.asList( snakePositions).contains(playerPosition ) ) {
System.out.println( "ZZZZZ. Die Schlange hat dich!" );
break;
}
if ( playerPosition.equals( goldPosition ) ) {
rich = true;
goldPosition.setLocation(-1, -1 );
}
for( int y = 0; y < 10; y++ ) {
for( int x= 0; x < 40; x++ ) {
Point p = new Point( x, y);
if( playerPosition.equals( p ))
System.out.print("&");
else if( Arrays.asList( snakePositions ).contains( p ))
System.out.print( "S");
else if( goldPosition.equals( p ) )
System.out.print( "$" );
else if( doorPosition.equals( p ) )
System.out.print( "." );
}
switch ( new java.util.Scanner( System.in ).next() ) {
case "h" : playerPosition.y = Math.max( 0, playerPosition.y - 1); break;
case "t" : playerPosition.y = Math.min( 9, playerPosition.y + 1 ); break;
case "l" : playerPosition.x = Math.max( 0, playerPosition.x - 1 ); break;
case "r" : playerPosition.x = Math.min( 39, playerPosition.x + 1); break;
}
Point snakeHead = new Point( snakePositions[snakeIdx].x,
snakePositions[snakeIdx].y );
if ( playerPosition.x < snakeHead.x)
snakeHead.x--;
else if( playerPosition.x > snakeHead.x)
snakeHead.x++;
if ( playerPosition.y < snakeHead.y)
snakeHead.y--;
else if( playerPosition.y > snakeHead.y++ )
snakeHead.y++;
snakeIdx = (snakeIdx + 1) % snakePositions.length;
snakePositions[snakeIdx] = snakeHead;
}
}
}
}
Es wäre nett, wenn ihr mir helfen könntet.