def creerVirus(corps): global i x, y = 0, 0 FENETRE = data.get_fenetre() if i == -1: x = random.randint(FENETRE[0][0], FENETRE[0][1] - 2 * data.get_objet("virus", "rayon")) y = random.randint(FENETRE[1][0], FENETRE[1][1] - 2 * data.get_objet("virus", "rayon")) game.creerObjet(corps, "virus0", x, y, data.get_objet("virus", "rayon"), data.get_objet("virus", "vitesse"), data.get_objet("virus", "angle"), data.get_objet("virus", "pushUp"), data.get_objet("virus", "pushDown"), data.get_objet("virus", "pushLeft"), data.get_objet("virus", "pushRight"), data.get_objet("virus", "limiteVitesse"), data.get_objet("virus", "acceleration"), math.pi/data.get_objet("virus", "anglePlus"), data.get_objet("virus", "mitoseTime"), None, [0, 0, 0], 0, None) i=0 return True
def lyse(corps, celluleKey): j=0 enemiPopulationLimite = data.get_modeItem("enemiPopulationLimite") x = corps[celluleKey]["x"] y = corps[celluleKey]["y"] rayon = corps[celluleKey]["r"] listePos=[[x, y+rayon/2], [x+rayon*math.cos(math.pi/6)/2, y+rayon*math.sin(math.pi/6)/2], [x-rayon*math.cos(math.pi/6)/2, y+rayon*math.sin(math.pi/6)/2]] listeVirus = game.GET_OBJET("virus") nombreVirus = 0 for k in listeVirus: nombreVirus+=1 for pos in listePos: continuer = 1 while continuer: if nombreVirus<enemiPopulationLimite: if "virus"+str(j) not in corps.keys(): game.creerObjet(corps, "virus"+str(j), pos[0], pos[1], data.get_objet("virus", "rayon"), data.get_objet("virus", "vitesse"), data.get_objet("virus", "angle"), data.get_objet("virus", "pushUp"), data.get_objet("virus", "pushDown"), data.get_objet("virus", "pushLeft"), data.get_objet("virus", "pushRight"), data.get_objet("virus", "limiteVitesse"), data.get_objet("virus", "acceleration"), math.pi/data.get_objet("virus", "anglePlus"), data.get_objet("virus", "mitoseTime"), None, [0, 0, 0], 0, None) continuer=0 else: j+=1 else: continuer=0 return True
def mitose(corps): global i listeCellule = game.GET_OBJET('cellule') listeVirus = game.GET_OBJET("virus") celluleMap = cell.GET_MAP() FENETRE = data.get_fenetre() # Limit of allowed active bacterias enemiPopulationLimite = data.get_modeItem('enemiPopulationLimite') x, y, continuer = 0, 0, 0 # Initializes the initial mitosis if mode.get() is "bacteria": item="bacteria" if i == -1: for celluleKey in listeCellule: continuer = 0 while continuer == 0: x = random.randint(FENETRE[0][0], FENETRE[0][1] - 2 * data.get_objet('bacteria', 'rayon')) y = random.randint(FENETRE[1][0], FENETRE[1][1] - 2 * data.get_objet('bacteria', 'rayon')) game.creerObjet(corps, 'bacteria0', x, y, data.get_objet('bacteria', 'rayon'), data.get_objet('bacteria', 'vitesse'), data.get_objet('bacteria', 'angle'), data.get_objet('bacteria', 'pushUp'), data.get_objet('bacteria', 'pushDown'), data.get_objet('bacteria', 'pushLeft'), data.get_objet('bacteria', 'pushRight'), data.get_objet('bacteria', 'limiteVitesse'), data.get_objet('bacteria', 'acceleration'), math.pi/data.get_objet('bacteria', 'anglePlus'), data.get_objet('bacteria', 'mitoseTime'), data.get_objet('bacteria', 'projectileTime'), [0, 0, 0], 0, None) if collision.collisionPhagocyteBacteria(corps, 'bacteria0') == True and collision.collisionCellule(corps, 'bacteria0', celluleKey, celluleMap) is not False: continuer = 1 else: game.supprimerObjet(corps, 'bacteria0') i = 0 # Process mitosis for key in corps.keys(): if i > enemiPopulationLimite: i = 0 if 'bacteria' in key: if corps[key]['clock'][1] == corps[key]['mitoseTime']: game.creerObjet(corps, 'bacteria' + str(i), corps[key]['x'] + corps[key]['r'] * 2, corps[key]['y'], data.get_objet('bacteria', 'rayon'), data.get_objet('bacteria', 'vitesse'), data.get_objet('bacteria', 'angle'), data.get_objet('bacteria', 'pushUp'), data.get_objet('bacteria', 'pushDown'), data.get_objet('bacteria', 'pushLeft'), data.get_objet('bacteria', 'pushRight'), data.get_objet('bacteria', 'limiteVitesse'), data.get_objet('bacteria', 'acceleration'), math.pi/data.get_objet('bacteria', 'anglePlus'), data.get_objet('bacteria', 'mitoseTime'), data.get_objet('bacteria', 'projectileTime'), [0, 0, 0], 0, None) loiMitose(corps[key], corps['bacteria' + str(i)]) i += 1 corps[key]['clock'][1] = 0 corps[key]['clock'][1] += 1 return True
def creerCellule(corps): global i celluleMap = data.get_celluleMap() if i == -1: for cel in celluleMap: i += 1 game.creerObjet(corps, 'cellule' + str(cel[3]), cel[0], cel[1], data.get_objet('cellule', 'rayon'), data.get_objet('cellule', 'vitesse'), data.get_objet('cellule', 'angle'), data.get_objet('cellule', 'pushUp'), data.get_objet('cellule', 'pushDown'), data.get_objet('cellule', 'pushLeft'), data.get_objet('cellule', 'pushRight'), data.get_objet('cellule', 'limiteVitesse'), data.get_objet('cellule', 'acceleration'), data.get_objet('cellule', 'anglePlus'), data.get_objet('cellule', 'mitoseTime'), data.get_objet('cellule', 'projectileTime'), [0, 0, 0], [[0, 0], [0, 0]], [False, 0, data.get_objet("cellule", "lyseTime")]) i=0 else: listeCellule = game.GET_OBJET('cellule') mitose(corps, celluleMap, listeCellule) return True
def creerProjectile(corps): for key in corps.keys(): if 'bacteria' in key: if corps[key]['projectileTime'] <= corps[key]['clock'][2]: i = 0 continuer = 1 while continuer: if 'projectile' + str(i) not in corps.keys(): game.creerObjet(corps, 'projectile' + str(i), corps[key]['x'], corps[key]['y'], data.get_objet('projectile', 'rayon'), data.get_objet('projectile', 'vitesse'), data.get_objet('projectile', 'angle'), data.get_objet('projectile', 'pushUp'), data.get_objet('projectile', 'pushDown'), data.get_objet('projectile', 'pushLeft'), data.get_objet('projectile', 'pushRight'), data.get_objet('projectile', 'limiteVitesse'), data.get_objet('projectile', 'acceleration'), data.get_objet('projectile', 'anglePlus'), None, None, [0, 0], 0, None) corps[key]['clock'][2] = 0 continuer = 0 i += 1 dynamics.projectileAngle(corps, 'projectile' + str(i - 1)) corps[key]['clock'][2] += 1 return True
def mitose(corps, celluleMap, listeCellule): doubleMitose = 0 celluleManquante = 0 celluleMap=data.get_celluleMap() # Generate a random mitosis for each cell for key in listeCellule: celMap = 0 celMapCible1 = 0 celMapCible2 = 0 celMap = celluleMap[int(key.strip('cellule'))] if celMap[4][0] != -1: celMapCible1 = celluleMap[celMap[4][0]] if celMap[4][1] != -1: celMapCible2 = celluleMap[celMap[4][1]] if celMapCible1 != 0: if celMapCible1[2] == 0: if corps[key]['clock'][1] >= corps[key]['mitoseTime']: game.creerObjet(corps, 'cellule' + str(celMapCible1[3]), celMapCible1[0], celMapCible1[1], data.get_objet('cellule', 'rayon'), data.get_objet('cellule', 'vitesse'), data.get_objet('cellule', 'angle'), data.get_objet('cellule', 'pushUp'), data.get_objet('cellule', 'pushDown'), data.get_objet('cellule', 'pushLeft'), data.get_objet('cellule', 'pushRight'), data.get_objet('cellule', 'limiteVitesse'), data.get_objet('cellule', 'acceleration'), data.get_objet('cellule', 'anglePlus'), data.get_objet('cellule', 'mitoseTime'), data.get_objet('cellule', 'projectileTime'), [0, 0, 0], [[0, 0], [0, 0]], [False, 0, data.get_objet("cellule", "lyseTime")]) corps[key]['clock'][1] = 0 doubleMitose = 1 else: corps[key]['clock'][1] += 1 if celMapCible2 != 0 and not doubleMitose: if celMapCible2[2] == 0: if corps[key]['clock'][1] >= corps[key]['mitoseTime']: game.creerObjet(corps, 'cellule' + str(celMapCible2[3]), celMapCible2[0], celMapCible2[1], data.get_objet('cellule', 'rayon'), data.get_objet('cellule', 'vitesse'), data.get_objet('cellule', 'angle'), data.get_objet('cellule', 'pushUp'), data.get_objet('cellule', 'pushDown'), data.get_objet('cellule', 'pushLeft'), data.get_objet('cellule', 'pushRight'), data.get_objet('cellule', 'limiteVitesse'), data.get_objet('cellule', 'acceleration'), data.get_objet('cellule', 'anglePlus'), data.get_objet('cellule', 'mitoseTime'), data.get_objet('cellule', 'projectileTime'), [0, 0, 0], [[0, 0], [0, 0]], [False, 0, data.get_objet("cellule", "lyseTime")]) corps[key]['clock'][1] = 0 else: corps[key]['clock'][1] += 1 return True
def creerPhagocyte(corps): if 'Phagocyte' not in corps.keys(): creerObjet(corps, 'Phagocyte', data.get_objet('Phagocyte', 'x'), data.get_objet('Phagocyte', 'y'), data.get_objet('Phagocyte', 'rayon'), data.get_objet('Phagocyte', 'vitesse'), data.get_objet('Phagocyte', 'angle'), data.get_objet('Phagocyte', 'pushUp'), data.get_objet('Phagocyte', 'pushDown'), data.get_objet('Phagocyte', 'pushLeft'), data.get_objet('Phagocyte', 'pushRight'), data.get_objet('Phagocyte', 'limiteVitesse'), data.get_objet('Phagocyte', 'acceleration'), math.pi / data.get_objet('Phagocyte', 'anglePlus'), None, None, [0, 0, 0], 0, None) return True