Example #1
0
def loiMitose(objet1, objet2):
	DTMAX, DTMIN = data.get_modeItem('DT_MITOSE_MAX'), data.get_modeItem('DT_MITOSE_MIN')
	dt = 0
	
	# Randomize the first object mitosis time
	dt = random.randint(-DTMIN, DTMAX)
	objet1['mitoseTime'] += dt
	
	# Randomize the second object mitosis time
	dt = random.randint(-DTMIN, DTMAX)
	objet2['mitoseTime'] += dt
	
	return True
Example #2
0
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
Example #3
0
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
Example #4
0
def deplacerCorps(corps):
	intervalDeplacement = data.get_modeItem('intervalDeplacement')	
	nombreEnemi = 0
	
	for key in corps.keys():
		if mode.get() is "bacteria":
			if 'bacteria' in key:
				randomAngle(corps[key])
				nombreEnemi += 1
		elif mode.get() is "virus":
			if "virus" in key:
				randomAngle(corps[key])
				nombreEnemi += 1

		if 'cellule' not in key:	
			if corps[key]['clock'][0] >= intervalDeplacement:
				modifVitesseAngle(corps[key])
				corps[key]['clock'][0] = 0
	
	deplacer(corps, nombreEnemi)
	
	return True
Example #5
0
def deplacer(corps, nombreEnemi):
	global autoriserDeplacement
	global autoriserRebond
	
	vecDeplacement = [0, 0]
	nombreEnemiLimite = data.get_modeItem('nombreEnemiLimite')
	delKey = []
	
	# Gets the object lists
	listeBacteria = game.GET_OBJET('bacteria')
	listeProjectile = game.GET_OBJET('projectile')
	listeCellule = game.GET_OBJET('cellule')
	listeVirus = game.GET_OBJET("virus")
	celluleMap = cell.GET_MAP()
	
	# Move each object
	for key in corps.keys():
		if 'cellule' not in key:
			if corps[key]['angle'] != None:
				vecDeplacement[0] = math.cos(corps[key]['angle']) * corps[key]['vitesse']
				vecDeplacement[1] = math.sin(corps[key]['angle']) * corps[key]['vitesse']
		
		if 'Phagocyte' in key and nombreEnemi>=nombreEnemiLimite or 'Phagocyte' in key and autoriserDeplacement:
			corps[key]['x'] += vecDeplacement[0]
			corps[key]['y'] += vecDeplacement[1]
			autoriserDeplacement = 1
		
		elif 'Phagocyte' not in key and 'cellule' not in key:
			corps[key]['x'] += vecDeplacement[0]
			corps[key]['y'] += vecDeplacement[1]
			
			if 'bacteria' in key:
				for celluleKey in listeCellule:
					corps[celluleKey]['collisionMemory'][1][0] = collision.collisionCellule(corps, key, celluleKey, celluleMap)
					
					if corps[celluleKey]['collisionMemory'][1][0] is False:
						if autoriserRebond[1][0] is True and autoriserRebond[1][1] > 30:
							bounce.change_angle(corps, key, corps[celluleKey]['collisionMemory'][1][1])
							autoriserRebond[1][0] = False
							autoriserRebond[1][1] = 0
					
					else:
						corps[celluleKey]['collisionMemory'][1][1] = corps[celluleKey]['collisionMemory'][1][0]
						autoriserRebond[1][0] = True
			
			autoriserRebond[1][1] += 1
		
		if 'Phagocyte' in key and autoriserDeplacement:
			for bacteriaKey in listeBacteria:
				if collision.collisionCercle(corps['Phagocyte'], corps[bacteriaKey]) is False:
					delKey.append(bacteriaKey)
			for virusKey in listeVirus:
				if collision.collisionCercle(corps['Phagocyte'], corps[virusKey]) is False:
					delKey.append(virusKey)
				
			
			for projectileKey in listeProjectile:
				if collision.collisionCercle(corps['Phagocyte'], corps[projectileKey]) is False:
					if 'Phagocyte' not in delKey:
						delKey.append('Phagocyte')
					if projectileKey not in delKey:
						delKey.append(projectileKey)
			
			for celluleKey in listeCellule:
				corps[celluleKey]['collisionMemory'][0][0] = collision.collisionCellule(corps, key, celluleKey, celluleMap)
				if corps[celluleKey]['collisionMemory'][0][0] is False:
					if autoriserRebond[0][0] is True and autoriserRebond[0][1] > 10:
						bounce.change_angle(corps, key, corps[celluleKey]['collisionMemory'][0][1])
						autoriserRebond[0][0] = False
						autoriserRebond[0][1] = 0
				
				else:
					corps[celluleKey]['collisionMemory'][0][1] = corps[celluleKey]['collisionMemory'][0][0]
					autoriserRebond[0][0] = True
			
			autoriserRebond[0][1] += 1
		
		if 'cellule' in key:
			for projectileKey in listeProjectile:
				if collision.collisionCercle(corps[key], corps[projectileKey]) is False:
					if key not in delKey:
						celluleMap[int(key.strip('cellule'))][2] = 0
						delKey.append(key)
					if projectileKey not in delKey:
						delKey.append(projectileKey)
			if corps[key]["inoculate"][0] is True:
				if corps[key]["inoculate"][1]>=corps[key]["inoculate"][2]:
					virus.lyse(corps, key)
					if key not in delKey:
						celluleMap[int(key.strip('cellule'))][2] = 0
						delKey.append(key)
				else:
					corps[key]["inoculate"][1]+=1

		
		if "virus" in key:
			for celluleKey in listeCellule:
				if collision.collisionCercle(corps[key], corps[celluleKey]) is False:
					delKey.append(key)
					corps[celluleKey]["inoculate"][0]=True
			
		if 'projectile' in key:
			if collision.collisionBord(corps[key]) is False:
				delKey.append(key)
		
		else:
			collision.collisionBord(corps[key])
		
		corps[key]['clock'][0] += 1
	
	# Remove objects
	for key3 in delKey:
		game.supprimerObjet(corps, key3)
	
	return True