The following code seems to make pygame to fail every time it runs. It will run properly, but if tried for a second time, message is:
Le noyau semble planté. Il va redémarrer automatiquement.
The code has some basic functions: 1. it moves the principal body based on the position of mouse pointer. 2. It enables to split up to sixteen parts. 3. every part grows as food is eaten 4. bigger parts lose weight faster.
Also working on:
- Reuniting cells, requires sabving info about split tree.
- adding multi-player. --.--
-
fixing direction quality.
pygame.init()
''' velocidades: lista de listas bidimensionales, velocidad y radio. '''
screensize = (width,height)=(700,700) keys=pygame.key.get_pressed() center = (int(width/2),int(height/2)) run=True velocidades = [[0,0],[1,5],[10,10],[20,20],[5,10]] counter2=0 mouse=0 r = 10
dt=0.1
particles=[]
for i in range(100): xo = random.randrange(width) yo = random.randrange(height) particles.append([xo,yo])
Lista de las partes en que estará dividido el jugador. Debería empezar con una sola.
x,y,vx,vy,a,radio,transparency=center[0],center[1],0,0,0,100,0 partes = [[x,y,vx,vy,a,radio,transparency]]
screen = pygame.display.set_mode(screensize) myfont = pygame.font.SysFont('Comic Sans MS', 30)
while run: pygame.time.delay(50) for event in pygame.event.get(): if event.type == pygame.QUIT: run=False #################################################################posición promedio y posición del mouse promedio = [0,0] mpos = pygame.mouse.get_pos() #################################################################Para crear nuevas partes '''
''' if (event.type == pygame.MOUSEBUTTONDOWN): if mouse==0: mouse=1 if (event.type == pygame.MOUSEBUTTONUP): if mouse == 1: counter2 = 1 mouse=0 if counter2 > 0: partes2=[] if len(partes)<16: for pt in partes: if pt[5]>=10: partes2.append([pt[0],pt[1],30,0,0,pt[5]/2,1]) pt[5]=pt[5]/2 for pa in partes2: partes.append(pa) if len(partes)>16: for i in range(len(partes)-16): n = random.randrange(len(partes2)) del partes[-n] counter2=0partes2=[]
for i in range(len(partes)):
for j in range(len(partes)):
if partes[i][0]==partes[j][0] and partes[i][1]==partes[j][1]:
partes2.append(partes[i])
partes2[-1][5]+=partes[j][5]
break
partes = partes2
#################################################################distancia de la parte al mouse for pt in partes: mdis = ((mpos[0]-pt[0])**2+(mpos[1]-pt[1])**2)**(1/2) mvec = [mpos[0]-pt[0],mpos[1]-pt[1]] #############################################################velocidades en función de radio del mouse y la masa, estas deberían definirse arribe, y hay una variable sin usar : velocidades if mdis >0 and mdis <10: c = 0.1 if mdis >=10: c = 1 else: c=0 if pt[2] > 0: pt[2]-=1 pt[3]+=np.sign(mpos[0]-pt[0])*dt pt[4]+=np.sign(mpos[1]-pt[1])*dt pt[6]=1 else: pt[3],pt[4],pt[6]=0,0,0 pt[0]+=mdis*np.sign(mpos[0]-pt[0])*(1+pt[3])*(c)*dt*1/(pt[5]) pt[1]+=mdis*np.sign(mpos[1]-pt[1])*(1+pt[3])*(c)*dt*1/(pt[5]) ######################################################################################### promedio[0]+=pt[0]/len(partes) promedio[1]+=pt[1]/len(partes) #################################################################vector para mandar promedio centro vector = [center[0]-promedio[0],center[1]-promedio[1]] #################################################################mueve partes a promedio for pt in partes: pt[0]+=vector[0] pt[1]+=vector[1] pt[5]+=(-pt[5]*dt**4) pygame.draw.circle(screen,(255,0,0),(int(pt[0]),int(pt[1])),int(pt[5])) #################################################################dibuja particulas for ob in particles: ob[0]+=vector[0] ob[1]+=vector[1] ########################################################### partículas alimentan partes for pt in partes: if (pt[0]-pt[5]/2)<ob[0]<(pt[0]+pt[5]/2) and (pt[1]-pt[5]/2)<ob[1]<(pt[1]+pt[5]/2): ob[0]=random.randrange(width) ob[1]=random.randrange(height) pt[5]+=1 if ob[0]>width or ob[1]>height: ob[0]=random.randrange(width) ob[1]=random.randrange(height) pygame.draw.circle(screen,(255,0,0),(int(ob[0]),int(ob[1])),2) ####################################################3para borrar ######################etextsurface = myfont.render(str(len(partes)), False, (0, 100, 100))
screen.blit(textsurface,(10,30))
pygame.display.update() screen.fill((100,100,100))pygame.quit()
I can't see which part of the code makes pygame to 'collapse'.
Aucun commentaire:
Enregistrer un commentaire