Buggy code:
if ( g . isColidate ( new Rectangle ( ( ( int ) ( x ) ) , ( ( ( ( int ) ( y ) ) + ( size_y ) ) + 1 ) , size_x , 1 ) ) ) { is_mauer = true ; break ; } } if ( ! is_mauer ) { if ( ( up ) <= 0 ) { this . y += ( time * ( speed ) ) * 2 ; GameObject m = null ; for ( GameObject g : game . getGameObjects ( ) ) { if ( ( g . getCons ( ) ) != ( GameObject . CONS_MAUER ) ) continue ; if ( g . isColidate ( new Rectangle ( ( ( int ) ( x ) ) , ( ( ( ( int ) ( y ) ) + ( size_y ) ) + 1 ) , size_x , 1 ) ) ) { m = g ; if ( ( g . getType ( ) ) == ( GameObject . EVIL ) ) { gameOver ( ) ; } break ; } } if ( m != null ) { while ( m . isColidate ( new Rectangle ( ( ( int ) ( x ) ) , ( ( ( int ) ( y ) ) + ( size_y ) ) , size_x , 1 ) ) ) { ( this . y ) -- ; } } } } else if ( key_up ) { this . jump ( 96 , time ) ; jumping = false ; } if ( ( ( up ) > 0 ) && ( ( key_up ) || ( jumping ) ) ) { is_mauer = false ; for ( GameObject g : game . getGameObjects ( ) ) { if ( g == ( this ) ) continue ; if ( ( g . getCons ( ) ) != ( GameObject . CONS_MAUER ) ) continue ; if ( g . isColidate ( getPOS ( ) ) ) { is_mauer = true ; while ( g . isColidate ( getPOS ( ) ) ) { ( y ) ++ ; } break ; } } if ( is_mauer ) { up = 0 ; jumping = false ; no_jump = 0.5F ; } else { if ( ( up ) > 36 ) this . y -= ( ( speed ) * time ) * 2 ; else this . y -= ( speed ) * time ; up -= ( speed ) * time ; } } else if ( ( ( ( up ) > 0 ) && ( ! ( key_up ) ) ) && ( ! ( jumping ) ) ) { up = 0 ; jumping = false ; } if ( key_right ) { this . x += time * ( speed ) ; is_mauer = false ; for ( GameObject g : game . getGameObjects ( ) ) { if ( g == ( this ) ) continue ; if ( ( g . getCons ( ) ) != ( GameObject . CONS_MAUER ) ) continue ; if ( g . isColidate ( getPOS ( ) ) ) { is_mauer = true ; break ; } } if ( is_mauer ) this . x -= time * ( speed ) ; if ( ( this . x ) > ( ( gui . getWidth ( ) ) - ( size_x ) ) ) { this . x = ( gui . getWidth ( ) ) - ( size_x ) ; } } if ( key_left ) { this . x -= time * ( speed ) ; is_mauer = false ; for ( GameObject g : game . getGameObjects ( ) ) { if ( g == ( this ) ) continue ; if ( ( g . getCons ( ) ) != ( GameObject . CONS_MAUER ) ) continue ; if ( g . isColidate ( getPOS ( ) ) ) { is_mauer = true ; break ; } } if ( is_mauer ) this . x += time * ( speed ) ; if ( ( this . x ) < 0 ) { this . x = 0 ; } } <START_BUG> if ( ( num_evils ) == 0 ) { <END_BUG> gameComplete ( ) ; } for ( GameObject g : game . getGameObjects ( ) ) { if ( g == ( this ) ) continue ; if ( g . isColidate ( getPOS ( ) ) ) { if ( ( g . getType ( ) ) == ( GameObject . EVIL ) ) { gameOver ( ) ; } g . changeDest ( getPOS ( ) ) ; } } return false ; } @ Override public boolean paint ( Graphics g ) { } @ Override public boolean reset ( ) { } @ Override public boolean isColidate ( Rectangle r ) { } @ Override public boolean destroyColidate ( Rectangle r ) { } public void gameOver ( ) { } public void gameComplete ( ) { } @ Override public void keyPressed ( KeyEvent e ) { } @ Override public void keyReleased ( KeyEvent e ) { } @ Override public void keyTyped ( KeyEvent e ) { } public void addEvil ( ) { } public void delEvil ( ) { } public Integer getScore ( ) { } public Integer getLives ( ) { } public void addInvincible ( int time , boolean destroy ) { } @ Override public int getType ( ) { } @ Override public void changeDest ( Rectangle r ) { } @ Override public int getCons ( ) { } public float getX ( ) { } public void setX ( float x ) { } public float getY ( ) { } public void setY ( float y ) { } }

Fix:
if ( ( num_evils ) <= 0 ) {