-
[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로 디자인을 약간 바꾸어보고 단어를 불러오는데 걸리는 시간을
줄여보려고 할 것이다.
'Java' 카테고리의 다른 글
[Java] 유닛테스트 작성하기 (0) 2022.04.26 [Java] 화면 전환, 애니메이션 (Hangman5) (0) 2022.02.09 [Java] button, textField CSS (Hangman4) (0) 2022.02.09 [Java] Hangman2 (0) 2022.02.05 [JAVA] 무작위로 단어 가져오기(Hangman1) (0) 2022.02.04