omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Script crashes after 20 seconds

    Pythonista
    3
    3
    669
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Luxi
      Luxi last edited by

      When I try to run this script and I have a print action in the update function it crashes after ~20 seconds of normal functioning.
      When I remove the print action it doesn’t crash but without a print it is really hard to do debugging.

      Sorry for very messy code

      from scene import *
      #import sound
      import random
      import math
      import Funcs
      import logging
      #import sleep
      A = Action
      
      class MyScene (Scene):
      	
      	def draw(self):
      		pass
      	def setup(self):
      		
      		
      		self.view.update_interval = 1
      		
      		
      
      		
      		#print(get_screen_size())
      		self.squares = {}
      		self.states_all = {}
      		self.square_number = 0		
      		self.x,self.y = 0,0
      		self.x_max_numbers = []
      		self.all_numbers = []
      		
      		while self.y < (get_screen_size()[1] - 400):
      			self.square = SpriteNode('shp:Circle')
      			self.square.color = '#000000'
      			self.square.size = 100,100	
      			
      			self.square.position = self.x,self.y
      			self.add_child(self.square)
      			
      			self.x += 100
      			if self.x > get_screen_size()[0] - 400:
      				self.x_max_numbers.append(self.x)
      				self.x = 0
      				self.y += 100
      			
      			self.squares.update({self.square_number:self.square})
      			
      			self.states_all.update({str(self.square):0})
      			#lol#
      			self.all_numbers.append(self.square_number)
      			self.square_number += 1
      			
      			
      			
      		self.x_max = max(self.x_max_numbers)
      		
      		self.mesh = {}
      		for num in range(self.square_number):
      			
      			meshes = Funcs.finding(num,int(self.x_max / 100),self.square_number - 1,self.y)
      			self.mesh.update({num:meshes})
      		#exit(self.mesh)
      		
      		
      		
      		#print(self.square.children)
      		
      	
      		
      		self.fram = 0	
      		
      		self.pause_mode = False
      		self.pause = SpriteNode('iow:ios7_star_256')
      		self.pause.scale = 0.5
      		self.pause.position = (get_screen_size()[0] / 2), 800 #(get_screen_size()[1] - self.pause.size[1])
      		self.add_child(self.pause)
      		print(self.all_numbers)
      		print('serup fertig')
      		
      		
      		
      		
      		
      		
      		
      #--------------------------------------------------------------------------------------------------------------------
      	def update(self):
      		#for touch in self.touches.values():
      			
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		
      		#self.fram += 1
      		#print(self.fram)
      		#print('update')
      		squares = self.squares
      		mesh = self.mesh
      		square_number = self.square_number
      		states_all = self.states_all
      		#print(6)
      		all_numbers = self.all_numbers
      		
      		for curent_cell in self.all_numbers:
      			#print(curent_cell)
      			#print(states_all)
      			if self.pause_mode == False:
      				#print(6)
      				curent_cell_obj = self.squares[curent_cell]
      				nachbarn = self.mesh[curent_cell]
      				Anzahl_lebend = 0
      				Anzahl_Tot = 0
      				
      				for nachbar in nachbarn:
      					logging.log(10,'hi')
      					state_square = self.squares[nachbar]
      					#print(state_square)
      					state_now = self.states_all[str(state_square)]
      					
      					if state_now == 1:
      						Anzahl_lebend += 1
      					if state_now == 0:
      						Anzahl_Tot += 1
      				alive = True
      				
      				if Anzahl_lebend < 2 or Anzahl_lebend > 3:
      					alive = False
      				if Anzahl_lebend == 2 or Anzahl_lebend == 3:
      					alive = True
      				
      			#	if alive == True:
      				#	self.states_all[str(curent_cell_obj)]	= 1
      					#curent_cell_obj.color = '#ffffff'
      				#else:
      					#self.states_all[str(curent_cell_obj)]	= 0
      					#curent_cell_obj.color = '#000000'
      				#print(Anzahl_lebend)
      				#print(Anzahl_Tot)
      				print(Anzahl_lebend)
      		#Scene.setup(self)
      	
      	
      		
      	def touch_began(self, touch):
      		for obj in self.squares.values():
      				print('touched')
      				if touch.location in obj.bbox:
      					#print(obj.color)
      					if obj.color != (0.0, 0.0, 0.0, 1.0):
      						obj.color = '#000000'
      						self.states_all[obj] = 0
      					else:
      						#print('war nicht ')
      						obj.color = '#ffffff'
      						self.states_all[obj] = 1
      		if touch.location in self.pause.bbox:
      			if self.pause_mode == False:
      				self.pause_mode = True
      			else:
      				self.pause_mode = False
      					
      	def touch_moved(self, touch):
      		pass
      	
      	def touch_ended(self, touch):
      		pass
      
      
      run(MyScene(), show_fps=True) ```
      cvp 1 Reply Last reply Reply Quote 0
      • cvp
        cvp @Luxi last edited by cvp

        @Luxi I wanted to try your code but what is Funcs?

        Comment your print('touched')
        Your crash comes from too much prints

        1 Reply Last reply Reply Quote 0
        • JonB
          JonB last edited by

          A better way to do debugging would be to have a TextNode that you can use to feed text to. Or otherwise change something in the display (e.g, add a shapenode circle that shows up when touched, moves with your finger, and goes away when released). You can add TextNodes that move with each of your other nodes that show the coordinates or other debugging info. And so on.

          Print is a strange one because it both tries to print to a TextNode built into the scene, but it also tries to print to the console if memory serves.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Powered by NodeBB Forums | Contributors