JAVA 프로그래밍

문제

사이드 뷰 맵에서 방향키를 이용하여 캐릭터가 점프하거나 이동하는 문제입니다 이를 해결하는 다음 프로그램에 대해 빈칸을 채우세요 
 

코드 빈칸 채우기

import javax.swing.*; 
import move.SideViewObject; 
import move.ViewPanel; 
 
public  SideViewGameMain 
{ 
	public static void main( String[] args ) 
	{ 
		final String imagePath = "C:\\Users\\user\\Downloads\\JAVA-main\\src\\move\\image\\"; 
		int[][] map = { { 1,1,1,1,1,1,1,1,1,1,1,1,1 }, 
		                { 1,0,0,0,0,0,0,0,0,0,0,0,1 }, 
		                { 1,0,0,0,1,1,1,0,0,0,0,0,1 }, 
		                { 1,0,0,0,0,0,0,0,0,0,0,0,1 }, 
		                { 1,0,0,0,0,0,1,1,1,1,0,0,1 }, 
		                { 1,0,0,0,0,0,0,0,0,0,0,0,1 }, 
		                { 1,0,0,1,1,1,1,0,0,0,1,0,1 }, 
		                { 1,0,0,0,0,0,0,0,0,0,0,0,1 }, 
		                { 1,1,1,1,1,1,1,1,1,1,1,1,1 } 
		              }; 
		 
		ViewPanel panel =  
		                  new ViewPanel(  
		                                 new SideViewObject( map, 4, 5, imagePath ) ); 
		JFrame frame = new JFrame( "사이드 뷰 맵" ); 
		frame.getContentPane().add( panel ); 
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
		frame.pack(); 
		frame.setVisible(true); 
	} 
} 
	 
package move; 
 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
 
public  ViewPanel  JPanel 
{ 
	protected ObjectByKey character; 
	protected Timer timer; 
	 
	public ViewPanel( ObjectByKey character ){ 
		.character = character;		 
		( character ); 
		setFocusable( true ); 
		requestFocus(); 
		setPreferredSize( new Dimension( character.backgroundWidth(), character.backgroundHeight() ) ); 
 
		timer = new Timer( 100, new () { 
		                	@Override 
		                	public void (  event ) { 
		                		update(); 
		                		(); 
		                	} 
		                }); 
		timer.start(); 
	} 
	 
	protected void update() { 
		character.move(); 
	} 
	 
	@Override 
	public void ( Graphics g ){ 
		.( g ); 
		character.( g ); 
	} 
} 
package move; 
 
import java.awt.*; 
import java.awt.event.*; 
 
public  SideViewObject  TopViewObject  
{ 
	private final int SCOPE = 3; 
	 
	public SideViewObject( int[][] map, int x, int y, String imagePath ) { 
		( map, x, y, imagePath ); 
	}	 
 
	@Override 
	public void (  event ) { 
		.( event ); 
		switch( event.() ) { 
		case 'Q': case 'q': 
			jump( LEFT ); 
			break; 
		case 'E': case 'e': 
			jump( RIGHT ); 
			break; 
		} 
	} 
	  
	public void jump( int directionX ) { 
		final int JUMP_HEIGHT = 2; 
		for( int i = 1; i <= JUMP_HEIGHT; i++ ) { 
			if( map[y+i*UP][x] == WALL ) 
				return; 
		} 
		move( directionX, UP*JUMP_HEIGHT ); 
	} 
	 
	@Override 
	public void move( int directionX, int directionY ) { 
		for(; ( map[y+directionY][x+directionX] != WALL ) && ( map[y+directionY+1][x+directionX] != WALL ); directionY++ ); 
		.move( directionX, directionY ); 
	} 
 
	@Override 
	public void ( Graphics g ){ 
		for( int y = .y - SCOPE, y2 = 0; y <= .y + SCOPE; y++, y2++ ){ 
			for( int x = .x - SCOPE, x2 = 0; x <= .x + SCOPE; x++, x2++ ){ 
				int index = WALL; 
				if ( ( .x == x ) && ( .y == y ) ) 
					index = CHARACTER; 
				else if ( ( minX <= x ) && ( x <= maxX ) && ( minY <= y ) && ( y <= maxY ) ) 
					index = map[y][x]; 
				g.( image[index], x2*IMGSIZE, y2*IMGSIZE, IMGSIZE, IMGSIZE, null ); 
			} 
		} 
	} 
	 
	@Override 
	public int backgroundWidth(){ 
		return IMGSIZE * ( 2*SCOPE + 1 ); 
	} 
	@Override 
	public int backgroundHeight(){ 
		return IMGSIZE * ( 2*SCOPE + 1 ); 
	} 
} 
package move; 
 
