Forum Archive

Script crashes after 20 seconds

Luxi

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

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

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

JonB

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.