77 lines
3.0 KiB
Python
77 lines
3.0 KiB
Python
|
import pygame
|
||
|
from Graph import Graph
|
||
|
from Node import Node
|
||
|
from globals import *
|
||
|
|
||
|
def main():
|
||
|
pygame.init()
|
||
|
screen = pygame.display.set_mode((WIDTH, HEIGHT))
|
||
|
clock = pygame.time.Clock()
|
||
|
|
||
|
running = True
|
||
|
graph = Graph(screen, file="finalGraph.txt")
|
||
|
graph.fromFile(False)
|
||
|
isNodeUnderMouse = False
|
||
|
node1 = None
|
||
|
node2 = None
|
||
|
|
||
|
while (running):
|
||
|
isNodeUnderMouse = False
|
||
|
for event in pygame.event.get():
|
||
|
if event.type == pygame.QUIT:
|
||
|
file = open(input("Where would you like to save the graph: "),"w")
|
||
|
for i in graph.links:
|
||
|
file.write(i[0].text + " " + i[1].text + " " + str(i[2]) + " " + i[3] + "\n")
|
||
|
file.close()
|
||
|
running = False
|
||
|
if event.type == pygame.KEYDOWN:
|
||
|
if event.key == pygame.K_SPACE:
|
||
|
find = input("Name of node: ")
|
||
|
for i in graph.nodes:
|
||
|
if i.text == find:
|
||
|
i.color = BLUE
|
||
|
if event.type == pygame.MOUSEBUTTONUP:
|
||
|
mouseX, mouseY = pygame.mouse.get_pos()
|
||
|
for i in graph.nodes:
|
||
|
if(mouseX > i.pos[0] - i.radius and \
|
||
|
mouseY > i.pos[1] - i.radius and \
|
||
|
mouseX < i.pos[0] + i.radius and \
|
||
|
mouseY < i.pos[1] + i.radius):
|
||
|
graph.drawLinks(i)
|
||
|
if (node1):
|
||
|
node2 = i
|
||
|
description = input("Description of link: ")
|
||
|
if (description != "no"):
|
||
|
graph.links.append([node1, node2, 1.0, description])
|
||
|
node2 = None
|
||
|
node1 = None
|
||
|
elif (not node1 and not node2):
|
||
|
node1 = i
|
||
|
isNodeUnderMouse = True
|
||
|
if (not isNodeUnderMouse):
|
||
|
newNode = Node(pos=(mouseX, mouseY), vel=(0,0), text = input("New node text: "))
|
||
|
graph.nodes.append(newNode)
|
||
|
node1 , node2 = (None, None)
|
||
|
screen.fill(BLACK)
|
||
|
|
||
|
graph.draw()
|
||
|
mouseX, mouseY = pygame.mouse.get_pos()
|
||
|
for i in graph.nodes:
|
||
|
if(mouseX > i.pos[0] - i.radius and \
|
||
|
mouseY > i.pos[1] - i.radius and \
|
||
|
mouseX < i.pos[0] + i.radius and \
|
||
|
mouseY < i.pos[1] + i.radius):
|
||
|
i.color = GREEN
|
||
|
if (i not in graph.nodesUnderMouse):
|
||
|
graph.nodesUnderMouse.append(i)
|
||
|
graph.drawLinks(i)
|
||
|
else:
|
||
|
if i in graph.nodesUnderMouse:
|
||
|
graph.nodesUnderMouse.remove(i)
|
||
|
if (i.color != BLUE):
|
||
|
i.color = RED
|
||
|
pygame.display.flip()
|
||
|
clock.tick(60)
|
||
|
if __name__ == "__main__":
|
||
|
main()
|