-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapplication.py
More file actions
59 lines (46 loc) · 2.02 KB
/
application.py
File metadata and controls
59 lines (46 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import pygame
from SorterButton import SorterButton
from RandomizeButton import RandomizeButton
from Colors import *
from Data import Data
from EventHandler import EventHandler
from Renderer import Renderer
from BubbleSorter import BubbleSorter
from SelectionSorter import SelectionSorter
from InsertionSorter import InsertionSorter
from MergeSorter import MergeSorter
from QuickSorter import QuickSorter
class Application:
sorter = None
def __init__(self, window):
pygame.init()
self.window = window
self.event_handler = EventHandler()
self.renderer = Renderer(window)
self.data = Data(10, 300, 64)
self.buttons = [RandomizeButton(BLACK, 25, 25, 125, 25, 'Randomize Data', WHITE, self.data),
SorterButton(BLACK, 175, 25, 125, 25, 'Bubble Sort', WHITE, BubbleSorter(self.renderer), self.data),
SorterButton(BLACK, 325, 25, 125, 25, 'Selection Sort', WHITE, SelectionSorter(self.renderer), self.data),
SorterButton(BLACK, 475, 25, 125, 25, 'Insertion Sort', WHITE, InsertionSorter(self.renderer), self.data),
SorterButton(BLACK, 625, 25, 125, 25, 'Merge Sort', WHITE, MergeSorter(self.renderer), self.data),
SorterButton(BLACK, 775, 25, 125, 25, 'Quick Sort', WHITE, QuickSorter(self.renderer), self.data)
]
self.event_handler.register_buttons(self.buttons)
self.renderer.register_buttons(self.buttons)
self.renderer.register_data(self.data)
def run(self):
while 1:
# check if any new events have occured
self.event_handler.handle_events()
# render window
self.renderer.refresh()
self.renderer.render_buttons()
self.renderer.render_data()
# update display
pygame.display.update()
def main():
window = pygame.display.set_mode((925, 650))
app = Application(window)
app.run()
if __name__ == "__main__":
main()