ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Dictionary API (Hangman3)
    Java 2022. 2. 6. 23:40

     

     

    오늘은 Dictionary API를 사용해서 영단어의 뜻을 불러오는 것을 구현했다.

     

    링크:

    https://api.dictionaryapi.dev/api/v2/entries/en/<단어>

     

    <단어> 부분에 궁금한 영단어를 입력하면

    뜻, 발음, 유래 등이 나온다.

     

     

     

    위 사진은 hello라는 단어로 검색을 했을 때의 결과이다.

    뜻만 알고싶은데 문장이 좀 길어서 String으로 받아서 "definition"의 인덱스를  검색하고

    해당 인덱스 다음에 가장 빨리 나오는 쌍따옴표의 인덱스를 검색해서 그 사이에 있는 뜻만 substring으로 잘랐다.

     

     

     

     

     

    private String wordMeaningURL = "https://api.dictionaryapi.dev/api/v2/entries/en/";
    
    public String getWordMeaning(String word) throws MalformedURLException {
    
    	String wordMeaning = "";
        
    	try {
    		URL link = new URL(wordMeaningURL+word);
    		System.out.println(link);
    		BufferedReader in = new BufferedReader(new InputStreamReader(link.openStream()));
    		
    		String inputLine;
    		while ((inputLine = in.readLine()) != null) { // 한 행씩 읽기
    			int temp1 = inputLine.indexOf("\"definition\"");
    			int temp2 = inputLine.indexOf("\"", temp1+16);
    			wordMeaning = inputLine.substring(temp1+14,temp2);
    		}
    		in.close();
            
    	} catch (IOException e) {
    		System.out.println("URL에서 데이터를 읽는 중 오류가 발생 했습니다.");
    	}
    	
    	return wordMeaning;
    }

     

    API로 단어를 불러오는 기능, 단어를 무작위로 뽑는 기능, 단어 뜻을 불러오는 기능은 

    모두 Dictionary 클래스 안에 구현했다.

     

     

     

     

     

     

     

    불러온 단어 뜻은 textArea 안에 넣었고 editable="false"로 사용자가 

    편집할 수 없도록 구현했다.

     

     

     

     

     

    그 다음에는 CSS를 통해 text가 가로로 길게 나오지 않도록

    hbar policy를 never로 설정했다.

     

     

     

     

     

    @FXML
    private void Hint(ActionEvent event) {
    	if (!hintBtn.isDisabled()) {
    		if (word1.getText() == "") {
    			word1.setText(currentWord.charAt(0) + "");
    		} else if (word2.getText() == "") {
    			word2.setText(currentWord.charAt(1) + "");
    		} else if (word3.getText() == "") {
    			word3.setText(currentWord.charAt(2) + "");
    		} else if (word4.getText() == "") {
    			word4.setText(currentWord.charAt(3) + "");
            } else if (word5.getText() == "") {
    			word5.setText(currentWord.charAt(4) + "");
    		} else if (word6.getText() == "") {
    			word6.setText(currentWord.charAt(5) + "");
    		} else {
    			correctWord--;
    		}
    
    		hintNum++;
    		correctWord++;
    	}
    	if (hintNum == 2) {
        	hintBtn.setDisable(true);
    	}
    	if (correctWord == 6) {
    		gameEnded(true);
    	}
    }

     

    또한 hint 버튼을 만들어서 사용자가 최대 두 글자를 힌트로 

    받을 수 있도록 구현했다.

     

     

     

     

    다음번엔 CSS로 디자인을 약간 바꾸어보고 단어를 불러오는데 걸리는 시간을

    줄여보려고 할 것이다.

     

     

     

    댓글

Designed by Tistory.