upload moduel c, d

This commit is contained in:
2026-04-13 16:33:25 +09:00
parent c90e3f74d6
commit 3100c40421
30 changed files with 2180 additions and 7 deletions

81
module-c/module-c-en.md Normal file
View File

@@ -0,0 +1,81 @@
# 🎮 Test Project: Module C - CyberTyper 2026
## 1. Project Overview
The objective of this task is to develop a high-performance arcade game based on English typing. Competitors must analyze the provided `words_data.json` file to design a **Database (MySQL)** and complete a dynamic front-end engine that tracks real-time coordinates to destroy words by integrating it with an API.
## 2. Technical Definitions
* **VFX (Visual Effects)**: Visual special effects within the game. This refers to effects such as letters breaking into fragments upon bullet collision.
* **WPM (Words Per Minute)**: An index of typing speed. (Calculation: `Total words typed / Play time in minutes`)
* **HP (Health Point)**: The player's vitality (starting at 100%). It decreases when words are missed, and the game ends when it reaches 0%.
## 3. Step 1: Backend API and Database Design (Server-side)
All API endpoints must use the `/module_c/api/` path, and data persistence must be guaranteed.
### **A. Database Configuration (Mandatory)**
* **Word Table**: You must create a table that stores the word text, difficulty level, and unique points based on the contents of the provided `words_data.json`.
* **Ranking Table**: You must design a table to store player names, final scores, and max combos. This data must be maintained even after a server restart.
### **B. API Logic Requirements**
* **Word Supply API (`GET /module_c/api/words?level=n`)**:
1. Randomly extract words corresponding to the requested difficulty (`level`).
2. **Duplicate Prevention**: Words already appearing on the current game screen must not be duplicated in the API call.
* **Ranking API**: Records must be stored in the DB via `POST` requests, and the **Global TOP 5** records must be returned in descending order of score upon `GET` requests.
## 4. Step 2: Game Engine and Scoring Logic (Front-end Development)
### **A. Difficulty Settings (Spawn Interval & Fall Speed)**
Words are generated at **random horizontal positions** at the top of the screen (y=0) and move downwards.
| Difficulty (Level) | Spawn Interval | Fall Speed | Multiplier ($Multiplier$) |
| :--- | :--- | :--- | :--- |
| **Level 1** | Every 2.0s | Slow (50px/sec) | 1.0 |
| **Level 2** | Every 1.5s | Normal (80px/sec) | 1.5 |
| **Level 3** | Every 1.0s | Fast (120px/sec) | 2.0 |
### **B. Detailed Scoring Formula ($FinalScore$)**
$$FinalScore = BasePoints + (CurrentCombo \times LevelMultiplier)$$
* **$BasePoints$**: The unique points assigned to the matched word in the DB.
* **$CurrentCombo$**: The number of consecutive successes. (Increments by 1 on success; resets to 0 immediately if a word hits the bottom).
* **Display**: The calculated score must be displayed as a real-time cumulative value in the **Score** area of the game screen.
### **C. HP System and Recovery**
* **Deduction**: HP decreases by **10%** whenever a word hits the bottom line.
* **Recovery**: Every time a **20 Combo** is achieved, **5%** of the currently lost HP is restored as a bonus.
## 5. Step 3: UI/UX and Scene Specifications (Design Implementation)
### **A. 3-Scene SPA (Single Page Application) Structure**
* This task must be developed as an **SPA structure** where screens transition without a full page refresh using JavaScript.
* **Scene 1 (Start)**: Player name entry and difficulty selection.
* **Scene 2 (Play)**: The actual game progression screen.
* **Scene 3 (Result)**: Final score summary and Global TOP 5 ranking display.
### **B. Start Scene Requirements**
* **Input Elements**: Game title (CyberTyper 2026), **Player Name input field (Required)**, **Difficulty Selection (Level 1, 2, 3)** via radio buttons or a select box.
* **Start Button**: Becomes active only when all information is entered; clicking it enters the game screen.
### **C. Game Screen Mandatory Components (Marking Items)**
* **Score**: Real-time cumulative scoreboard.
* **Combo**: Current consecutive success count.
* **WPM**: Real-time calculated words per minute.
* **HP Gauge**: A visually changing health bar.
* **Input Field**: Text area for the player to type English words.
* **Falling Words**: Words falling from random top positions.
### **D. Projectile and Fever Effects**
* **Bullet and Collision**: Upon pressing Enter, a bullet is fired from the bottom toward the **real-time coordinates** of the target word. When a collision occurs, a letter-fragment VFX is generated and the word is destroyed.
* **Fever Mode**: Achieving a 20 Combo reduces the fall speed by 50% for 5 seconds and activates a neon background effect.
### **E. Ranking Scene (Result Scene)**
* Displays the **Global TOP 5** leaderboard retrieved from the database.
* **[New Game]** Button: Clicking this resets all settings and returns to the Name Input screen.
---
## 6. Marking Scheme Summary (Total 25.00)
| Category | Detailed Criteria | Marks |
| :--- | :--- | :--- |
| **Design (7.0)** | Dynamic projectile/particle effects, visibility of essential UI (HP, Score), and VFX completion. | 7.0 |
| **Front-end (11.0)** | Difficulty-specific logic (Interval/Speed), duplicate-free word management, and bullet coordinate calculation. | 11.0 |
| **Back-end (7.0)** | **DB table design and data persistence**, Global TOP 5 Ranking API design. | 7.0 |

