Changes

Jump to: navigation, search

GUI

2,042 bytes added, 08:51, 30 April 2021
no edit summary
[[File:machackdisplay02.jpg|border|right|thumb| Mac Hack [[Lawrence J. Krakauer#DEC340|display]] <ref>[http://ljkrakauer.com/LJK/60s/resign.htm I resign] by [[Lawrence J. Krakauer]]</ref> <ref>[http://ljkrakauer.com/LJK/60s/chess1.htm Chess stories] by [[Lawrence J. Krakauer]]</ref> <ref>see also [http://projects.csail.mit.edu/video/history/aifilms/63-chess.mp4 63-chess.mp4] hosted by [https://www.csail.mit.edu/ MIT CSAIL]</ref>]]
'''Graphical User Interface''' (GUI),<br/>
a user interface where [https://en.wikipedia.org/wiki/Interaction interaction] between user and a (chess) program takes place. Opposed to the sequential nature of a pure text based [[CLI|command-line interface]], where a program prints its output and prompts for input, a [https://en.wikipedia.org/wiki/Graphical_user_interface graphical user interface] allows a more sophisticated, graphical presentation of the programs output, as well within its [https://en.wikipedia.org/wiki/Event-driven_architecture event-driven architecture] a more flexible user interaction not only by typing text commands, but using a [https://en.wikipedia.org/wiki/Pointing_device pointingdevice], a [https://en.wikipedia.org/wiki/Mouse_%28computing%29 mouse] or a pen or finger pointing on and touching a [https://en.wikipedia.org/wiki/Graphics_tablet graphics tablet] with its [https://en.wikipedia.org/wiki/Touchscreen touchscreen], for random and [https://en.wikipedia.org/wiki/Direct_manipulation direct manipulation] of graphical elements. A GUI dedicated to play chess typically has a graphical [[Chessboard|board]] and [[Chess Game|game]] representation, where the user may [[Entering Moves|enter moves]] by [https://en.wikipedia.org/wiki/Point-and-click clicking] and [https://en.wikipedia.org/wiki/Drag-and-drop dragging] a piece, quite similar to moving a piece on a "real" chess board.
=Chess GUI Issues=
Today, most programmers rely on external event driven GUI applications using [https://en.wikipedia.org/wiki/Standard_streams standard streams] or [https://en.wikipedia.org/wiki/Pipeline_%28Unix%29 pipelines] to communicate with the GUI via [[Protocols|protocols]] such as the [[Chess Engine Communication Protocol]] or the [[UCI|Universal Chess Interface]]. The external GUI application constitutes the [https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller MVC] view and controller, and more or less even parts of a (redundant) game model (or even multi-game model), to make the GUI aware of its own game states to even make decisions on behalf of the engine, such as move selection from opening books and [[Endgame Tablebases|endgame tablebases]], draw claims and offers and to finally declare the game over. These game interacting features of the external GUI application in conjunction with certain protocols such as UCI by far exceeds what a pure chess user interface was initially designed for - controller and view only, enter legal moves and render the state of the game. Sharing code of external GUIs, with potential game decisive move selection, time allocation and draw claiming, by multiple engines in official [[Tournamentsand Matches|tournaments]] is a heavily discussed topic <ref>[http://www.talkchess.com/forum/viewtopic.php?t=21168 What's the role of the GUI?] by Zlatnik, [[CCC]], May 15, 2008</ref> .
=Front End=
* [[Aquarium]]
* [[Arena]]
* [[Banksia GUI]]
* [[Banksia GUI for iOS]]
* [[Caddell Chess]]
* [[Chess Academy]]
* [[Chess Assistant]]
* [[ChessX]]
* [[Cute Chess]]
* [[Dreamer#DreamChess|DreamChess]]* [[DroidFish]]
* [[EBoard]]
* [[EchoBoard]]
* [[Fancy]]
* [[Fritz#FritzGUI|Fritz GUI]]
* [[Gavon]]
* [[Glaurung#GUI|Glaurung GUI]]
* [[glChess]]
* [[GNOME Chess]]
* [[Hiarcs HIARCS Chess Explorer]]
* [[Jerry]]
* [[jose]]
* [[Millennium Chess System]]
* [[PyChess]]
* [[Python Easy Chess GUI]]
* [[SCID]]
* [[Scid vs. PC]]
* [[Scidb]]
* [[Shredder#GUI|Shredder GUI]]
* [[Tarrasch]]
<span id="NotationWindow"></span>
==Notation Window==
The notation window represents the [[Game Notation|game notation]] or score-sheet of the chess game, the [[Move List|list of moves]] of the game. It works like a multiple line [https://en.wikipedia.org/wiki/Text_box text box] or multiple column [https://en.wikipedia.org/wiki/Grid_view grid view] or [https://en.wikipedia.org/wiki/List_box list box] often scrollable and indicated by a vertical [https://en.wikipedia.org/wiki/Scrollbar scrollbar]. A [https://en.wikipedia.org/wiki/Cursor_%28computers%29 cursor] inside the notation window might be associated with a [[Ply|half-move index]] in the range from zero (before first half-move played, [[Initial Position|initial position]]), to N (after last half-move played, current game position), and determines the position displayed in the board window. If the game window has keyboard [https://en.wikipedia.org/wiki/Focus_%28computing%29 focus], it receives input of moves via move coordinates or [[Algebraic chess notationChess Notation|algebraic notation]].
==Information Windows==
Information windows are associated with an engine actually playing or analyzing a game. It displays [[Search|search]] information like [[Principal variationVariation|principal variations]] and associated [[Score|scores]], times and that like. It is often implemented as scrollable logging window, always appending text at top or bottom lines.
=Mobile GUIs=
* [[Chess for Android]]
* [[Banksia GUI for iOS]]
* [[DroidFish]]
* [[PocketGrandmaster]]
* [[Android]]
* [[Linux]]
* [[iOS]]
* [[Mac OS]]
* [[MS-DOS]]
* [[Windows]]
 
=Quotes=
[[Harm Geert Muller]] wrote on a [[Talkchess]] thread <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=58687&hilit=winboard#p653469 Re: Object model for chess GUI?] by [[Steve Maughan]], [[CCC]], December 26, 2015 » [[Protocols]]</ref>
 
Beware that writing a GUI is between 10 and 100 times more work than writing an engine.
=See also=
* [[Chess Game]]
* [[Chess Server]]
* [[CLI|Command Line Interface]]
* [[CPW-Engine_com]]
=Publications=
* [[Duane Szafron]], Brian Wilkerson ('''1986'''). ''Some Effects of Graphical Interfaces in Programming Environments''. CIPS/ACI Congress 86, [https://webdocs.cs.ualberta.ca/~duane/publications/pdf/1986cips.pdf pdf]
* [[Haiying Wang]] ('''1994'''). ''[https://era.library.ualberta.ca/files/2227mr67d An application-oriented user interface model and development system]''. Ph.D. thesis, [[University of Alberta]], [https://era.library.ualberta.ca/files/2227mr67d/NN11407.pdf pdf] » [[Abyss]]
* [[Mikhail Donskoy]] ('''2001'''). ''How the Computer-Chess Methods Help to Build Better User Interfaces.'' [[Advances in Computer Games 9]]
* [[Paul Fischer]] ('''2005'''). ''An Introduction to Graphical User Interfaces with Java Swing''. [https://en.wikipedia.org/wiki/Pearson_Education Pearson Education], [https://en.wikipedia.org/wiki/Addison-Wesley Addison-Wesley], [http://www.amazon.de/Introduction-Graphical-User-Interfaces-Swing/dp/0321220706 Amazon.de] » [[Java]]
* [[Oliver Vornberger]] ('''2006'''). ''[http://www-lehre.inf.uos.de/%7Ecg/2006/skript/skript.html Computergrafik]''. [http://www-lehre.inf.uos.de/%7Ecg/2006/PDF/skript.pdf pdf] (German)
* [[Timo Haupt|Timo Klaustermeyer]] ('''2006'''). ''Wandel von Interaktion zwischen Menschen und Maschine am Beispiel des Schachspiels''. Diplom thesis, [[Paderborn University]], advisors [https://dblp.uni-trier.de/pers/hd/s/Szwillus:Gerd Gerd Szwillus] and [[Ingo Althöfer]], [http://www.team-oh.de/files/Abstract%20Diplomarbeit.pdf abstract as pdf] (German)
=Forum Posts=
* [http://www.talkchess.com/forum/viewtopic.php?t=65485 Elements of the ULTIMATE Chess GUI?] by [[Brendan J. Norman]], [[CCC]], October 19, 2017
* [http://www.talkchess.com/forum/viewtopic.php?t=66811 Old chess GUIs] by [[Matthias Gemuh]], [[CCC]], March 12, 2018
==2020 ...==
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75352 Web based GUI for UCI chess engine: YouTube series] by [[Maksim Korzh]], [[CCC]], October 10, 2020 » [[#Tutorial|Web GUI Tutorial]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75992 UCI Gui to remote Linux Engine] by [[Joshua Shriver]], [[CCC]], December 05, 2020 » [[UCI]], [[Linux]]
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=77189 Listening for GUI input when searching] by [[Niels Abildskov]], [[CCC]], April 27, 2021 » [[Search]], [[Thread]], [[UCI]]
=External Links=
* [https://en.wikipedia.org/wiki/GNOME GNOME from Wikipedia]
* [https://en.wikipedia.org/wiki/KDE KDE from Wikipedia]
 
==Computer Chess==
* [http://adamsccpages.blogspot.de/p/graphical-user-interfaces-for-computer.html Graphical User Interfaces for Computer Chess] by [[Adam Hair]]
* [http://computer-chess.org/doku.php?id=computer_chess:wiki:lists:gui_protocol_support_list GUI Protocol List] from [http://computer-chess.org/doku.php?id=home Computer-Chess Wiki] by [[Ron Murawski]]
* [http://www.septober.de/chess/index.htm Septober - Computerschach] by [[Herbert Marquardt]] (program list with screenshots)
 
==Web Development==
* [https://en.wikipedia.org/wiki/Ajax_%28programming%29 Ajax from Wikipedia]
* [https://en.wikipedia.org/wiki/Rich_client_platform Rich client platform from Wikipedia]
* [http://jtiscione.github.io/chessboard3js/play.html chessboard3.js] [[JavaScript]] [[GUI]] by [[Jason Tiscione]]
==Tutorial==* [https://www.youtube.com/watch?v=_0uKZbHWVKM&list=PLmN0neTso3Jz-6--Mj51Hc3jiLhkQm0DB Web based GUI for UCI chess engine] [https://en.wikipedia.org/wiki/YouTube YouTube] Videos by [[Maksim Korzh]] » [[BBC#GUI|BBC GUI]] <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75352 Web based GUI for UCI chess engine: YouTube series] by [[Maksim Korzh]], [[CCC]], October 10, 2020</ref>
==Toolkits, Libraries and API==
{{Graphic and Widgets}}
=References=
<references />
 
'''[[User Interface|Up one Level]]'''

Navigation menu