示例#1
0
    def finalSave(self, name, description):
        self.savesDB = saves.Database()

        if name.get() != '':
            try:
                if self.sim_type == 'a':
                    self.saveData = [name.get(), description.get(1.0, 'end'), self.sim_objects[0],
                                     [self.dataMerge[0], self.dataMerge[4], self.functions[0].convert_to_string(), self.functions[1].convert_to_string()]]

                elif self.sim_type == 'c':
                    for obj in self.sim_objects:
                        obj.position[0] = obj.position[0]/px_m
                        
                    self.saveData = [name.get(), description.get(1.0, 'end'), self.sim_objects, [self.dataMerge[0],
                                     self.dataMerge[1], self.dataMerge[2], self.dataMerge[3], self.dataMerge[4],
                                      self.dataMerge[5], self.dataMerge[6], self.dataMerge[7], self.dataMerge[8]]]

                self.savesDB.save(self.sim_type, self.saveData)
                self.savesDB.finish()

                self.parent.newScreen(self.saveScreen, 'b')

            except Exception as err:
                self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(err))
            
        else:
            self.error = menus.ErrorScreen('You have not given a name for the save.')
    def newScreen(self, old, option):

        if option == 'p':
            self.begin(old, option, [], [])

        elif option == 'e':
            self.exitCheck = menus.ErrorScreen(
                'Are you sure you want to quit?', 'e', self)

        else:

            old.discard()
            if option == 'b':
                m = menus.MainMenu(window, self)
                m.create()

            if option == 'l':
                self.simulationDB = saves.Database()
                self.saveData = self.simulationDB.load_for_menu()

                load_menu = menus.LoadMenu('Saved Simulations', window,
                                           self.saveData, self)
                load_menu.create()
                load_menu.updateDesc()

            if option == 'c':
                collisions_menu = menus.BaseMenu('Collisions Settings', window,
                                                 3, 6, self)
                collisions_menu.display(self.top1, self.bottom1, option)

            if option == 'a':
                acceleration_menu = menus.BaseMenu(
                    'Variable Acceleration Settings', window, 5, 4, self)
                acceleration_menu.display(self.top2, self.bottom2, option)
示例#3
0
    def update_cn(self, data):
        try:
            self.target.position[0] = int(data[0].get()) * px_m
            self.target.height = int(data[1].get()) * px_m

        except Exception as err:
            self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(err))
示例#4
0
    def new_arrow(self, canvas, data):
        try:
            self.arrow.refresh(self, self.canvas, float(data[5].get()), float(data[6].get()),
                            [200, int(data[2].get())], float(data[3].get()), float(data[4].get()), float(data[7].get()))

            self.arrow.canvas.coords(self.arrow.Arrow, self.arrow.position[0], self.arrow.height - self.arrow.position[1],
                               self.arrow.position[0] - self.arrow.length * math.cos(self.arrow.angle),
                               self.arrow.height - (self.arrow.position[1] - self.arrow.length * math.sin(self.arrow.angle)))

            self.arrow.time = 0
            if not self.arrow.pause:
                self.arrow.pause = True
                self.simDisplay.b_pause.config(text = 'Resume')
            
        except Exception as err:
            self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(err))
示例#5
0
    def run(self, data_top, data_bottom):
        if self.sim_type != 'p':
            self.sim_data = self.getData(self.sim_id, data_top, data_bottom)

            if self.sim_data[0] != 'e':

                if self.sim_type == 'c':
                    self.simDisplay.infoBox(self.sim_objects)

                if self.sim_type == 'a':
                    self.simDisplay.infoBox(self.functions)

                for i in range(len(self.sim_objects)):
                    ball = self.sim_objects[i]
                    ball.infobox = self.simDisplay.itemBoxes
                    ball.timeLabel = self.simDisplay.l_time
                    ball.play()

                if self.sim_objects[0].pause:
                    self.simDisplay.b_pause.config(text = 'Resume')

            else:
                self.error = menus.ErrorScreen('Your input was not understood, please try again.\n\n' + str(self.sim_data[1]))
                self.parent.newScreen(self.simDisplay, 'b')
                
        else:
            self.simDisplay.drawInputs(projectiles_input)
            self.target = Target(self.canvas, self.window, 'red', 200, 50, [600, 0])
            self.target.play()

            self.arrow = Arrow(self, self.canvas, 0, 0, [200, -5000], 1, 0, 0)
            self.arrow.infobox = self.simDisplay.infoBox([])
            self.arrow.timeLabel = self.simDisplay.l_time
            self.arrow.play()

            self.sim_objects = [self.arrow, self.target]
            if self.arrow.pause:
                self.simDisplay.b_pause.config(text = 'Resume')