game_matrix.py

#! /usr/bin/python3
# ==================================================================
# 3D Matrix Game - Main Program
#
# Create random links between nodes in the matrix. Using the Links,
# find a path from the matrix start node to the end node.
#
# ------------------------------------------------------------------
# Notes:
#
# 1. the matrix is a cube (n by n by n) of nodes
#
# ------------------------------------------------------------------
# Useful links:
#
# a. docs.python.org/3/library/random.html
#
# ==================================================================


import game_matrix_config as cfg
import game_matrix01      as gm1
import game_matrix_menu   as mnu


# ---- global data -------------------------------------------------
# CurrentNode  matrix current (working) node
# Debug        flag - print debug messages
# EndNode      matrix path end node
# MatrixEdge   nodes per matrix dimensions (x,y,z)
# StartNode    matrix path start node
# Verbose      flag - print verbose messages
# ------------------------------------------------------------------

global CurrentNode
global Debug
global EndNode
global MatrixEdge
global StartNode
global Verbose


# --------------------------------------------------------------
# ---- main ----------------------------------------------------
# --------------------------------------------------------------

if __name__ == '__main__':

    # ---- calculate the start and end node coordinates
    # ---- for the path thru the matrix

    sx,sy,sz,ex,ey,ez = gm1.start_end_nodes(cfg.MatrixEdge)

    if cfg.Verbose or cfg.Debug:
        print('Start node: {},{},{}  End node: {},{},{}'.
        format(sx,sy,sz,ex,ey,ez))
        mnu.pause_program()

    # ---- create 3D matrix

    mtrx = gm1.create_matrix(cfg.MatrixEdge,100)

    # ---- set current node

    cfg.CurrentNode = mtrx[sx][sy][sz]
    cfg.StartNode   = mtrx[sx][sy][sz]
    cfg.EndNode     = mtrx[ex][ey][ez]

    # ---- build matrix path link

    ##build_matrix_path(mtrx,cfg.MatrixEdge,
    ##    cfg.StartNode,cfg.EndNode)

    # ---- main menu

    mnu.main_menu(mtrx,'Find A Path Thru The 3D Matrix')
    print()