User+Interface


 * 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 [|Human-computer interaction] takes place . The [|user] [|interface] includes hardware (physical) and software (logical) components, and allow users to manipulate a system ([|Input]), i.e. to enter moves inside a chess program, and the system to indicate the effects of the users' manipulation ([|Output]), i.e. display moves and positions. Chess programs require support by the underlaying [|BIOS] and [|operating system], accessible by embedded programming language features, or via an [|Application programming interface] (API) of a [|standard] or external [|library].

Dedicated chess computers have their own proprietary [|Input/output] systems and programs, a robot, a mechanical [|intelligent agent], may interact like an human player, recognizing the moves either by incorporating a sensory board, or more sophisticated by [|computer vision] and [|real-time] video [|image processing], and moving pieces with a [|mechatronical] [|actuator] and [|end effector]. || toc  =The Game Loop= Early chess programs, running on [|mainframe computers], like The Bernstein Chess Program on an IBM 704, used a simple sequential control structure to play the whole game. As feedback for user interactions or indicating state transitions, for instance if the search finished with a move played on the internal board, ASCII diagrams and move lists were printed or displayed on a [|teleprinter], [|CRT (cathode ray tube)] or any other [|Computer terminal], to prompt [|input] which the user had to enter by a dedicated or standard teletype [|keyboard]. Initially, after start of the program, or during game play, while prompting a move, certain [|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 coordinates, that is file letter, rank number of origin and target square of a move to play, confirmed and sent to the program after entering [|carriage return].
 * User Interface of [|The Turk]    ||~   ||^   ||

=MVC= include page="MVC to include"

CLI
//see main article Command Line Interface//.

Most current chess engines communicate via a sequential [|command-line interface], available in all common [|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 [|coroutines] to implement internal [|context switching] between search and user interaction. Today, it is more common to rely on [|multithreading] abilities of recent operating systems, and to use an explicit 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 Graphical User Interface//.

With the advent of operating systems with [|graphical user interfaces], also encouraged by additional input devices such as a [|computer mouse] for asynchronous user interaction, the embedding of a chess engine with a classical CLI inside the [|event-driven architecture] of a graphical user interface became more difficult. Today, most programmers rely on an external event driven graphical user interface applications using [|standard streams] or [|pipelines] to communicate with the GUI via protocols such as the Chess Engine Communication Protocol and the 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, 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 tournament games.

=UI Topics=
 * Command Line Interface
 * Graphics Programming
 * Entering Moves
 * 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 S. Reitman Olson, [|William B. Whitten II], [|Thomas M. Gruenenfelder] (**1984**). //[|A general User-Interface for Creating and Displaying Tree-structures, Hierarchies, Decision Trees, and Nested Menus]//. in [|Yannis Vassiliou] (ed.) //Human Factors and Interactive Computer Systems//. [|Ablex Publishing]
 * [|Nick Cercone], [|Paul McFetridge], [|Jiawei Han], Fred Popowich (**1993**). //Human-Computer Interfaces: DBLEARN and System X//. RSKD 1993: 32-43
 * James R. Slagle, [|Zbigniew Wieckowski] a.k.a. Bishak (**1994**). //[|Ideas for Intelligent User Interface Design]//.
 * [|Susan E. McDaniel], [|Gary M. Olson], Judith S. Olson (**1994**). //Methods in Search of Methodology - combining HCI and Object Orientation//. [|CHI 1994], [|pdf]
 * Mikhail Donskoy (**2001**). //How the Computer-Chess Methods Help to Build Better User Interfaces.// Advances in Computer Games 9
 * [|David Urting], [|Yolande Berbers] (**2003**). //[|MarineBlue: A Low-Cost Chess Robot]//. [|Katholieke Universiteit Leuven], [|RA 2003]. [|pdf]
 * [|Chua Huiyan], Le Vinh, [|Wong Lai Kuan] (**2007**). //Chess Vision//. [|School of Computing], [|National University of Singapore], [|slides as pdf]

=Forum Posts=
 * [|Voice synthesis, part 1] by Steven Edwards, CCC, March 29, 2011
 * [|Engines with interfaces for slightly nerdish people] by Peter Berger, CCC, February 26, 2016

=External Links=
 * [|User interface from Wikipedia]
 * [|User interface design from Wikipedia]
 * [|Brain–computer interface from Wikipedia]
 * [|Command-line interface from Wikipedia] » Command Line Interface
 * [|Graphical user interface from Wikipedia] » Graphical User Interface
 * [|History of the graphical user interface from Wikipedia]
 * [|Human-computer interaction from Wikipedia]
 * [|Intelligent user interface from Wikipedia]
 * [|Kinetic user interface from Wikipedia]
 * [|Natural user interface from Wikipedia]
 * [|Object-oriented user interface -Wikipedia]
 * [|Tangible User Interface from Wikipedia]
 * [|Voice user interface from Wikipedia]

=References= =What links here?= include page="User Interface" component="backlinks" limit="100"
 * Up one Level**