import os .path
# from PIL import Image
# from pylab import *
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
cities_list = [ ]
def create_record( city_data) :
city_data = [ x.strip ( ) for x in city_data.split ( ',' ) ]
record = { 'city_name' :city_data[ 0 ] , 'number_of_goblins' :int ( city_data[ 1 ] ) , 'number_of_trolls' :int ( city_data[ 2 ] ) , 'number_of_ogres' :int ( city_data[ 3 ] ) , 'city_x' :int ( city_data[ 4 ] ) , 'city_y' :int ( city_data[ 5 ] ) }
cities_list.append ( record)
def calculate_city_threat_level( record) :
goblins = record[ 'number_of_goblins' ]
trolls = record[ 'number_of_trolls' ]
ogres = record[ 'number_of_ogres' ]
city_threat_points = 3 *goblins + 6 *trolls + 9 *ogres
city_threat_level = 5 *( ( city_threat_points/float ( 100 ) ) +1 )
return city_threat_level
def setup( ) :
# input from file "invasion_data.txt"
fname = "invasion_data.txt"
# read all names in the file
with open ( fname) as f:
content = f.readlines ( )
# remove newline character '\n' at the end of each line to create a list of city data
records = [ x.strip ( ) for x in content]
map ( create_record, records)
# read image to array
img= mpimg.imread ( 'fantasy_map.png' )
# plot the image
imgplot = plt.imshow ( img)
# some points
x = [ 100 , 100 , 400 , 400 ]
y = [ 200 , 500 , 200 , 500 ]
# # plot the points with red star-markers
# plot(x,y,'r*')
# # line plot connecting the first two points
# plot(x[:2],y[:2])
# # add title and show the plot
# title('Plotting: "empire.jpg"')
# show()
aW1wb3J0IG9zLnBhdGgKIyBmcm9tIFBJTCBpbXBvcnQgSW1hZ2UKIyBmcm9tIHB5bGFiIGltcG9ydCAqCmltcG9ydCBtYXRwbG90bGliLnB5cGxvdCBhcyBwbHQKaW1wb3J0IG1hdHBsb3RsaWIuaW1hZ2UgYXMgbXBpbWcKaW1wb3J0IG51bXB5IGFzIG5wCgoKY2l0aWVzX2xpc3QgPSBbXQoKZGVmIGNyZWF0ZV9yZWNvcmQoY2l0eV9kYXRhKToKICBjaXR5X2RhdGEgPSBbeC5zdHJpcCgpIGZvciB4IGluIGNpdHlfZGF0YS5zcGxpdCgnLCcpXQogIHJlY29yZCA9IHsnY2l0eV9uYW1lJzpjaXR5X2RhdGFbMF0sJ251bWJlcl9vZl9nb2JsaW5zJzppbnQoY2l0eV9kYXRhWzFdKSwnbnVtYmVyX29mX3Ryb2xscyc6aW50KGNpdHlfZGF0YVsyXSksJ251bWJlcl9vZl9vZ3Jlcyc6aW50KGNpdHlfZGF0YVszXSksJ2NpdHlfeCc6aW50KGNpdHlfZGF0YVs0XSksJ2NpdHlfeSc6aW50KGNpdHlfZGF0YVs1XSl9CiAgY2l0aWVzX2xpc3QuYXBwZW5kKHJlY29yZCkKICAKZGVmIGNhbGN1bGF0ZV9jaXR5X3RocmVhdF9sZXZlbChyZWNvcmQpOgogIGdvYmxpbnMgPSByZWNvcmRbJ251bWJlcl9vZl9nb2JsaW5zJ10KICB0cm9sbHMgPSByZWNvcmRbJ251bWJlcl9vZl90cm9sbHMnXQogIG9ncmVzID0gcmVjb3JkWydudW1iZXJfb2Zfb2dyZXMnXQogIGNpdHlfdGhyZWF0X3BvaW50cyA9IDMqZ29ibGlucyArIDYqdHJvbGxzICsgOSpvZ3JlcwogIGNpdHlfdGhyZWF0X2xldmVsID0gNSooKGNpdHlfdGhyZWF0X3BvaW50cy9mbG9hdCgxMDApKSsxKQogIHJldHVybiBjaXR5X3RocmVhdF9sZXZlbAoKZGVmIHNldHVwKCk6CiAgIyBpbnB1dCBmcm9tIGZpbGUgImludmFzaW9uX2RhdGEudHh0IgogIGZuYW1lID0gImludmFzaW9uX2RhdGEudHh0IgogIAogICMgcmVhZCBhbGwgbmFtZXMgaW4gdGhlIGZpbGUKICB3aXRoIG9wZW4oZm5hbWUpIGFzIGY6CiAgICAgIGNvbnRlbnQgPSBmLnJlYWRsaW5lcygpCiAgICAgIAogICMgcmVtb3ZlIG5ld2xpbmUgY2hhcmFjdGVyICdcbicgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUgdG8gY3JlYXRlIGEgbGlzdCBvZiBjaXR5IGRhdGEKICByZWNvcmRzID0gW3guc3RyaXAoKSBmb3IgeCBpbiBjb250ZW50XQogIAogIG1hcChjcmVhdGVfcmVjb3JkLCByZWNvcmRzKQogIAoKIyByZWFkIGltYWdlIHRvIGFycmF5CmltZz1tcGltZy5pbXJlYWQoJ2ZhbnRhc3lfbWFwLnBuZycpCgoKIyBwbG90IHRoZSBpbWFnZQppbWdwbG90ID0gcGx0Lmltc2hvdyhpbWcpCgojIHNvbWUgcG9pbnRzCnggPSBbMTAwLDEwMCw0MDAsNDAwXQp5ID0gWzIwMCw1MDAsMjAwLDUwMF0KCiMgIyBwbG90IHRoZSBwb2ludHMgd2l0aCByZWQgc3Rhci1tYXJrZXJzCiMgcGxvdCh4LHksJ3IqJykKCiMgIyBsaW5lIHBsb3QgY29ubmVjdGluZyB0aGUgZmlyc3QgdHdvIHBvaW50cwojIHBsb3QoeFs6Ml0seVs6Ml0pCgojICMgYWRkIHRpdGxlIGFuZCBzaG93IHRoZSBwbG90CiMgdGl0bGUoJ1Bsb3R0aW5nOiAiZW1waXJlLmpwZyInKQojIHNob3coKQoKICA=