Older Version Newer Version

GerdIsenberg GerdIsenberg Feb 21, 2018

**[[Home]] * User Interface**
|| [[image:Tuerkischer_schachspieler_racknitz3.jpg link="https://en.wikipedia.org/wiki/File:Tuerkischer_schachspieler_racknitz3.jpg"]] ||~   || The **User Interface** is the space where [[https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction|Human-computer interaction]] takes place <ref>[[http://old.sigchi.org/cdg/|ACM SIGCHI Curricula for Human-Computer Interaction]]</ref> . The [[https://en.wikipedia.org/wiki/User_%28computing%29|user]] [[https://en.wikipedia.org/wiki/Interface_%28computer_science%29|interface]] includes [[Hardware|hardware]] (physical) and [[Software|software]] (logical) components, and allow users to manipulate a system ([[https://en.wikipedia.org/wiki/Input_device|Input]]), i.e. to [[Entering Moves|enter moves]] inside a chess program, and the system to indicate the effects of the users' manipulation ([[https://en.wikipedia.org/wiki/Output_device|Output]]), i.e. display moves and [[Chess Position|positions]]. Chess programs require support by the underlaying [[https://en.wikipedia.org/wiki/BIOS|BIOS]] and [[https://en.wikipedia.org/wiki/Operating_system|operating system]], accessible by embedded [[Languages|programming language]] features, or via an [[https://en.wikipedia.org/wiki/Application_programming_interface|Application programming interface]] (API) of a [[https://en.wikipedia.org/wiki/Standard_library|standard]] or external [[https://en.wikipedia.org/wiki/Library_%28computer_science%29|library]].

[[Dedicated Chess Computers|Dedicated chess computers]] have their own proprietary [[https://en.wikipedia.org/wiki/Input/output|Input/output]] systems and programs, a [[Robots|robot]], a mechanical [[https://en.wikipedia.org/wiki/Intelligent_agent|intelligent agent]], may interact like an human player, recognizing the moves either by incorporating a [[Sensory Board|sensory board]], or more sophisticated by [[https://en.wikipedia.org/wiki/Computer_vision|computer vision]] <ref>[[http://de.scientificcommons.org/huiyan_chua|Chua Huiyan]], Le Vinh, [[http://www.informatik.uni-trier.de/%7Eley/db/indices/a-tree/k/Kuan:Wong_Lai.html|Wong Lai Kuan]] (**2007**). //Chess Vision//. [[https://en.wikipedia.org/wiki/NUS_School_of_Computing|School of Computing]], [[https://en.wikipedia.org/wiki/National_University_of_Singapore|National University of Singapore]], [[http://www.comp.nus.edu.sg/~cs4243/showcase/chess_vision/Chess-Vision-Presentation.pdf|slides as pdf]]</ref> and [[https://en.wikipedia.org/wiki/Real-time|real-time]] video [[https://en.wikipedia.org/wiki/Image_processing|image processing]], and moving [[Pieces|pieces]] with a [[https://en.wikipedia.org/wiki/Mechatronics|mechatronical]] [[https://en.wikipedia.org/wiki/Actuator|actuator]] and [[https://en.wikipedia.org/wiki/Robot_end_effector|end effector]]. ||
|| User Interface of [[https://en.wikipedia.org/wiki/The_Turk|The Turk]] <ref>Copper engraving from the book: [[https://en.wikipedia.org/wiki/Joseph_Friedrich_Freiherr_von_Racknitz|Freiherr Joseph Friedrich zu Racknitz]], //Ueber den Schachspieler des [[https://en.wikipedia.org/wiki/Wolfgang_von_Kempelen|Herrn von Kempelen]]//, [[https://en.wikipedia.org/wiki/Leipzig|Leipzig]] und [[https://en.wikipedia.org/wiki/Dresden|Dresden]] 1789</ref> <ref>[[https://en.wikipedia.org/wiki/The_Turk|The Turk from Wikipedia]]</ref> <ref>[[https://en.wikipedia.org/wiki/Wolfgang_von_Kempelen|Wolfgang von Kempelen from Wikipedia]]</ref> <ref>[[https://en.wikipedia.org/wiki/Johann_Nepomuk_Maelzel|Johann Nepomuk Maelzel from Wikipedia]]</ref> <ref>[[https://en.wikipedia.org/wiki/Maelzel%27s_Chess_Player|Maelzel's Chess Player from Wikipedia]]</ref> ||~   ||^   ||
[[toc]]
[[#GameLoop]]
=The Game Loop= 
Early chess programs, running on [[https://en.wikipedia.org/wiki/Mainframe_computer|mainframe computers]], like [[The Bernstein Chess Program]] on an [[IBM 704]], used a simple sequential control structure to play the whole [[Chess Game|game]]. As feedback for user interactions or indicating state transitions, for instance if the [[Search|search]] finished with a move played on the internal board, [[Graphics Programming#ASCIIDiagrams|ASCII diagrams]] and [[Move List|move lists]] were printed or displayed on a [[https://en.wikipedia.org/wiki/Teleprinter|teleprinter]], [[https://en.wikipedia.org/wiki/Cathode_ray_tube|CRT (cathode ray tube)]] or any other [[https://en.wikipedia.org/wiki/Computer_terminal|Computer terminal]], to prompt [[https://en.wikipedia.org/wiki/Input_device|input]] which the user had to [[Entering Moves|enter]] by a dedicated or standard teletype <ref>[[http://hans.presto.tripod.com/scan/teletype/28_01.html|TELETYPE CORPORATION - Teletype Model 28 Page Printer (1)]]</ref> [[https://en.wikipedia.org/wiki/Computer_keyboard|keyboard]]. Initially, after start of the program, or during game play, while prompting a move, certain [[https://en.wikipedia.org/wiki/Command_%28computing%29|commands]] may be entered, either to switch modes, to set the game level, to start the game, to force or take-back a move, to switch sides, and whatever else. The usual syntax to input moves is to enter [[Algebraic Chess Notation#PureCoordinateNotation|algebraic coordinates]], that is [[Files|file letter]], [[Ranks|rank number]] of [[Origin Square|origin]] and [[Target Square|target square]] of a move to play, confirmed and sent to the program after entering [[https://en.wikipedia.org/wiki/Carriage_return|carriage return]].

=[[MVC to include|MVC]]= 
[[include page="MVC to include"]]

==CLI== 
//see main article [[CLI|Command Line Interface]]//.

Most current chess engines communicate via a sequential [[https://en.wikipedia.org/wiki/Command-line_interface|command-line interface]], available in all common [[https://en.wikipedia.org/wiki/Operating_system|operating systems]]. [[Pondering]] and the need to enter moves and commands even if the program is "thinking", requires a more complicated control structure and an interruptible search routine. Often engines used [[https://en.wikipedia.org/wiki/Coroutine|coroutines]] to implement internal [[https://en.wikipedia.org/wiki/Context_switch|context switching]] between search and user interaction. Today, it is more common to rely on [[https://en.wikipedia.org/wiki/Multi-threading|multithreading]] abilities of recent operating systems, and to use an explicit [[Thread|I/O-thread]], while the search routine is regularly pondering whether it needs to be interrupted by pending input received by another thread, with the option to asynchronous stop the search.

==Event driven GUIs== 
//see main article [[GUI|Graphical User Interface]]//.

With the advent of operating systems with [[https://en.wikipedia.org/wiki/Graphical_user_interface|graphical user interfaces]], also encouraged by additional input devices such as a [[https://en.wikipedia.org/wiki/Mouse_%28computing%29|computer mouse]] for asynchronous user interaction, the embedding of a chess engine with a classical CLI inside the [[https://en.wikipedia.org/wiki/Event-driven_architecture|event-driven architecture]] of a graphical user interface became more difficult. Today, most programmers rely on an external event driven [[GUI|graphical user interface]] 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]] and the [[UCI|Universal Chess Interface]]. The external GUI application constitutes the 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, which has become disputed issue in playing official [[Tournaments|tournament]] games.

=UI Topics= 
* [[CLI|Command Line Interface]]
* [[Graphics Programming]]
* [[Entering Moves]]
* [[GUI|Graphical User Interface]]
* [[Piece Recognition]]
* [[Sensory Board]]
* [[Voice User Interface]]

=See also= 
* [[Chess Game]]
* [[Dedicated Chess Computers]]
* [[Game Notation]]
* [[Protocols]]
* [[Robots]]
* [[Square Off]]

=Publications= 
* [[Judith Spencer Olson|Judith S. Reitman Olson]], [[http://fordhamgraded.blogspot.de/2011/03/faculty-profiles-dr-william-b-whitten.html|William B. Whitten II]], [[http://www.pubfacts.com/author/Thomas+M+Gruenenfelder|Thomas M. Gruenenfelder]] (**1984**). //[[http://dl.acm.org/citation.cfm?id=2105|A general User-Interface for Creating and Displaying Tree-structures, Hierarchies, Decision Trees, and Nested Menus]]//. in [[http://www.ece.ntua.gr/en/people/faculty?view=profile&id=3|Yannis Vassiliou]] (ed.) //Human Factors and Interactive Computer Systems//. [[https://en.wikipedia.org/wiki/Ablex_Publishing|Ablex Publishing]]
* [[http://arnetminer.org/viewperson.do?naid=10306|Nick Cercone]], [[http://www.sfu.ca/linguistics/people/faculty/mcfetridge.html|Paul McFetridge]], [[http://www.cs.uiuc.edu/homes/hanj/|Jiawei Han]], [[Fred Popowich]] (**1993**). //Human-Computer Interfaces: DBLEARN and System X//. RSKD 1993: 32-43
* [[James R. Slagle]], [[http://wiki.tcl.tk/13|Zbigniew Wieckowski]] a.k.a. Bishak (**1994**). //[[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.2996|Ideas for Intelligent User Interface Design]]//.
* [[http://www.informatik.uni-trier.de/~ley/pers/hd/m/McDaniel:Susan_E=.html|Susan E. McDaniel]], [[http://www.ics.uci.edu/~golson/|Gary M. Olson]], [[Judith Spencer Olson|Judith S. Olson]] (**1994**). //Methods in Search of Methodology - combining HCI and Object Orientation//. [[http://www.informatik.uni-trier.de/~ley/db/conf/chi/chi1994.html#McDanielOO94a|CHI 1994]], [[http://www.ics.uci.edu/~jsolson/publications/Design/McDaniel%20Methods.pdf|pdf]] <ref>[[https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction|Human–computer interaction - Wikipedia]]</ref> <ref>[[https://en.wikipedia.org/wiki/Object-oriented_user_interface|Object-oriented user interface -Wikipedia]]</ref>
* [[Mikhail Donskoy]] (**2001**). //How the Computer-Chess Methods Help to Build Better User Interfaces.// [[Advances in Computer Games 9]]
* [[http://be.linkedin.com/pub/david-urting/4/82b/448|David Urting]], [[http://distrinet.cs.kuleuven.be/people/showMember.do?memberID=u0006685|Yolande Berbers]] (**2003**). //[[https://lirias.kuleuven.be/handle/123456789/132621?mode=full&submit_simple=Show+full+item+record|MarineBlue: A Low-Cost Chess Robot]]//. [[https://en.wikipedia.org/wiki/Katholieke_Universiteit_Leuven|Katholieke Universiteit Leuven]], [[http://dblp.uni-trier.de/db/conf/ra/ra2003.html#UrtingB03|RA 2003]]. [[http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=CE76646F8F250AB5DAA36951D4D28335?doi=10.1.1.83.6961&rep=rep1&type=pdf|pdf]]
* [[http://de.scientificcommons.org/huiyan_chua|Chua Huiyan]], Le Vinh, [[http://www.informatik.uni-trier.de/%7Eley/db/indices/a-tree/k/Kuan:Wong_Lai.html|Wong Lai Kuan]] (**2007**). //Chess Vision//. [[https://en.wikipedia.org/wiki/NUS_School_of_Computing|School of Computing]], [[https://en.wikipedia.org/wiki/National_University_of_Singapore|National University of Singapore]], [[http://www.comp.nus.edu.sg/%7Ecs4243/showcase/chess_vision/Chess-Vision-Presentation.pdf|slides as pdf]]

=Forum Posts= 
* [[http://www.talkchess.com/forum/viewtopic.php?t=38584|Voice synthesis, part 1]] by [[Steven Edwards]], [[CCC]], March 29, 2011
* [[http://www.talkchess.com/forum/viewtopic.php?t=59367|Engines with interfaces for slightly nerdish people]] by [[Peter Berger]], [[CCC]], February 26, 2016

=External Links= 
* [[https://en.wikipedia.org/wiki/User_interface|User interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/User_interface_design|User interface design from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Brain%E2%80%93computer_interface|Brain–computer interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Command-line_interface|Command-line interface from Wikipedia]] » [[CLI|Command Line Interface]]
* [[https://en.wikipedia.org/wiki/Graphical_user_interface|Graphical user interface from Wikipedia]] » [[GUI|Graphical User Interface]]
* [[https://en.wikipedia.org/wiki/History_of_the_graphical_user_interface|History of the graphical user interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction|Human-computer interaction from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Intelligent_user_interface|Intelligent user interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Kinetic_user_interface|Kinetic user interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Natural_user_interface|Natural user interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Object-oriented_user_interface|Object-oriented user interface -Wikipedia]]
* [[https://en.wikipedia.org/wiki/Tangible_User_Interface|Tangible User Interface from Wikipedia]]
* [[https://en.wikipedia.org/wiki/Voice_user_interface|Voice user interface from Wikipedia]]

=References= 
<references />
=What links here?= 
[[include page="User Interface" component="backlinks" limit="100"]]
**[[Home|Up one Level]]**