Volem desenvolupar un joc de naus espacials. En cada partida hi haurà un conjunt de naus que pertanyen a diferents equips. L’objectiu del joc és evitar les col·lisions amb altres anus (ja siguin o no del mateix equip). En cas de col·lisió les naus queden destruides. Cada nau ha de tenir com a informació el seu radi la posicion en el pla l’equip al que pertany i si està en funcionament o no. A l’exemple següent, la prima nau té un radi de 10, és a la posició (0, 0), pertany a l’equip ’blau’ i no ha estat destruida.
l = [[10, 0, 0, 'blau', True],\
[20, 200, 0, 'blau', True],\
[10, 0, 200, 'vermell', True],\
[20, 200, 200, 'vermell', True],\
[10, 100, 100, 'verd', True],\
[20, 175, 10, 'verd', True]]
Es demanen els codis de diverses funcions. Seguiu el format dels exemples que es mostren a sota. En tots els enunciats podeu suposar que sempre hi ha dades.
Feu una funció @collisio(n1, n2)@ en que, donades dues llistes i que representen dues naus, retorni si han col·lisionat entre elles (mirant si la distància euclidea entre les dues naus és més petita que la suma de radis i si les dues estan en funcionament).
Feu una funció @perDestruir(l)@ en que, donada una llista com la mostrada en l’exemple, retorni la posició a la llista de totes les naus que han de ser destruides per haver col·lisionat en una llista ordenada.
Feu una funció @gameOver(l)@ en que, donada una llista com la mostrada en l’exemple, retorni si el joc s’ha acabat. És a dir, si no hi ha més d’un equip amb naus amb funcionament.
Les tres funcions valen 20, 30 i 50 punts respectivament.
>>> l = [[10, 0, 0, 'blau', True],\ ... [20, 200, 0, 'blau', True],\ ... [10, 0, 200, 'vermell', True],\ ... [20, 200, 200, 'vermell', True],\ ... [10, 100, 100, 'verd', True],\ ... [20, 175, 10, 'verd', True]] >>> collisio(l[1], l[5]) True >>> collisio(l[0], l[1]) False >>> perDestruir(l) [1, 5] >>> gameOver(l) False