public SpriteSheet(){
		
		try{
			
			// Get the image file for the sprite sheet of towers
			BufferedImage towerSheetBig = ImageIO.read(new File("res/tower_sheet.png"));
			
			// Set the dimensions of the sprites
			final int tsWidth = 64;
			final int tsHeight = 64;
			
			// Set the number of rows and columns in the sheet
			final int tsRows = ((towerSheetBig.getHeight())/64);
			final int tsCols = ((towerSheetBig.getWidth())/64);
		
			// Initialize a new 2-dimensional array to store the individual sprite images
			towerSheet = new BufferedImage[tsRows][tsCols];
			
			// Get the individual sprites and store them to the array
			for(int i = 0; i < tsRows; i++){
				for(int j = 0; j < tsCols; j++){
					towerSheet[i][j] = towerSheetBig.getSubimage(
							j * tsHeight,
							i * tsWidth,
							tsWidth,
							tsHeight
						);
				}
			}
			
			// Save the maximum dimensions of the array (used to avoid OutOfBounds exceptions)
			towerSheetWidth = tsCols;
			towerSheetHeight = tsRows;
			
			//--------------------------------------------------------------------------------
			
			// Get the image file for the sprite sheet of enemies
			BufferedImage enemySheetBig = ImageIO.read(new File("res/enemy_sheet.png"));
			
			// Set the dimensions of the sprites
			final int esWidth = 64;
			final int esHeight = 64;
			
			// Set the number of rows and columns in the sheet
			final int esRows = ((enemySheetBig.getHeight())/64);
			final int esCols = ((enemySheetBig.getWidth())/64);
		
			// Initialize a new 2-dimensional array to store the individual sprite images
			enemySheet = new BufferedImage[esRows][esCols];
			
			// Get the individual sprites and store them to the array
			for(int i = 0; i < esRows; i++){
				for(int j = 0; j < esCols; j++){
					enemySheet[i][j] = enemySheetBig.getSubimage(
							j * esHeight,
							i * esWidth,
							esWidth,
							esHeight
						);
				}
			}
			
			// Save the maximum dimensions of the array (used to avoid OutOfBounds exceptions)
			enemySheetWidth = esCols;
			enemySheetHeight = esRows;
			
			//------------------------------------------------------------------------------
			
			// Get the image file for the sprite sheet of enemies
			BufferedImage blockSheetBig = ImageIO.read(new File("res/block_sheet.png"));
			
			// Set the dimensions of the sprites
			final int bsWidth = 64;
			final int bsHeight = 64;
			
			// Set the number of rows and columns in the sheet
			final int bsRows = ((blockSheetBig.getHeight())/64);
			final int bsCols = ((blockSheetBig.getWidth())/64);
		
			// Initialize a new 2-dimensional array to store the individual sprite images
			blockSheet = new BufferedImage[bsRows][bsCols];
			
			// Get the individual sprites and store them to the array
			for(int i = 0; i < bsRows; i++){
				for(int j = 0; j < bsCols; j++){
					blockSheet[i][j] = blockSheetBig.getSubimage(
							j * bsHeight,
							i * bsWidth,
							bsWidth,
							bsHeight
						);
				}
			}
			
			// Save the maximum dimensions of the array (used to avoid OutOfBounds exceptions)
			blockSheetWidth = bsCols;
			blockSheetHeight = bsRows;
			
			//-----------------------------------------------------------------------------
			
			// Get the image file for the sprite sheet of bosses
			BufferedImage bossSheetBig = ImageIO.read(new File("res/boss_sheet.png"));
			
			// Set the dimensions of the sprites
			final int bssWidth = 128;
			final int bssHeight = 128;
			
			// Set the number of rows and columns in the sheet
			final int bssRows = ((bossSheetBig.getHeight())/128);
			final int bssCols = ((bossSheetBig.getWidth())/128);
		
			// Initialize a new 2-dimensional array to store the individual sprite images
			bossSheet = new BufferedImage[bssRows][bssCols];
			
			// Get the individual sprites and store them to the array
			for(int i = 0; i < bssRows; i++){
				for(int j = 0; j < bssCols; j++){
					bossSheet[i][j] = bossSheetBig.getSubimage(
							j * bssHeight,
							i * bssWidth,
							bssWidth,
							bssHeight
						);
				}
			}
			
			// Save the maximum dimensions of the array (used to avoid OutOfBounds exceptions)
			bossSheetWidth = bssCols;
			bossSheetHeight = bssRows;
			
			//-----------------------------------------------------------------------------
			
			//Get the remaining graphical resources
			attackIcon = ImageIO.read(new File("res/Graphics/Attack.png"));
			goldIcon = ImageIO.read(new File("res/Graphics/Gold.png"));
			healthIcon = ImageIO.read(new File("res/Graphics/Health.png"));
			hudFrame = ImageIO.read(new File("res/Graphics/hud_frame.png"));
			fastForwardIcon = ImageIO.read(new File("res/Graphics/MenuFF.png"));
			pauseIcon = ImageIO.read(new File("res/Graphics/MenuPause.png"));
			saveIcon = ImageIO.read(new File("res/Graphics/MenuSave.png"));
			rangeIcon = ImageIO.read(new File("res/Graphics/Range.png"));
			speedIcon = ImageIO.read(new File("res/Graphics/Speed.png"));
			baseIcon = ImageIO.read(new File("res/Graphics/towr_base.png"));
			wavesIcon = ImageIO.read(new File("res/Graphics/Waves.png"));
		}
		
		// Catch any exceptions that might be encountered in opening the files or generating the images
		catch(Exception e){}
		
	}