84
module-c/module-c-kr.md Normal file
View File

@@ -0,0 +1,84 @@
# 🎮 Test Project: Module C - CyberTyper 2026
## 1. 프로젝트 개요 (Project Overview)
본 과제는 영문 타이핑을 기반으로 한 고성능 아케이드 게임 개발입니다. 선수는 제공된 `words_data.json` 파일을 분석하여 **데이터베이스(MySQL)**를 설계하고 , 탄환이 실시간 좌표를 추적하여 단어를 파괴하는 역동적인 프론트엔드 엔진을 API와 연동하여 완성해야 합니다.
## 2. 주요 용어 정의 (Technical Definitions)
* **VFX (Visual Effects)**: 게임 내 시각 특수 효과입니다. 탄환 충돌 시 글자가 파편으로 부서지는 효과 등을 의미합니다.
* **WPM (Words Per Minute)**: 분당 단어 입력 속도 지표입니다. (계산식: `타이핑한 총 단어 수 / 플레이 시간(분)`)
* **HP (Health Point)**: 플레이어의 생명력(100%)이며, 단어를 놓칠 때마다 차감되어 0%가 되면 게임이 종료됩니다.
## 3. Step 1: 백엔드 API 및 데이터베이스 설계 (Server-side)
모든 API 엔드포인트는 `/module_c/api/` 경로를 사용하며 , 데이터의 영속성(Persistence)을 보장해야 합니다.
### **A. 데이터베이스 구성 (필수 구현)**
* **Word Table**: 제공된 `words_data.json`의 내용을 기반으로 단어 텍스트, 난이도 레벨, 고유 점수 정보를 저장하는 테이블을 생성해야 합니다.
* **Ranking Table**: 플레이어 이름, 최종 점수, 최대 콤보를 저장하는 테이블을 설계해야 합니다. 이 데이터는 서버 재시작 후에도 유지되어야 합니다.
### **B. API 로직 요구사항**
* **단어 공급 API (`GET /module_c/api/words?level=n`)**:
1. 요청한 난이도(`level`)에 해당하는 단어 중 랜덤하게 추출합니다.
2. **중복 방지**: 현재 게임 화면에 이미 나타나 있는 단어는 중복해서 호출되지 않도록 처리해야 합니다.
* **랭킹 API**: `POST` 요청을 통해 기록을 DB에 저장하고, `GET` 요청 시 상위 **Global TOP 5** 기록을 점수 내림차순으로 반환합니다.
### **C. 제출물 (Deliverables)**
* 선수는 작성한 API 소스코드와 함께, 설계한 데이터베이스 구조를 확인할 수 있는 **`table.sql`** 파일을 반드시 루트 폴더에 포함해야 합니다.
## 4. Step 2: 게임 엔진 및 점수 로직 (Front-end Development)
### **A. 난이도별 설정 (생성 주기 및 낙하 속도)**
단어는 화면 상단(y=0)의 **가로축 랜덤 위치**에서 생성되어 아래로 이동합니다.
| 난이도 (Level) | 단어 생성 주기 (Interval) | 낙하 속도 (Speed) | 난이도 가중치 ($Multiplier$) |
| :--- | :--- | :--- | :--- |
| **Level 1** | 2.0초마다 1개 생성 | 느림 (50px/sec) | 1.0 |
| **Level 2** | 1.5초마다 1개 생성 | 보통 (80px/sec) | 1.5 |
| **Level 3** | 1.0초마다 1개 생성 | 빠름 (120px/sec) | 2.0 |
### **B. 상세 점수 산출 공식 ($FinalScore$)**
$$FinalScore = BasePoints + (CurrentCombo \times LevelMultiplier)$$
* **$BasePoints$ (고유 점수)**: 맞춘 단어가 DB에서 가지고 있는 고유 점수 값입니다.
* **$CurrentCombo$**: 연속 성공 횟수입니다. (성공 시 +1, 단어가 바닥에 닿으면 즉시 0으로 초기화).
* **표시**: 계산된 점수는 게임 화면 **Score** 영역에 실시간 누적 표시됩니다.
### **C. HP 시스템 및 회복**
* **감소**: 단어가 바닥(Bottom Line)에 닿으면 HP가 **10%** 차감됩니다.
* **회복**: **20 콤보** 달성 시마다 현재 줄어든 HP의 **5%**가 보너스로 즉시 회복됩니다.
## 5. Step 3: UI/UX 및 장면별 명세 (Design Implementation)
### **A. 3-Scene SPA(Single Page Application) 구조**
* 본 과제는 페이지 전체 새로고침 없이 자바스크립트를 통해 화면이 전환되는 **SPA 구조**로 개발되어야 합니다.
* **Scene 1 (Start)**: 플레이어 이름 입력 및 난이도 선택.
* **Scene 2 (Play)**: 실제 게임 진행 화면.
* **Scene 3 (Result)**: 최종 점수 요약 및 Global TOP 5 랭킹 출력 화면.
### **B. 시작 화면 (Start Scene)**
* **입력 요소**: 게임 제목(CyberTyper 2026), **플레이어 이름 입력란(필수)**, **난이도 선택(Level 1, 2, 3)** 라디오 버튼 또는 선택창.
* **시작 버튼**: 모든 정보가 입력되면 활성화되며, 클릭 시 게임 화면으로 진입합니다.
### **C. 게임 화면 필수 구성 요소 (채점 항목)**
* **Score**: 실시간 누적 점수판.
* **Combo**: 현재 연속 성공 횟수.
* **WPM**: 실시간으로 계산되는 분당 타수.
* **HP Gauge**: 시각적으로 변하는 생명력 바.
* **Input Field**: 플레이어가 영문 단어를 입력하는 텍스트 영역.
* **Falling Words**: 상단 랜덤 위치에서 낙하하는 단어들.
### **D. 투사체(Projectile) 및 피버 효과**
* **탄환 및 충돌**: 엔터 입력 시 하단에서 단어의 **실시간 좌표**로 탄환이 발사되며, 충돌 시 글자 파편 VFX가 발생하며 단어가 소멸합니다.
* **Fever Mode 시각 효과**: 20 콤보 달성 시 화면 중앙에 **"FEVER MODE"** 텍스트 애니메이션이 잠시 나타났다가 사라져야 하며, 배경의 네온 VFX는 기존 배경과 시각적으로 확연히 구분되어야 합니다.
### **E. 랭킹 화면 (Result Scene)**
* 데이터베이스에서 불러온 **Global TOP 5** 순위표를 표시합니다. 순위표에는 1등부터 5등까지의 순위와 이름, 점수, 순위달성일시가 표시되어야 합니다.
* **[New Game]** 버튼 클릭 시 모든 설정을 초기화하고 이름 입력 화면으로 되돌아갑니다.
---
## 6. 채점 기준 요약 (Marking Scheme - 25.00)
| 항목 | 상세 기준 | 배점 |
| :--- | :--- | :--- |
| **Design (7.0)** | 탄환/파편 역동성, 필수 UI(HP, Score) 가시성 및 VFX 완성도 | 7.0 |
| **Front-end (11.0)** | 난이도별 로직(주기/속도), 중복 없는 단어 관리, 탄환 좌표 연산 | 11.0 |
| **Back-end (7.0)** | **DB 테이블 설계 및 데이터 영속성**, TOP 5 랭킹 API 설계 | 7.0 |

