# HG changeset patch # User Rizmari Versfeld # Date 1336594453 -7200 # Node ID 1085bbed254f8afce9daa56152e927bf27527c61 # Parent 80fa87ac505e95b5ebeb832487b7ba275437fb99# Parent 531eb3239da29d037cf71cc43fadb0bfb1749449 merge diff -r 531eb3239da2 -r 1085bbed254f gamelib/visualize.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gamelib/visualize.py Wed May 09 22:14:13 2012 +0200 @@ -0,0 +1,38 @@ +import networkx + +import matplotlib.pyplot as plt + +import pylab + +from gamelib import research +from gamelib import schematics +from gamelib.lab import Lab + + +def construct_research_tree(lab): + rt = networkx.DiGraph() + for research in lab.new_research: + rt.add_node(research, label=research.NAME, color='green') + for research in lab.new_research: + for prereq in research.PREREQUISITES: + rt.add_edge(prereq[0], research, weight=1.0 / prereq[1], \ + label=prereq[1], color='green') + for schematic in lab.new_schematics: + rt.add_node(schematic, label=schematic.NAME, color='red') + for schematic in lab.new_schematics: + for prereq in schematic.PREREQUISITES: + rt.add_edge(prereq[0], schematic, weight=1.0 / prereq[1], \ + label=prereq[1], color='red', size=schematic.COST / 10) + return rt + + +def draw(rt): + agraph = networkx.to_agraph(rt) + agraph.graph_attr['label'] = 'Research Tree' + agraph.write('research_tree.dot') + + +def main(): + lab = Lab({'science' : {}}) + research_tree = construct_research_tree(lab) + draw(research_tree) diff -r 531eb3239da2 -r 1085bbed254f run_visualization.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run_visualization.py Wed May 09 22:14:13 2012 +0200 @@ -0,0 +1,8 @@ +#! /usr/bin/env python +''' +Requires graphviz, pygraphviz, and networkx +''' + + +from gamelib import visualize +visualize.main()