CC calculation: add - arnthor89/pygame GitHub Wiki
CC calculation add
Function
def add(self, *sprites, **kwargs):
"""add a sprite or sequence of sprites to a group
LayeredUpdates.add(*sprites, **kwargs): return None
If the sprite you add has an attribute _layer, then that layer will be
used. If **kwarg contains 'layer', then the passed sprites will be
added to that layer (overriding the sprite._layer attribute). If
neither the sprite nor **kwarg has a 'layer', then the default layer is
used to add the sprites.
"""
if not sprites:
return
if 'layer' in kwargs:
layer = kwargs['layer']
else:
layer = None
for sprite in sprites:
# It's possible that some sprite is also an iterator.
# If this is the case, we should add the sprite itself,
# and not the iterator object.
if isinstance(sprite, Sprite):
if not self.has_internal(sprite):
self.add_internal(sprite, layer)
sprite.add_internal(self)
else:
try:
# See if sprite is an iterator, like a list or sprite
# group.
self.add(*sprite, **kwargs)
except (TypeError, AttributeError):
# Not iterable. This is probably a sprite that is not an
# instance of the Sprite class or is not an instance of a
# subclass of the Sprite class. Alternately, it could be an
# old-style sprite group.
if hasattr(sprite, '_spritegroup'):
for spr in sprite.sprites():
if not self.has_internal(spr):
self.add_internal(spr, layer)
spr.add_internal(self)
elif not self.has_internal(sprite):
self.add_internal(sprite, layer)
sprite.add_internal(self)
Control flow graph
def add(self, *sprites, **kwargs):
#1
if not sprites:
#3
return
#2
if 'layer' in kwargs:
#5
layer = kwargs['layer']
else:
#6
layer = None
#4
for sprite in sprites:
#8
if isinstance(sprite, Sprite):
#10
if not self.has_internal(sprite):
#13
self.add_internal(sprite, layer)
sprite.add_internal(self)
#12
else:
#11
try:
#15
self.add(*sprite, **kwargs)
except (TypeError, AttributeError):
#16
if hasattr(sprite, '_spritegroup'):
#18
for spr in sprite.sprites():
#21
if not self.has_internal(spr):
#23
self.add_internal(spr, layer)
spr.add_internal(self)
#22
#20
elif not self.has_internal(sprite):
#19
self.add_internal(sprite, layer)
sprite.add_internal(self)
#17
#14
#9
#7
https://i.imgur.com/viADGzt.png
Calculation
- Edges = 33
- Nodes = 23
- Connected components = 1
33 - 23 + 2*1 = 12