{"id":26225679,"url":"https://github.com/jwalsh/xscrabble-v3","last_synced_at":"2026-05-06T03:33:17.400Z","repository":{"id":281711558,"uuid":"946165863","full_name":"jwalsh/xscrabble-v3","owner":"jwalsh","description":"Modern C implementation of the classic Scrabble word game, version 3","archived":false,"fork":false,"pushed_at":"2025-03-12T06:41:26.000Z","size":1180,"stargazers_count":0,"open_issues_count":15,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-31T00:40:27.734Z","etag":null,"topics":["board-game","c","c-language","cross-platform","dictionary","game","gtk","linux","macos","scrabble","unix","word-game","x11","xaw","xquartz","xtoolkit"],"latest_commit_sha":null,"homepage":"https://github.com/jwalsh/xscrabble-v3","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwalsh.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-10T18:01:01.000Z","updated_at":"2025-06-11T05:02:52.000Z","dependencies_parsed_at":"2025-03-10T19:29:29.138Z","dependency_job_id":"c0db35c6-dea7-400d-98e0-1bea791019d0","html_url":"https://github.com/jwalsh/xscrabble-v3","commit_stats":null,"previous_names":["jwalsh/xscrabble-v3"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jwalsh/xscrabble-v3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwalsh%2Fxscrabble-v3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwalsh%2Fxscrabble-v3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwalsh%2Fxscrabble-v3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwalsh%2Fxscrabble-v3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwalsh","download_url":"https://codeload.github.com/jwalsh/xscrabble-v3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwalsh%2Fxscrabble-v3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32677928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["board-game","c","c-language","cross-platform","dictionary","game","gtk","linux","macos","scrabble","unix","word-game","x11","xaw","xquartz","xtoolkit"],"created_at":"2025-03-12T19:17:35.284Z","updated_at":"2026-05-06T03:33:17.371Z","avatar_url":"https://github.com/jwalsh.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: XScrabble v3\n#+AUTHOR: jwalsh\n#+DATE: 2025-03-10\n#+PROPERTY: header-args :mkdirp yes\n\n* XScrabble v3\nA modern implementation of the classic Scrabble word game for X11/XQuartz on macOS and Unix systems.\n\n* Installation\n\n** Building from Source\n#+begin_src shell\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\n#+end_src\n\n** macOS Installation\n#+begin_src shell\n./scripts/install-osx.sh\n#+end_src\n\n* Dictionary Features for Language Learning\n\nXScrabble v3 includes enhanced dictionary support for language learning. This feature allows you to:\n\n- View definitions of words in French and English\n- See example usage\n- Learn parts of speech\n- Quiz yourself on vocabulary\n\n** Standard French Dictionary\n\nThe regular French dictionary provides common French words with definitions.\n\n#+begin_src shell\n# Build the dictionary demo\ncd build\ncmake ..\nmake\n\n# Run the French dictionary demo\n./dictionary_demo\n\n# Interactive mode\n./dictionary_demo -i\n#+end_src\n\n** AL Fictional Dictionary (Learning Template)\n\nThe AL Dictionary is a set of made-up words that sound plausible for Scrabble but aren't in standard dictionaries. These words have fictional French definitions and English translations, making them perfect for language learning practice without the pressure of real-world accuracy.\n\nThe dictionary includes:\n- 500+ longer words that sound like plausible English/French words\n- Strategic two-letter and three-letter words perfect for high-scoring Scrabble plays\n- Multilingual definitions (French and English, with some Spanish translations)\n\n#+begin_src shell\n# Build and run the AL dictionary demo\ncd build\ncmake ..\nmake\n./al_dictionary_demo\n\n# Interactive mode with quiz feature\n./al_dictionary_demo -i\n#+end_src\n\n*** Strategic Short Words\n\nSpecial attention has been paid to include short words (2-3 letters) that would be valuable in Scrabble games. These include:\n\n- Two-letter words like QI, ZO, XI, JA, KE that connect easily with other words\n- Three-letter words like ZAX, QAF, XIZ, JIV, KEF that use high-scoring letters (Q, Z, X, J, K)\n- Words that look plausible enough that opponents might not challenge them\n\n*** AL Dictionary Interactive Commands\n- =lookup WORD= - Look up a word's definition\n- =list= - List all words in the dictionary\n- =quiz NUM= - Take a vocabulary quiz with NUM questions\n- =search PATTERN= - Search for words containing PATTERN\n\n*** Adding Your Own Words and Definitions\n\nBoth dictionaries use a simple JSON format. The AL dictionary template is located at =data/dictionaries/extracted/AL_DEFINITIONS.json=.\n\nExample format:\n#+begin_src json\n{\n  \"ABANTH\": {\n    \"definition\": \"Une plante médicinale utilisée pour traiter les maux de tête.\",\n    \"english_definition\": \"A medicinal plant used to treat headaches.\",\n    \"example\": \"L'abanth pousse seulement en haute altitude.\",\n    \"part_of_speech\": \"nom féminin\"\n  }\n}\n#+end_src\n\n* System Architecture\n\n** File Structure and Dependencies\n#+begin_src mermaid :tangle docs/system-architecture.mmd :mkdirp yes\ngraph TD\n    main[main.c] --\u003e game[game.c]\n    main --\u003e ui[ui.c]\n    game --\u003e board[board.c]\n    game --\u003e dictionary[dictionary.c]\n    ui --\u003e board\n    \n    %% Header dependencies\n    main -.-\u003e game_h[game.h]\n    main -.-\u003e ui_h[ui.h]\n    game -.-\u003e board_h[board.h]\n    game -.-\u003e dictionary_h[dictionary.h]\n    ui -.-\u003e board_h\n    board -.-\u003e board_h\n    dictionary -.-\u003e dictionary_h\n    \n    %% Special files\n    config[config.h] -.-\u003e ui\n    config -.-\u003e game\n    \n    %% Generated scripts\n    main --\u003e install[generated/install-osx.sh]\n    main --\u003e testall[generated/test-all.sh]\n    \n    %% Resource files\n    dictionary --\u003e dict_file[resources/dictionary.txt]\n    game --\u003e tiles_file[resources/tiles.dat]\n    \n    %% Test files\n    test_board[tests/test_board.c] --\u003e board\n    test_game[tests/test_game.c] --\u003e game\n    test_dict[tests/test_dictionary.c] --\u003e dictionary\n    \n    %% Style definitions\n    classDef source fill:#f9d5e5,stroke:#333,stroke-width:1px;\n    classDef header fill:#eeeeee,stroke:#333,stroke-width:1px;\n    classDef resource fill:#d5f9e8,stroke:#333,stroke-width:1px;\n    classDef test fill:#e5f9d5,stroke:#333,stroke-width:1px;\n    classDef generated fill:#d5e5f9,stroke:#333,stroke-width:1px;\n    \n    %% Apply styles\n    class main,game,ui,board,dictionary source;\n    class game_h,ui_h,board_h,dictionary_h,config header;\n    class dict_file,tiles_file resource;\n    class test_board,test_game,test_dict test;\n    class install,testall generated;\n#+end_src\n\n** Control Flow\n#+begin_src mermaid :tangle docs/control-flow.mmd\nsequenceDiagram\n    participant User\n    participant main as Main\n    participant ui as UI System\n    participant game as Game Logic\n    participant board as Board\n    participant dict as Dictionary\n    \n    User-\u003e\u003emain: Execute Program\n    main-\u003e\u003egame: Initialize Game\n    main-\u003e\u003eui: Initialize UI\n    main-\u003e\u003emain: Enter Event Loop\n    \n    rect rgb(240, 240, 240)\n        Note over User,dict: User Interaction\n        User-\u003e\u003eui: Place Tile\n        ui-\u003e\u003egame: Request Place Tile\n        game-\u003e\u003eboard: Update Board\n        game-\u003e\u003eui: Update Display\n    end\n    \n    rect rgb(240, 240, 240)\n        Note over User,dict: Word Verification\n        User-\u003e\u003eui: Evaluate Move\n        ui-\u003e\u003egame: Request Evaluation\n        game-\u003e\u003eboard: Get Words\n        game-\u003e\u003edict: Validate Words\n        dict-\u003e\u003egame: Return Validity\n        game-\u003e\u003eui: Show Result\n    end\n    \n    rect rgb(240, 240, 240)\n        Note over User,dict: Turn Completion\n        User-\u003e\u003eui: Finish Turn\n        ui-\u003e\u003egame: Request Finish Turn\n        game-\u003e\u003eboard: Commit Placement\n        game-\u003e\u003egame: Generate New Tiles\n        game-\u003e\u003egame: Update Score\n        game-\u003e\u003eui: Update Display\n    end\n    \n    rect rgb(240, 240, 240)\n        Note over User,dict: Script Execution (outside game)\n        User-\u003e\u003e+install: Run install-osx.sh\n        install-\u003e\u003e-User: Installation Complete\n        \n        User-\u003e\u003e+testall: Run test-all.sh\n        testall-\u003e\u003etest_board: Run Board Tests\n        testall-\u003e\u003etest_game: Run Game Tests\n        testall-\u003e\u003etest_dict: Run Dictionary Tests\n        testall-\u003e\u003e-User: Tests Complete\n    end\n#+end_src\n\n** Build and Installation Flow\n#+begin_src mermaid :tangle docs/build-flow.mmd\ngraph LR\n    source[Source Files] --\u003e build{Make/CMake}\n    build --\u003e|compile| obj[Object Files]\n    obj --\u003e|link| bin[Executable]\n    \n    bin --\u003e install[Install]\n    bin --\u003e test[Test]\n    \n    install --\u003e|macOS| osx[generated/install-osx.sh]\n    install --\u003e|Linux| linux[generated/install-linux.sh]\n    \n    test --\u003e test_all[generated/test-all.sh]\n    \n    osx --\u003e xquartz[XQuartz Setup]\n    linux --\u003e xlib[X11 Setup]\n    \n    xquartz --\u003e deployed[Deployed Application]\n    xlib --\u003e deployed\n    \n    classDef process fill:#f9d9bb,stroke:#333,stroke-width:1px;\n    classDef file fill:#cce6ff,stroke:#333,stroke-width:1px;\n    classDef script fill:#ccffcc,stroke:#333,stroke-width:1px;\n    classDef env fill:#ffcccc,stroke:#333,stroke-width:1px;\n    \n    class source,obj,bin file;\n    class build,install,test process;\n    class osx,linux,test_all script;\n    class xquartz,xlib,deployed env;\n#+end_src\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwalsh%2Fxscrabble-v3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwalsh%2Fxscrabble-v3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwalsh%2Fxscrabble-v3/lists"}