Notes for game players (Jeff Owens 9-2-2019) -------------------------------------------- pinochle game can be installed and run in three ways. 1. If on a 64-bit linux system. Install the .deb file using dpkg or on most systems simply click on it from a file browser. A entry should now be placed on system menu. If not, run it from terminal, or execute from /usr/local/bin 2. On a 64-bit linux system, find the file "pino" and execte it. Do not include the quotes. 3. The python file pino.py can be executed by python3 if the tkinter library is installed. Switch to the directory with pino.py and directory /image and type ./pino.py Rules for pinochle vary a little, but most rules found with google will work. To select a card, just click on it. To deselect, just click again. Notes for developers -------------------- File descriptions: pygame_pino.py - first attempt to write a pinochle game, abandoned pino.py - current pinochle source, uses python & tkinter library run - shell script to run pino.py and put debug info in "out" /image - directory with graphics for cards, plus deck /pino_dist - distribution files for pyinstaller and debian /pino_dist/mak - runs pyinstaller to create a single executable (debug print statements should be stripped from source file pino.py before running mak) /pino_dist/make_deb/mak - creates a debian install package. (should update version information before) Design info: Warning - Global data and a form of GOTO was used to build program. This is considered bad programming practice by many, but have been doing it for 50 years with great success (grin). One simple concept is necessary to understand the program. It is controlled by a data table called ctrl_table. A very small loop at end of program, executes each line of the control_table. One line in the table defines a program state with the following information: 1. program state to display in center of window 2. flag telling if a wait for event is needed 3. initial function to execute 4. 4 functions to execute if buttons pressed 5. text to go on 4 buttons 6. final function to execute at end A mouse driver runs along side the table processing and is used to select cards for play. It is possible to execute any line in table by changing a pointer the control loop uses. This creates a GOTO statement. Normally, the final function in each line decides where to go next. Usually, this is next entry in table. Tried to use OOP design, but did not like the result. Instead this is old style proceedural programming. Use of the control table eliminates several indentation levels in code and creates some interesting programming. If you avoid changing the pointer to control loop, the program will keep executing the same entry in table. This create a loop. Several other loops are created by setting the control pointer to previous table entries.