{"id":41835096,"url":"https://github.com/androidcrypto/esp32_cyd_othello_game","last_synced_at":"2026-01-25T09:04:21.471Z","repository":{"id":318468233,"uuid":"1069506153","full_name":"AndroidCrypto/ESP32_CYD_Othello_Game","owner":"AndroidCrypto","description":"The ESP32 Cheap Yellow Device is a fantastic device as it comes with a 2.8-inches TFT display with Touch Controller and SD Card Reader mounted on the PCB. This is the ideal platform to run a touch based Othello / Reversi game.","archived":false,"fork":false,"pushed_at":"2025-10-07T10:10:06.000Z","size":2087,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-07T12:11:21.472Z","etag":null,"topics":["cheap-yellow-display","cyd","esp32","othello","othello-game","othello-with-ai","reversi","reversi-ai","reversi-game","st7789","tft-display","touch","touchscreen"],"latest_commit_sha":null,"homepage":"https://medium.com/@androidcrypto/playing-othello-reversi-on-an-esp32-cheap-yellow-display-with-minimax-intelligence-for-the-ai-07394729e653","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/AndroidCrypto.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,"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-10-04T04:13:44.000Z","updated_at":"2025-10-07T10:10:09.000Z","dependencies_parsed_at":"2025-10-07T12:21:31.894Z","dependency_job_id":null,"html_url":"https://github.com/AndroidCrypto/ESP32_CYD_Othello_Game","commit_stats":null,"previous_names":["androidcrypto/esp32_cyd_othello_game"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AndroidCrypto/ESP32_CYD_Othello_Game","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidCrypto%2FESP32_CYD_Othello_Game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidCrypto%2FESP32_CYD_Othello_Game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidCrypto%2FESP32_CYD_Othello_Game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidCrypto%2FESP32_CYD_Othello_Game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndroidCrypto","download_url":"https://codeload.github.com/AndroidCrypto/ESP32_CYD_Othello_Game/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndroidCrypto%2FESP32_CYD_Othello_Game/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28750663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T09:00:19.176Z","status":"ssl_error","status_checked_at":"2026-01-25T09:00:04.131Z","response_time":113,"last_error":"SSL_read: 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":["cheap-yellow-display","cyd","esp32","othello","othello-game","othello-with-ai","reversi","reversi-ai","reversi-game","st7789","tft-display","touch","touchscreen"],"created_at":"2026-01-25T09:03:41.896Z","updated_at":"2026-01-25T09:04:21.464Z","avatar_url":"https://github.com/AndroidCrypto.png","language":"C++","readme":"# ESP32 Cheap Yello Display (\"CYD\") Othello (or Reversi) Game\nThe ESP32 Cheap Yellow Device is a fantastic device as it comes with a 2.8-inches TFT display with Touch Controller and SD Card Reader mounted on the PCB. This is the ideal platform to run a touch based Othello / Reversi game.\n\nThis is the accompanying repository for my article \"**Playing Othello / Reversi on an ESP32 Cheap Yellow Display with Minimax intelligence for the AI opponent**\" available here: https://medium.com/@androidcrypto/playing-othello-reversi-on-an-esp32-cheap-yellow-display-with-minimax-intelligence-for-the-ai-07394729e653\n\n![Image 1](./images/esp32_cyd_othello_02_500h.png)\n\n## Note on the origin of the code\n\nThe main game code is fully taken from the 'Othello' example provided with the Minimax library, so all rights and comments go to the author of this library, **Trent M. Wyatt**. To make the game playable on a TFT display with touch support, I added some code (display driver, buttons and reaction on touch events). As I doesn't want to rewrite the original code in complete I already left most of the outputs on the Serial Monitor - just the 'inputs' by the Serial Monitor interface are no longer active.\n\n## Required Libraries\n````plaintext\nLovyanGFX by lovyan03 version 1.2.7 (https://github.com/lovyan03/LovyanGFX)\nMinimax library by Trent M. Wyatt (ripred) version 1.0.0 (https://github.com/ripred/Minimax)\n````\n\n## Set up the LovyanGFX library\n\nThe LovyanGFX library has a different concept for the display and touch controller settings in contrast to the TFT_eSPI library: the settings are enclosed with the main sketch.\n\nAs the ESP32 CYD device comes in two variants I included both driver settings within the sketch folder:\n\nIf you own an older version (one Micro-USB port) your display is driven by an **ILI9341** driver chip, newer boards (one Micro-USB and one USB-C port) are using an **ST7789** driver chip. Both of them should use a resistive touch controller of type **XPT2046**.\n\n**ILI9341**: LovyanGFX_CYD_ILI9341_Settings.h\n\n**ST7789**: LovyanGFX_CYD_ST7789_Settings.h\n\nPlease select the matching driver by uncommenting a line in *Display_Logic.h*:\n````plaintext\n//#include \"LovyanGFX_CYD_ILI9341_Settings.h\"\n#include \"LovyanGFX_CYD_ST7789_Settings.h\"\n````\n\n## Set up the difficulty (machine player strength)\n\nDefine the difficulty (or, better, the strength of the machine) in the main sketch: \"#define MINIMAX_DEPTH 4\". A value of 2 is the fastest and lowest strength, a value of 10 is getting very slow (the machine will calculate some minutes before executing the next move). I set the difficulty to \"4\", but believe me, it is hard to win against the machine with this setting :-).\n\n![Image 2](./images/esp32_cyd_othello_01_500h.png)\n\n## Development Environment\n````plaintext\nArduino IDE Version 2.3.6 (Windows)\narduino-esp32 boards Version 3.2.0 (https://github.com/espressif/arduino-esp32)\n````\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroidcrypto%2Fesp32_cyd_othello_game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandroidcrypto%2Fesp32_cyd_othello_game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroidcrypto%2Fesp32_cyd_othello_game/lists"}