Joc de naus X40446


Statement
 

pdf   zip

html

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.

  1. Feu una funció collisio(n1, n2) en que, donades dues llistes n1 i n2 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).
  2. Feu una funció perDestruir(l) en que, donada una llista l 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.
  3. Feu una funció gameOver(l) en que, donada una llista l 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.

Sample session
>>> 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
Information
Author
Gerard Escudero
Language
Catalan
Official solutions
Python
User solutions
Python