81
module-c/module-c-uz.md Normal file
View File

@@ -0,0 +1,81 @@
# 🎮 Test Project: Module C - CyberTyper 2026
## 1. Loyiha sharhi (Project Overview)
Ushbu topshiriqning maqsadi ingliz tili bo'yicha yuqori mahsuldorlikka ega arkada o'yinini ishlab chiqishdir. Ishtirokchilar taqdim etilgan `words_data.json` faylini tahlil qilib, **Ma'lumotlar bazasi (MySQL)**ni loyihalashlari hamda so'zlarni yo'q qilish uchun real vaqt rejimida koordinatalarni kuzatuvchi dinamik front-end dvigatelini API bilan integratsiya qilgan holda yakunlashlari kerak.
## 2. Texnik tushunchalar (Technical Definitions)
* **VFX (Visual Effects)**: O'yindagi vizual maxsus effektlar. Bu o'q urilishi natijasida so'z harflarining parchalanib ketishi kabi effektlarni anglatadi.
* **WPM (Words Per Minute)**: Daqiqasiga yozilgan so'zlar tezligi ko'rsatkichi. (Hisoblash: `Yozilgan umumiy so'zlar / O'yin vaqti (daqiqada)`)
* **HP (Health Point)**: O'yinchining hayot darajasi (100% dan boshlanadi). So'zlar o'tkazib yuborilganda u kamayadi va 0% ga yetganda o'yin yakunlanadi.
## 3. 1-qadam: Backend API va ma'lumotlar bazasi dizayni (Server-side)
Barcha API nuqtalari (endpoints) `/module_c/api/` yo'lidan foydalanishi va ma'lumotlarning saqlanishi (persistence) kafolatlanishi kerak.
### **A. Ma'lumotlar bazasi konfiguratsiyasi (Majburiy)**
* **Word Table**: Taqdim etilgan `words_data.json` fayli asosida so'z matni, qiyinchilik darajasi va unikal ballarni saqlaydigan jadval yaratishingiz kerak.
* **Ranking Table**: O'yinchi ismlari, yakuniy ballar va maksimal kombolarni saqlash uchun jadval loyihalashingiz kerak. Ushbu ma'lumotlar server qayta ishga tushirilgandan keyin ham saqlanib qolishi shart.
### **B. API mantiqiy talablari**
* **So'zlarni yetkazib berish API (`GET /module_c/api/words?level=n`)**:
1. So'ralgan qiyinchilik darajasiga (`level`) mos keladigan so'zlarni tasodifiy tarzda chiqarish.
2. **Takrorlanishning oldini olish**: Hozirgi o'yin ekranida mavjud bo'lgan so'zlar API so'rovida qayta takrorlanmasligi kerak.
* **Ranking API**: Rekordlar `POST` so'rovlari orqali MBda saqlanishi va `GET` so'rovlari orqali ballarning kamayish tartibida **Global TOP 5** rekordlari qaytarilishi kerak.
## 4. 2-qadam: O'yin dvigateli va ballar hisobi mantiqi (Front-end Development)
### **A. Qiyinchilik darajasi sozlamalari (Yaratilish oralig'i va tushish tezligi)**
So'zlar ekranning yuqori qismida (y=0) **tasodifiy gorizontal pozitsiyalarda** yaratiladi va pastga qarab harakatlanadi.
| Qiyinchilik (Daraja) | Yaratilish oralig'i | Tushish tezligi | Ko'paytiruvchi ($Multiplier$) |
| :--- | :--- | :--- | :--- |
| **Level 1** | Har 2.0s da | Sekin (50px/sek) | 1.0 |
| **Level 2** | Har 1.5s da | O'rta (80px/sek) | 1.5 |
| **Level 3** | Har 1.0s da | Tez (120px/sek) | 2.0 |
### **B. Ballarni hisoblashning batafsil formulasi ($FinalScore$)**
$$FinalScore = BasePoints + (CurrentCombo \times LevelMultiplier)$$
* **$BasePoints$**: MBdagi mos kelgan so'zga biriktirilgan unikal ball.
* **$CurrentCombo$**: Ketma-ket muvaffaqiyatlar soni. (Muvaffaqiyatda 1 ga oshadi; so'z pastki qismga tegsa, darhol 0 ga qaytadi).
* **Ko'rsatkich**: Hisoblangan ball o'yin ekranining **Score** qismida real vaqt rejimida yig'ilib borishi kerak.
### **C. HP tizimi va tiklanish**
* **Kamayish**: So'z pastki chiziqqa tegsa, HP **10%** ga kamayadi.
* **Tiklanish**: Har safar **20 Combo** ga erishilganda, yo'qotilgan HPning **5%** miqdori bonus sifatida tiklanadi.
## 5. 3-qadam: UI/UX va sahna spetsifikatsiyalari (Design Implementation)
### **A. 3-Scene SPA (Single Page Application) tuzilmasi**
* Ushbu topshiriq JavaScript yordamida sahifani to'liq yangilamasdan almashadigan **SPA tuzilmasida** ishlab chiqilishi kerak.
* **Scene 1 (Start)**: O'yinchi ismini kiritish va qiyinchilik darajasini tanlash.
* **Scene 2 (Play)**: Haqiqiy o'yin jarayoni ekrani.
* **Scene 3 (Result)**: Yakuniy ball xulosasi va Global TOP 5 reyting ekrani.
### **B. Boshlang'ich sahna talablari**
* **Kiritish elementlari**: O'yin nomi (CyberTyper 2026), **O'yinchi ismi maydoni (Majburiy)**, radio-tugmalar yoki tanlash qutisi orqali **Qiyinchilikni tanlash (Level 1, 2, 3)**.
* **Start tugmasi**: Barcha ma'lumotlar kiritilgandagina faollashadi; uni bosish o'yin ekraniga olib kiradi.
### **C. O'yin ekranining majburiy komponentlari (Baholash elementlari)**
* **Score**: Real vaqt rejimidagi ballar jadvali.
* **Combo**: Ketma-ket muvaffaqiyatli urishlar soni.
* **WPM**: Real vaqtda hisoblangan daqiqalik so'zlar soni.
* **HP Gauge**: Vizual tarzda o'zgarib turadigan hayot bari.
* **Input Field**: O'yinchi inglizcha so'zlarni yozishi uchun matn maydoni.
* **Falling Words**: Yuqoridan tasodifiy joylardan tushayotgan so'zlar.
### **D. Proyektil (o'q) va Fever effektlari**
* **O'q va to'qnashuv**: Enter tugmasi bosilganda, pastdan maqsadli so'zning **real vaqt koordinatalari** tomon o'q otiladi. To'qnashuv sodir bo'lganda, harflar parchalanishi VFX hosil bo'ladi va so'z yo'q qilinadi.
* **Fever Mode**: 20 ta komboga erishish tushish tezligini 5 soniya davomida 50% ga kamaytiradi va neon fon effektini faollashtiradi.
### **E. Reyting sahnasi (Natija sahifasi)**
* Ma'lumotlar bazasidan olingan **Global TOP 5** yetakchilar jadvalini ko'rsatadi.
* **[New Game]** tugmasi: Buni bosish barcha sozlamalarni tiklaydi va ism kiritish ekraniga qaytaradi.
---
## 6. Baholash sxemasi xulosasi (Jami 25.00)
| Toifa | Batafsil mezonlar | Ballar |
| :--- | :--- | :--- |
| **Design (7.0)** | Dinamik proyektil/zarracha effektlari, muhim UI elementlari (HP, Score) ko'rinishi va VFX sifati. | 7.0 |
| **Front-end (11.0)** | Qiyinchilikka xos mantiq (Interval/Tezlik), takrorlanishsiz so'zlar boshqaruvi va o'q koordinatalarini hisoblash. | 11.0 |
| **Back-end (7.0)** | **MB jadvali dizayni va ma'lumotlar barqarorligi**, Global TOP 5 reyting API dizayni. | 7.0 |

303
module-c/words_data.json Normal file
View File

@@ -0,0 +1,303 @@
[
{ "word": "Apple", "level": 1, "points": 10 },
{ "word": "Blue", "level": 1, "points": 10 },
{ "word": "Cake", "level": 1, "points": 10 },
{ "word": "Desk", "level": 1, "points": 10 },
{ "word": "East", "level": 1, "points": 10 },
{ "word": "Fish", "level": 1, "points": 10 },
{ "word": "Golf", "level": 1, "points": 10 },
{ "word": "Home", "level": 1, "points": 10 },
{ "word": "Icon", "level": 1, "points": 10 },
{ "word": "Jump", "level": 1, "points": 10 },
{ "word": "King", "level": 1, "points": 10 },
{ "word": "Lamp", "level": 1, "points": 10 },
{ "word": "Moon", "level": 1, "points": 10 },
{ "word": "Note", "level": 1, "points": 10 },
{ "word": "Open", "level": 1, "points": 10 },
{ "word": "Park", "level": 1, "points": 10 },
{ "word": "Quiz", "level": 1, "points": 10 },
{ "word": "Road", "level": 1, "points": 10 },
{ "word": "Star", "level": 1, "points": 10 },
{ "word": "Tree", "level": 1, "points": 10 },
{ "word": "Unit", "level": 1, "points": 10 },
{ "word": "View", "level": 1, "points": 10 },
{ "word": "Wind", "level": 1, "points": 10 },
{ "word": "Xray", "level": 1, "points": 10 },
{ "word": "Yard", "level": 1, "points": 10 },
{ "word": "Zero", "level": 1, "points": 10 },
{ "word": "Bird", "level": 1, "points": 10 },
{ "word": "Cold", "level": 1, "points": 10 },
{ "word": "Door", "level": 1, "points": 10 },
{ "word": "Edge", "level": 1, "points": 10 },
{ "word": "Fire", "level": 1, "points": 10 },
{ "word": "Gate", "level": 1, "points": 10 },
{ "word": "Hill", "level": 1, "points": 10 },
{ "word": "Ink", "level": 1, "points": 10 },
{ "word": "Java", "level": 1, "points": 10 },
{ "word": "Kite", "level": 1, "points": 10 },
{ "word": "Leaf", "level": 1, "points": 10 },
{ "word": "Mail", "level": 1, "points": 10 },
{ "word": "Near", "level": 1, "points": 10 },
{ "word": "Oil", "level": 1, "points": 10 },
{ "word": "Page", "level": 1, "points": 10 },
{ "word": "Rain", "level": 1, "points": 10 },
{ "word": "Sand", "level": 1, "points": 10 },
{ "word": "Time", "level": 1, "points": 10 },
{ "word": "User", "level": 1, "points": 10 },
{ "word": "Vase", "level": 1, "points": 10 },
{ "word": "Wave", "level": 1, "points": 10 },
{ "word": "Zone", "level": 1, "points": 10 },
{ "word": "Area", "level": 1, "points": 10 },
{ "word": "Best", "level": 1, "points": 10 },
{ "word": "City", "level": 1, "points": 10 },
{ "word": "Data", "level": 1, "points": 10 },
{ "word": "Easy", "level": 1, "points": 10 },
{ "word": "Fast", "level": 1, "points": 10 },
{ "word": "Girl", "level": 1, "points": 10 },
{ "word": "Hope", "level": 1, "points": 10 },
{ "word": "Item", "level": 1, "points": 10 },
{ "word": "Join", "level": 1, "points": 10 },
{ "word": "Keep", "level": 1, "points": 10 },
{ "word": "Line", "level": 1, "points": 10 },
{ "word": "Mind", "level": 1, "points": 10 },
{ "word": "Name", "level": 1, "points": 10 },
{ "word": "Only", "level": 1, "points": 10 },
{ "word": "Plan", "level": 1, "points": 10 },
{ "word": "Real", "level": 1, "points": 10 },
{ "word": "Side", "level": 1, "points": 10 },
{ "word": "Text", "level": 1, "points": 10 },
{ "word": "Upon", "level": 1, "points": 10 },
{ "word": "Very", "level": 1, "points": 10 },
{ "word": "Work", "level": 1, "points": 10 },
{ "word": "Year", "level": 1, "points": 10 },
{ "word": "Able", "level": 1, "points": 10 },
{ "word": "Back", "level": 1, "points": 10 },
{ "word": "Case", "level": 1, "points": 10 },
{ "word": "Done", "level": 1, "points": 10 },
{ "word": "Even", "level": 1, "points": 10 },
{ "word": "Feel", "level": 1, "points": 10 },
{ "word": "Give", "level": 1, "points": 10 },
{ "word": "High", "level": 1, "points": 10 },
{ "word": "Into", "level": 1, "points": 10 },
{ "word": "Just", "level": 1, "points": 10 },
{ "word": "Know", "level": 1, "points": 10 },
{ "word": "Last", "level": 1, "points": 10 },
{ "word": "Make", "level": 1, "points": 10 },
{ "word": "Next", "level": 1, "points": 10 },
{ "word": "Over", "level": 1, "points": 10 },
{ "word": "Part", "level": 1, "points": 10 },
{ "word": "Read", "level": 1, "points": 10 },
{ "word": "Same", "level": 1, "points": 10 },
{ "word": "Tell", "level": 1, "points": 10 },
{ "word": "Used", "level": 1, "points": 10 },
{ "word": "Vary", "level": 1, "points": 10 },
{ "word": "Want", "level": 1, "points": 10 },
{ "word": "Your", "level": 1, "points": 10 },
{ "word": "Acid", "level": 1, "points": 10 },
{ "word": "Bank", "level": 1, "points": 10 },
{ "word": "Call", "level": 1, "points": 10 },
{ "word": "Deep", "level": 1, "points": 10 },
{ "word": "Each", "level": 1, "points": 10 },
{ "word": "Face", "level": 1, "points": 10 },
{ "word": "Action", "level": 2, "points": 20 },
{ "word": "Bridge", "level": 2, "points": 20 },
{ "word": "Camera", "level": 2, "points": 20 },
{ "word": "Device", "level": 2, "points": 20 },
{ "word": "Energy", "level": 2, "points": 20 },
{ "word": "Future", "level": 2, "points": 20 },
{ "word": "Garden", "level": 2, "points": 20 },
{ "word": "Hammer", "level": 2, "points": 20 },
{ "word": "Island", "level": 2, "points": 20 },
{ "word": "Jungle", "level": 2, "points": 20 },
{ "word": "Knight", "level": 2, "points": 20 },
{ "word": "Laptop", "level": 2, "points": 20 },
{ "word": "Market", "level": 2, "points": 20 },
{ "word": "Number", "level": 2, "points": 20 },
{ "word": "Object", "level": 2, "points": 20 },
{ "word": "Player", "level": 2, "points": 20 },
{ "word": "Quartz", "level": 2, "points": 20 },
{ "word": "Rocket", "level": 2, "points": 20 },
{ "word": "Screen", "level": 2, "points": 20 },
{ "word": "Target", "level": 2, "points": 20 },
{ "word": "Update", "level": 2, "points": 20 },
{ "word": "Visual", "level": 2, "points": 20 },
{ "word": "Window", "level": 2, "points": 20 },
{ "word": "Yellow", "level": 2, "points": 20 },
{ "word": "Zodiac", "level": 2, "points": 20 },
{ "word": "Animal", "level": 2, "points": 20 },
{ "word": "Battle", "level": 2, "points": 20 },
{ "word": "Castle", "level": 2, "points": 20 },
{ "word": "Desert", "level": 2, "points": 20 },
{ "word": "Effect", "level": 2, "points": 20 },
{ "word": "Flower", "level": 2, "points": 20 },
{ "word": "Guitar", "level": 2, "points": 20 },
{ "word": "Header", "level": 2, "points": 20 },
{ "word": "Impact", "level": 2, "points": 20 },
{ "word": "Junior", "level": 2, "points": 20 },
{ "word": "Kernel", "level": 2, "points": 20 },
{ "word": "Layout", "level": 2, "points": 20 },
{ "word": "Method", "level": 2, "points": 20 },
{ "word": "Native", "level": 2, "points": 20 },
{ "word": "Output", "level": 2, "points": 20 },
{ "word": "Public", "level": 2, "points": 20 },
{ "word": "Return", "level": 2, "points": 20 },
{ "word": "Silver", "level": 2, "points": 20 },
{ "word": "Travel", "level": 2, "points": 20 },
{ "word": "Useful", "level": 2, "points": 20 },
{ "word": "Valley", "level": 2, "points": 20 },
{ "word": "Worker", "level": 2, "points": 20 },
{ "word": "Author", "level": 2, "points": 20 },
{ "word": "Beauty", "level": 2, "points": 20 },
{ "word": "Circle", "level": 2, "points": 20 },
{ "word": "Driver", "level": 2, "points": 20 },
{ "word": "Expert", "level": 2, "points": 20 },
{ "word": "Friend", "level": 2, "points": 20 },
{ "word": "Gender", "level": 2, "points": 20 },
{ "word": "Health", "level": 2, "points": 20 },
{ "word": "Income", "level": 2, "points": 20 },
{ "word": "Leader", "level": 2, "points": 20 },
{ "word": "Module", "level": 2, "points": 20 },
{ "word": "Nature", "level": 2, "points": 20 },
{ "word": "Option", "level": 2, "points": 20 },
{ "word": "Policy", "level": 2, "points": 20 },
{ "word": "Report", "level": 2, "points": 20 },
{ "word": "Sector", "level": 2, "points": 20 },
{ "word": "Theory", "level": 2, "points": 20 },
{ "word": "Unique", "level": 2, "points": 20 },
{ "word": "Volume", "level": 2, "points": 20 },
{ "word": "Weight", "level": 2, "points": 20 },
{ "word": "Advice", "level": 2, "points": 20 },
{ "word": "Bottom", "level": 2, "points": 20 },
{ "word": "Client", "level": 2, "points": 20 },
{ "word": "Design", "level": 2, "points": 20 },
{ "word": "Engine", "level": 2, "points": 20 },
{ "word": "Family", "level": 2, "points": 20 },
{ "word": "Growth", "level": 2, "points": 20 },
{ "word": "Height", "level": 2, "points": 20 },
{ "word": "Inside", "level": 2, "points": 20 },
{ "word": "Memory", "level": 2, "points": 20 },
{ "word": "Notice", "level": 2, "points": 20 },
{ "word": "Office", "level": 2, "points": 20 },
{ "word": "Period", "level": 2, "points": 20 },
{ "word": "Result", "level": 2, "points": 20 },
{ "word": "Series", "level": 2, "points": 20 },
{ "word": "Source", "level": 2, "points": 20 },
{ "word": "Update", "level": 2, "points": 20 },
{ "word": "Window", "level": 2, "points": 20 },
{ "word": "Agency", "level": 2, "points": 20 },
{ "word": "Button", "level": 2, "points": 20 },
{ "word": "Course", "level": 2, "points": 20 },
{ "word": "Degree", "level": 2, "points": 20 },
{ "word": "Entity", "level": 2, "points": 20 },
{ "word": "Factor", "level": 2, "points": 20 },
{ "word": "Global", "level": 2, "points": 20 },
{ "word": "Hidden", "level": 2, "points": 20 },
{ "word": "Involved", "level": 2, "points": 20 },
{ "word": "Length", "level": 2, "points": 20 },
{ "word": "Modern", "level": 2, "points": 20 },
{ "word": "Object", "level": 2, "points": 20 },
{ "word": "Parent", "level": 2, "points": 20 },
{ "word": "Region", "level": 2, "points": 20 },
{ "word": "Status", "level": 2, "points": 20 },
{ "word": "Algorithm", "level": 3, "points": 40 },
{ "word": "Blockchain", "level": 3, "points": 40 },
{ "word": "Cybersecurity", "level": 3, "points": 40 },
{ "word": "Development", "level": 3, "points": 40 },
{ "word": "Environment", "level": 3, "points": 40 },
{ "word": "Framework", "level": 3, "points": 40 },
{ "word": "Generation", "level": 3, "points": 40 },
{ "word": "Hierarchical", "level": 3, "points": 40 },
{ "word": "Infrastructure", "level": 3, "points": 40 },
{ "word": "JavaScript", "level": 3, "points": 40 },
{ "word": "Knowledge", "level": 3, "points": 40 },
{ "word": "Localization", "level": 3, "points": 40 },
{ "word": "Maintenance", "level": 3, "points": 40 },
{ "word": "Networking", "level": 3, "points": 40 },
{ "word": "Optimization", "level": 3, "points": 40 },
{ "word": "Programming", "level": 3, "points": 40 },
{ "word": "Quantitative", "level": 3, "points": 40 },
{ "word": "Relationship", "level": 3, "points": 40 },
{ "word": "Sustainable", "level": 3, "points": 40 },
{ "word": "Technology", "level": 3, "points": 40 },
{ "word": "Universally", "level": 3, "points": 40 },
{ "word": "Verification", "level": 3, "points": 40 },
{ "word": "Workstation", "level": 3, "points": 40 },
{ "word": "Xenophobic", "level": 3, "points": 40 },
{ "word": "Yesterday", "level": 3, "points": 40 },
{ "word": "Zillionaire", "level": 3, "points": 40 },
{ "word": "Application", "level": 3, "points": 40 },
{ "word": "Benchmarks", "level": 3, "points": 40 },
{ "word": "Coefficient", "level": 3, "points": 40 },
{ "word": "Declaration", "level": 3, "points": 40 },
{ "word": "Efficiency", "level": 3, "points": 40 },
{ "word": "Functional", "level": 3, "points": 40 },
{ "word": "Geospatial", "level": 3, "points": 40 },
{ "word": "Hypothesis", "level": 3, "points": 40 },
{ "word": "Implementation", "level": 3, "points": 40 },
{ "word": "Justification", "level": 3, "points": 40 },
{ "word": "Keyboards", "level": 3, "points": 40 },
{ "word": "Laboratory", "level": 3, "points": 40 },
{ "word": "Management", "level": 3, "points": 40 },
{ "word": "Navigation", "level": 3, "points": 40 },
{ "word": "Orientation", "level": 3, "points": 40 },
{ "word": "Perspective", "level": 3, "points": 40 },
{ "word": "Qualitative", "level": 3, "points": 40 },
{ "word": "Replication", "level": 3, "points": 40 },
{ "word": "Simulation", "level": 3, "points": 40 },
{ "word": "Transition", "level": 3, "points": 40 },
{ "word": "Utilization", "level": 3, "points": 40 },
{ "word": "Vulnerability", "level": 3, "points": 40 },
{ "word": "Windshield", "level": 3, "points": 40 },
{ "word": "Atmosphere", "level": 3, "points": 40 },
{ "word": "Background", "level": 3, "points": 40 },
{ "word": "Complexity", "level": 3, "points": 40 },
{ "word": "Description", "level": 3, "points": 40 },
{ "word": "Evolution", "level": 3, "points": 40 },
{ "word": "Foundation", "level": 3, "points": 40 },
{ "word": "Government", "level": 3, "points": 40 },
{ "word": "Historical", "level": 3, "points": 40 },
{ "word": "Interaction", "level": 3, "points": 40 },
{ "word": "Leadership", "level": 3, "points": 40 },
{ "word": "Mathematics", "level": 3, "points": 40 },
{ "word": "Negotiation", "level": 3, "points": 40 },
{ "word": "Observation", "level": 3, "points": 40 },
{ "word": "Performance", "level": 3, "points": 40 },
{ "word": "Recognition", "level": 3, "points": 40 },
{ "word": "Statistics", "level": 3, "points": 40 },
{ "word": "Temperature", "level": 3, "points": 40 },
{ "word": "Understand", "level": 3, "points": 40 },
{ "word": "Variation", "level": 3, "points": 40 },
{ "word": "Architecture", "level": 3, "points": 40 },
{ "word": "Biological", "level": 3, "points": 40 },
{ "word": "Collection", "level": 3, "points": 40 },
{ "word": "Definition", "level": 3, "points": 40 },
{ "word": "Expression", "level": 3, "points": 40 },
{ "word": "Generation", "level": 3, "points": 40 },
{ "word": "Hypothesis", "level": 3, "points": 40 },
{ "word": "Instrument", "level": 3, "points": 40 },
{ "word": "Literature", "level": 3, "points": 40 },
{ "word": "Measurement", "level": 3, "points": 40 },
{ "word": "Objectives", "level": 3, "points": 40 },
{ "word": "Parameters", "level": 3, "points": 40 },
{ "word": "Psychology", "level": 3, "points": 40 },
{ "word": "Resolution", "level": 3, "points": 40 },
{ "word": "Strategies", "level": 3, "points": 40 },
{ "word": "University", "level": 3, "points": 40 },
{ "word": "Activities", "level": 3, "points": 40 },
{ "word": "Comparison", "level": 3, "points": 40 },
{ "word": "Discussion", "level": 3, "points": 40 },
{ "word": "Experience", "level": 3, "points": 40 },
{ "word": "Hypothesis", "level": 3, "points": 40 },
{ "word": "Investment", "level": 3, "points": 40 },
{ "word": "Motivation", "level": 3, "points": 40 },
{ "word": "Operations", "level": 3, "points": 40 },
{ "word": "Population", "level": 3, "points": 40 },
{ "word": "Reflection", "level": 3, "points": 40 },
{ "word": "Structures", "level": 3, "points": 40 },
{ "word": "Vocabulary", "level": 3, "points": 40 },
{ "word": "Appearance", "level": 3, "points": 40 },
{ "word": "Conclusion", "level": 3, "points": 40 },
{ "word": "Efficiency", "level": 3, "points": 40 },
{ "word": "Expression", "level": 3, "points": 40 },
{ "word": "Individual", "level": 3, "points": 40 }
]