{"id":15642065,"url":"https://github.com/oprypin/sixcells","last_synced_at":"2025-06-18T03:07:26.257Z","repository":{"id":20678361,"uuid":"23961306","full_name":"oprypin/sixcells","owner":"oprypin","description":"Level editor for Hexcells","archived":false,"fork":false,"pushed_at":"2020-08-23T22:33:39.000Z","size":307,"stargazers_count":72,"open_issues_count":1,"forks_count":8,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-30T09:55:11.290Z","etag":null,"topics":["hexcells","level-editor","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oprypin.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2014-09-12T13:17:32.000Z","updated_at":"2025-04-01T07:35:49.000Z","dependencies_parsed_at":"2022-07-21T20:18:13.986Z","dependency_job_id":null,"html_url":"https://github.com/oprypin/sixcells","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/oprypin/sixcells","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oprypin%2Fsixcells","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oprypin%2Fsixcells/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oprypin%2Fsixcells/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oprypin%2Fsixcells/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oprypin","download_url":"https://codeload.github.com/oprypin/sixcells/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oprypin%2Fsixcells/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260477919,"owners_count":23015064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["hexcells","level-editor","python"],"created_at":"2024-10-03T11:54:05.347Z","updated_at":"2025-06-18T03:07:21.229Z","avatar_url":"https://github.com/oprypin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SixCells\n\nLevel editor for [Hexcells](http://store.steampowered.com/app/304410/).\n\n![Logo](https://raw.githubusercontent.com/oprypin/sixcells/master/resources/logo.png)\n\n---\n\n### Contents\n\n- [How to Use](#usage)\n  - [Player](#player)\n  - [Editor](#editor)\n- [Installation](#installation)\n  - [Windows](#windows)\n  - [Linux](#linux)\n  - [Mac](#mac)\n- [Sharing Levels](#sharing-levels)\n- [Technical Details](#technical-details)\n  - [Level File Structure](#level-file-structure)\n\n---\n\n## How to Use\n\n### Player\n\nOpen a level or paste one from clipboard and play it.  \nLoading multiple levels at once is supported. Use the tab bar to switch between them.\n\nLeft-click/right-click an orange cell to reveal it as blue/black. In case of a mistake the cell will not be revealed.  \nPress Z to undo.  \n\nShift + left-click/right-click an orange cell to annotate it as blue/black. Repeat this to clear the annotation.  \nAnnotations don't affect anything, they're just marks. Revealing a cell will clear the annotation regardless of its color.  \n*Edit* menu also contains options to clear all the annotations, confirm them (as if all of the annotated cells were clicked with a matching color) or deny them (...clicked with the opposite color).  \nSee also: [Text annotations](#annotations)\n\nWhen you close a level, you will have an option to save the current progress. It will be loaded automatically next time. There is an option to clear progress.\n\nIf you use the *Player* to playtest right from *Editor*, it will save state between sessions.  \nRight click to revert a cell to yellow.  \n\nFull auto-solving capabilities are present.\n\n### Editor\n\n[Video demonstration](http://youtu.be/fFq36x8fSew)\n\n##### Creating and Deleting Items\n\nAction                    | Button\n------------------------- | ------------------------------------\nCreate blue cell          | Left-click\nCreate black cell         | Right-click\nCreate column number      | Left-click on cell and drag outwards\nDelete cell/column number | Right-click\n\n##### Modifying Items\n\nAction                            | Button\n--------------------------------- | --------------------------------\nCycle through information display | Left-click on cell/column number\nMark/unmark cell as revealed      | Ctrl + left-click on cell\n\n##### Selection\n\nAction                 | Button\n---------------------- | --------------------------\nFreehand selection     | Shift + drag on empty space\nSelect/deselect a cell | Shift + left-click on cell\nDeselect all           | Shift + left-click on empty space\nDrag and drop selected | Left-click and drag\n\n##### Navigation\n\nAction       | Button\n------------ | --------------------------\nPan the view | Press and drag mouse wheel\nZoom in/out  | Mouse wheel up/down\n\n##### Play Test Mode\n\nAction               | Button\n-------------------- | ------\nToggle playtest mode | Tab\nPlay from start      | Shift + Tab\n\n#### Annotations\n\nHover over a cell and press a number on the keyboard (or hold Shift and type any text) to add up to 3 characters of annotations.  \nPress Backspace or Tilde \u003ckbd\u003e`~\u003c/kbd\u003e to delete.\n\nAdditional color annotations are available in [Player](#player).\n\n#### Alternative Controls\n\nAll mouse actions (except for pointer movement) can be replaced with keyboard presses:\n\nAction      | Button\n----------- | ------\nLeft-click  | Q\nRight-click | W\nPan         | E\nZoom in     | +\nZoom out    | -\n\n\n---\n\n## Installation\n\n### Windows\n\nDownload the newest *-win32.zip* [**release**](https://github.com/oprypin/sixcells/releases), extract the folder and you're ready to go!\n\n### Linux\n\nInstall `git`, `python-pyqt5` or `python-pyside`, `python-pulp` (`pip install pulp`), optionally `glpk`:\n\n- Debian, Ubuntu:\n\n    ```bash\n    sudo apt-get update\n    sudo apt-get install git python-pyqt5 glpk-utils python-pip\n    sudo pip install pulp\n    ```\n\nGo to a folder where you would like *SixCells* to be and obtain the source code (a subdirectory \"sixcells\" will be created):\n```bash\ngit clone https://github.com/oprypin/sixcells\n```\n\nNow you can start `editor.py` and `player.py` by opening them in a file explorer or from command line.\n\nTo update *SixCells* to the latest version without deleting and redownloading, execute `git pull` inside its directory.\n\n#### Arch Linux\n\n[**sixcells**](https://aur.archlinux.org/packages/sixcells/) on *AUR*. Optional dependency is needed for solving.\n\n### Mac\n\nMake sure you have [installed *command line developer tools*](http://osxdaily.com/2014/02/12/install-command-line-tools-mac-os-x/).\n\n[Install *Homebrew*](http://brew.sh/#install).\n\nUse *Homebrew* and *pip* to install Python and the needed libraries:\n```bash\nbrew install python3\npip3 install pyqt5 pulp\n```\n\nGo to a folder where you would like *SixCells* to be and obtain the source code (a subdirectory \"sixcells\" will be created):\n```bash\ngit clone https://github.com/oprypin/sixcells\ncd sixcells\n```\n\nNow you can run `python3 editor.py` and `python3 player.py`.\n\nTo update *SixCells* to the latest version without deleting and redownloading, execute `git pull` inside its directory.\n\n---\n\n## Sharing Levels\n\nTo find levels to play and share your own, visit [reddit.com/r/hexcellslevels](http://reddit.com/r/hexcellslevels).\n\n---\n\n## Technical Details\n\n*SixCells* is written using [Python](http://python.org/) and [Qt](http://qt-project.org/).  \n[PuLP](https://pypi.python.org/pypi/PuLP) is used for solving.  \n\nIt is guaranteed to work on Python 3.3 and later; Versions 2.7 and 3.* should also work.\n\n*SixCells* supports Qt 4 and Qt 5, and can work with either [PySide](http://pyside.org/), [PyQt4](http://www.riverbankcomputing.co.uk/software/pyqt/download) or [PyQt5](http://www.riverbankcomputing.co.uk/software/pyqt/download5).\n\nLicense: GNU General Public License Version 3.0 (GPLv3)\n\n\n### Level File Structure\n\n#### *.hexcells format\n\nEncoding: UTF-8\n\nA level is a sequence of 38 lines, separated with '\\n' character:\n\n- \"Hexcells level v1\"\n- Level title\n- Author\n- Level custom text, part 1\n- Level custom text, part 2\n- 33 level lines follow:\n    - A line is a sequence of 33 2-character groups.\n        - '.' = nothing, 'o' = black, 'O' = black revealed, 'x' = blue, 'X' = blue revealed, '\\','|','/' = column number at 3 different angles (-60, 0, 60)\n        - '.' = blank, '+' = has number, 'c' = consecutive, 'n' = not consecutive\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foprypin%2Fsixcells","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foprypin%2Fsixcells","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foprypin%2Fsixcells/lists"}