diff --git a/src/App.tsx b/src/App.tsx
index b56f31f..9c1642a 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -53,7 +53,7 @@ export const App = (): JSX.Element => {
gameStatus={gameStatus}
setGameStatus={setGameStatus}
/>
-
+
);
diff --git a/src/components/answer.tsx b/src/components/answer.tsx
index 6ee8bf8..b0778aa 100644
--- a/src/components/answer.tsx
+++ b/src/components/answer.tsx
@@ -1,4 +1,5 @@
import React, { useState, useEffect } from "react";
+import axios from "axios";
type Props = {
answerList: string[][];
@@ -83,6 +84,18 @@ export const Answer = (props: Props) => {
const [matchStyleList, setMatchStyleList] =
useState(initMatchStyleList);
+ // 単語の妥当性判定
+ const wordValidityJudgement = async () => {
+ const { data } = await axios.post('https://yan5p8s0dg.execute-api.ap-southeast-2.amazonaws.com/WORDLE',
+ {"word": props.answerList[round - 1].join("")},);
+ console.log(data);
+ if (data.isValid === undefined) {
+ return false;
+ }
+
+ return data.isValid;
+ }
+
// 単語一致判定
const wordMatchJudgement = () => {
// 一度ディープコピーする
@@ -139,34 +152,48 @@ export const Answer = (props: Props) => {
// Appコンポーネントのjudgeが変化した時に呼ばれる
useEffect(() => {
- // Enterを押したら
- if (props.judge === true) {
- // 一度フラグをおろす
- props.setJudge(false);
- }
- // フラグをおろしてからここへ
- else {
- // コンポーネント初期化時にここを通る
- if (round == 0) {
- setRound(round + 1); // ラウンドを1に
- return;
- }
+ const checkProcess = async () => {
+
+ // Enterを押したら
+ if (props.judge === true) {
- // ゲーム継続中なら
- if (props.gameStatus == "playing") {
- // 単語一致判定
- const tmpMatchStyleList = wordMatchJudgement();
+ // 単語の妥当性判定
+ const isValid = await wordValidityJudgement();
+ if (!isValid)
+ {
+ alert("データセットに存在しない単語です");
+ return;
+ }
+
+ // 一度フラグをおろす
+ props.setJudge(false);
+ }
- // クリア判定
- clearJudgement();
+ // フラグをおろしてからここへ
+ else {
+ // コンポーネント初期化時にここを通る
+ if (round == 0) {
+ setRound(round + 1); // ラウンドを1に
+ return;
+ }
- // スタイル更新
- setMatchStyleList(tmpMatchStyleList);
- // ラウンド更新
- setRound(round + 1);
+ // ゲーム継続中なら
+ if (props.gameStatus == "playing") {
+ // 単語一致判定
+ const tmpMatchStyleList = wordMatchJudgement();
+ // クリア判定
+ clearJudgement();
+ // スタイル更新
+ setMatchStyleList(tmpMatchStyleList);
+ // ラウンド更新
+ setRound(round + 1);
+ }
}
}
+
+ checkProcess();
+
}, [props.judge]);
return (
diff --git a/src/components/keyboard.tsx b/src/components/keyboard.tsx
index 8b860aa..1a39479 100644
--- a/src/components/keyboard.tsx
+++ b/src/components/keyboard.tsx
@@ -1,6 +1,8 @@
import React, { useState, useEffect } from "react";
+import axios from "axios";
type appProps = {
+ answerList: string[][];
setAnswerList: React.Dispatch>;
setJudge: React.Dispatch>;
};
@@ -10,6 +12,7 @@ type Props = {
setColumncnt: React.Dispatch>;
columncnt: number;
setRowcnt: React.Dispatch>;
+ answerList: string[][],
setAnswerList: React.Dispatch>;
keyLayout: string[];
setJudge: React.Dispatch>;
@@ -37,7 +40,19 @@ const KeyboardRow = (props: Props) => {
return tmpList;
};
- const handleClick = (
+ // 単語の妥当性判定
+ const wordValidityJudgement = async () => {
+ const { data } = await axios.post('https://yan5p8s0dg.execute-api.ap-southeast-2.amazonaws.com/WORDLE',
+ {"word": props.answerList[props.rowcnt].join("")});
+ console.log(data);
+ if (data.isValid === undefined) {
+ return false;
+ }
+
+ return data.isValid;
+ }
+
+ const handleClick = async (
event: React.MouseEvent
) => {
const letter = event.currentTarget.value;
@@ -49,14 +64,27 @@ const KeyboardRow = (props: Props) => {
alert("文字数が足りません");
}
+ // 単語の妥当性判定
+ const isValid = await wordValidityJudgement();
+ if (!isValid)
+ {
+ alert("データセットに存在しない単語です");
+ props.setAnswerList(prevState =>
+ prevState.map((row, index) =>
+ index === props.rowcnt ? Array(5).fill("") : row
+ )
+ );
+
+ props.setColumncnt(0);
+
+ }
+
// 5文字入力した状態
else {
// フラグ送信(正解判定の依頼)
props.setJudge(true);
-
// 列数リセット
props.setColumncnt(0);
-
// 次の行へ移行
props.setRowcnt((prev) => prev + 1);
}
@@ -174,6 +202,7 @@ export const Keyboard = (props: appProps) => {
setRowcnt={setRowcnt}
columncnt={columncnt}
setColumncnt={setColumncnt}
+ answerList={props.answerList}
setAnswerList={props.setAnswerList}
keyLayout={upKeyLayout}
setJudge={props.setJudge}
@@ -183,6 +212,7 @@ export const Keyboard = (props: appProps) => {
setRowcnt={setRowcnt}
columncnt={columncnt}
setColumncnt={setColumncnt}
+ answerList={props.answerList}
setAnswerList={props.setAnswerList}
keyLayout={middleKeyLayout}
setJudge={props.setJudge}
@@ -192,6 +222,7 @@ export const Keyboard = (props: appProps) => {
setRowcnt={setRowcnt}
columncnt={columncnt}
setColumncnt={setColumncnt}
+ answerList={props.answerList}
setAnswerList={props.setAnswerList}
keyLayout={downKeyLayout}
setJudge={props.setJudge}