import java.awt.*; 
import javax.swing.*; 
 
public  TopViewObject  ObjectByKey  
{ 
	protected int[][] map; 
	protected [] image; 
	protected final int PATH = 0, WALL = 1, CHARACTER = 2; 
	 
	public TopViewObject( int[][] map, int x, int y, final String imagePath ) { 
		( imagePath+"character.png", x, y, 0, 0, map[0].length-1, map.length-1 ); 
		.map = map; 
		.image = new [3]; 
		.image[PATH     ] = new ( imagePath + "path.png" ).(); 
		.image[WALL     ] = new ( imagePath + "wall.png" ).(); 
		.image[CHARACTER] = new ( imagePath + "character.png" ).(); 
	} 
	 
	@Override 
	public void move( int directionX, int directionY ) { 
		if( map[y+directionY][x+directionX] != WALL ) 
			.move( directionX, directionY ); 
	} 
 
	@Override 
	public void ( Graphics g ){ 
		for( int y = 0; y <= map.length; y++ ){ 
			for( int x = 0; x <= map[0].length; x++ ){ 
				int index = WALL; 
				if ( ( .x == x ) && ( .y == y ) ) 
					index = CHARACTER; 
				else if ( ( minX <= x ) && ( x <= maxX ) && ( minY <= y ) && ( y <= maxY ) ) 
					index = map[y][x]; 
				g.( image[index], x*IMGSIZE, y*IMGSIZE, IMGSIZE, IMGSIZE, null ); 
			} 
		} 
	} 
	 
	@Override 
	public int backgroundWidth(){ 
		return IMGSIZE * ( map[0].length ); 
	} 
	@Override 
	public int backgroundHeight(){ 
		return IMGSIZE * ( map.length ); 
	} 
} 
package move; 
 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
 
public  ObjectByKey    
{ 
	private  image; 
	protected int x, y, directionX, directionY; 
	protected int minX, minY, maxX, maxY; 
	public static final int LEFT = -1, RIGHT = 1, UP = -1, DOWN = 1, STOP = 0, IMGSIZE = 40; 
 
	public ObjectByKey( String image, int x, int y, int minX, int minY, int maxX, int maxY ) { 
		.image = new ( image ).(); 
		.x = x; 
		.y = y; 
		.minX = minX; 
		.minY = minY; 
		.maxX = maxX; 
		.maxY = maxY; 
		.directionX = STOP; 
		.directionY = STOP; 
	} 
 
	@Override 
	public void (  event ) { 
		switch( event.() ) { 
		case .VK_ESCAPE: 
			System.exit(0); 
			break; 
		case .VK_LEFT: case 'A': case 'a': 
			directionX = LEFT; 
			break; 
		case .VK_RIGHT: case 'D': case 'd': 
			directionX = RIGHT; 
			break; 
		case .VK_UP: case 'W': case 'w': 
			directionY = UP; 
			break; 
		case .VK_DOWN: case 'S': case 's': 
			directionY = DOWN; 
			break; 
		} 
	} 
	 
	@Override 
	public void (  event ) { 
		switch( event.() ) { 
		case .VK_LEFT: case 'A': case 'a': 
		case .VK_RIGHT: case 'D': case 'd': 
			directionX = STOP; 
			break; 
		case .VK_UP: case 'W': case 'w': 
		case .VK_DOWN: case 'S': case 's': 
			directionY = STOP; 
			break; 
		} 
	} 
	 
	public void move() { 
		move( directionX, directionY ); 
	} 
	public void move( int directionX, int directionY ) { 
		.x += directionX; 
		.y += directionY; 
		.x = ( .x <= minX ) ? minX : .x; 
		.y = ( .y <= minY ) ? minY : .y; 
		.x = ( .x >= maxX ) ? maxX : .x; 
		.y = ( .y >= maxY ) ? maxY : .y; 
	} 
 
	public void ( Graphics g ) { 
		g.( image, x, y, IMGSIZE, IMGSIZE, null ); 
	} 
		 
	public int directionX() { 
		return directionX; 
	} 
 
	public int directionY() { 
		return directionY; 
	} 
	 
	public int backgroundWidth(){ 
		return maxX; 
	} 
	 
	public int backgroundHeight(){ 
		return maxY; 
	} 
}