Tuesday, May 7, 2019

JSoloSim is intended as a single-person training tool for prospective Jeopardy!® contestants.  It simulates some aspects of the live Jeopardy!® experience, including out-loud reading of clues, buzzer timing dependent on read completion, score-keeping, opponent square selection, daily doubles, etc.

It loads* its data from the J-archive.com site, an unaffiliated fan-generated site, using the url template: http://j-archive.com/showgame.php?game_id=<n>., where  n, the game ID, is any positive number less than 100000.  As of this writing , game IDs have reached 6379 (over 600,000 clues!).

The source code for JSoloSim is written in Java and is available free on GitHub.

When run, JSoloSim presents the familiar Jeopardy! style 6x5 grid of squares with column labels above.

The squares are blank until the  Load  button is pressed.  When pressed, data is loaded from the above web site for the game ID indicated in the  J! game no.  selection spinner.  Or if the  Off-line  box is checked, data is loaded from the local file "local.xml".  The game board blanks if the data is not available.

The   >>  button navigates to the Double Jeopardy! board and then to the Final Jeopardy! board and then to the next higher game id, etc.  The  <<  button does the opposite.

When a game is loaded, the categories appear above the columns and the clue $values appear on the squares. (A category with an appended asterisk has additional information that will display when the category is clicked).

When the user clicks a square (buzzes), its clue is revealed and read aloud by text-to-speech technology*.  At the completion of the reading, the board and controls area backgrounds go yellow while the response-time window is open. The user should then, and not before, click on the square. (Multiple clicks about 300 msecs apart are tolerated)  Note that to be first to buzz, a player may need to start to react before the yellow signal for small values of the editable settings of the response-time window and window latency.

Should the square be a daily-double and daily-doubles are enabled (see setup below) then the user is first prompted for the daily double value and then given 5 seconds to respond. When the response is revealed the user is always credited with a win. If this is not the case then the user should press the Wrong button or the N/A button as appropriate.

If the user has responded in time and the  Capture audio  option is selected, they should then respond orally (in the form of a question of course).

If the user has clicked (buzzed) within the response-time window, (1 sec, editable),  the board background color goes green and the win value is credited to the   Won=  box.  Else  the board background color goes red and the win value is credited to the opponents in the  Lost=  box.  Or if the user does not click at all, the opponents are credited after 5 sec.  These values are cleared for every new game.

After the 5 sec wait, (or another click) the correct response is displayed.  Should the user's response then prove incorrect, the  Wrong  button should be pressed to cancel the win, apply the penalty, and credit the opponent (they may be slow on the buzzer but are always correct).

Should the square be unplayable or whatever, the  N/A  button can be pressed to cancel the win or loss.

The  Right  button need only be pressed to correct accidental pressing of other buttons or if the user feels cheated of their win.

Whenever the opponents get the win, they select the next square.  The category and value are read aloud and highlighted but the user must then click the square (or any other) to continue.

If the  Capture audio  option is selected, the user's vocal response is recorded from the time of the buzzer press until the next click or 5 sec, whichever comes first.  The  Play  button will then play back the last response so the user can confirm whatever.

The user's response time in msecs is displayed in the  Response msecs  box.  Also a tone (the shorter the response time, the higher the frequency) is sounded when buzzing.  The  G R X counts  box shows the number of in-time responses, late responses, and early responses in that order.

If the user buzzes before the Response-time window opens (after the text has been read and a short Live latency delay (20 msecs, editable)),  the buzzer is held inactive for the Early buzz lockout  time (250 msecs, editable), the Controls area flashes red, and a low tone sounds.

All used squares can be clicked at any time without affecting game play.  Clicking will toggle among blank, clue and correct response.  All squares are restored when a board is re-entered.

The Response-time window, Early buzz lockout, live latency and debounce values as well as some values associated with audio hardware may be changed from their default values in a dialog revealed by the  Setup  button.  These values are saved to disk in the same directory as the executable and reloaded at startup.  These values are nominal and their actual values will depend on the speed of the user's computer.  The user may also enable/disable daily doubles and delete the "local.xml" file described below in this dialog.

On the Final Jeopardy! board all squares have the same data.  After 30 secs or a click, whichever is first, the square is always scored as a win.  Presumably the user first writes down their response to simulate the real game and, if incorrect or incomplete, presses the Wrong  button afterwards.

The  Copy  button copies the data of the last square clicked (or all squares in a category if a category is clicked) to the local database file, "local.xml", in the same directory as the executable.  These squares may then be replayed when the  Off-line  option is selected. (Note that changes are not actually written to the database until the program is exited when the user is then asked if  changes should be saved.)

The  Copy  button becomes a  Delete  button when the  Off-line  option is selected.  It then deletes the data of the last square clicked (or all squares in a category if a category is clicked) from the local database. (Note that changes are not actually written to the database until the program is exited when the user is then asked if  changes should be saved.)

The  Help  button displays this web page.

* uses JSoup for data loading and Freetts for text-to-speech.

This software and its author are not affiliated with, sponsored by, or operated by Jeopardy Productions, Inc. or J-archive.com.