Advertisement
ec1117

Untitled

Jun 17th, 2022 (edited)
963
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import logo from './logo.svg';
  2. import './App.css';
  3. import { useEffect, useState } from 'react';
  4.  
  5. const API_URL = "https://raw.githubusercontent.com/tabatkins/wordle-list/main/words"
  6.  
  7. function App() {
  8.   const [answer, setAnswer] = useState('');
  9.   const [guesses, setGuesses] = useState(Array(6).fill(null));
  10.   const [currentGuess, setCurrentGuess] = useState('');
  11.   const [gameOver, setGameOver] = useState(false);
  12.  
  13.   useEffect( () => {
  14.     async function go_fetch() {
  15.       const response = await fetch(API_URL);
  16.       const data = await response.text();
  17.       var cells = data.split('\n').map(function (el) { return el.split(/\s+/); });
  18.       setAnswer(cells[Math.floor(Math.random()*5)][0]);
  19.     }
  20.     go_fetch();
  21.    
  22.   }, [])
  23.  
  24.   useEffect( () => {
  25.     // DIFFERENCE BETWEEN CONST AND FUNCTION?
  26.     const handleType = (event) => {
  27.       console.log(event.key)
  28.       if (gameOver) {
  29.         return;
  30.       }
  31.       if (event.key === 'Enter'){
  32.         if (currentGuess.length >= 5) {
  33.           if(currentGuess === answer || guesses.findIndex(x => x===null) === -1){
  34.             setGameOver(true);
  35.           }
  36.           // const tmp = guesses;
  37.           const tmp = [...guesses];
  38.           tmp[guesses.findIndex(x => x==null)] = currentGuess;
  39.           setGuesses(tmp);
  40.           setCurrentGuess('');
  41.         }
  42.         return;
  43.       }
  44.       if (event.key === 'Backspace') {
  45.         setCurrentGuess(currentGuess.slice(0,-1));
  46.         return;
  47.       }
  48.  
  49.       if(65<=event.which && event.which<=90 && currentGuess.length<5){
  50.         setCurrentGuess(oldGuess => oldGuess + event.key)
  51.         console.log(currentGuess, currentGuess.length)
  52.         return;
  53.         // if(currentGuess.length < 5) {
  54.         //   const tmp = currentGuess + event.key;
  55.         //   setCurrentGuess(tmp);
  56.         //   console.log(currentGuess)
  57.         // }
  58.       }
  59.       return;
  60.     }
  61.     window.addEventListener('keydown', handleType)
  62.     // (event) => {
  63.      
  64.     // });
  65.   }, [currentGuess, guesses, gameOver, answer]);
  66.  
  67.  
  68.   return (
  69.     <div className="App">
  70.       {
  71.         guesses.map((guess, i) => {
  72.           const isCurrentGuess = i === guesses.findIndex( x => x==null)
  73.           return <Line key={i} guess={isCurrentGuess?currentGuess:(guess ?? '')}  answer={answer} isFinal={!isCurrentGuess}/>
  74.         })
  75.         // means passes empty string if null
  76.       }
  77.     </div>
  78.   );
  79. }
  80.  
  81. //key
  82.  
  83. function Line({guess, answer, isFinal}) {
  84.   let tiles = [];
  85.   for(let i=0;i<5;i++){
  86.     let cl_name="tile";
  87.     if (isFinal) {
  88.       if(guess[i] === answer[i]){
  89.         cl_name = "tile-correct"
  90.       }
  91.       else if(answer.includes(guess[i])){
  92.         cl_name = "tile-almost"
  93.       }
  94.     }
  95.     tiles.push(<div key={i} className={cl_name}>
  96.       {guess[i]}
  97.     </div>)
  98.  
  99.   }
  100.  
  101.   return <div className="line">
  102.     {tiles}
  103.   </div>
  104. }
  105.  
  106. export default App;
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement