---
# System prepended metadata

title: Amic invisible

---

# Amic invisible

## Objectiu
* Crear una app que permeti fer les assignacions de l'amic invisible
* Aprendre a treballar amb llistes

## Disseny
Realitzeu una pantalla inicial amb aquest aspecte:
(pot ser els hi donem programat inicialment)
![](https://i.imgur.com/pQmOAnM.png)

## Programació

### Afegir participants

Anirem afegint els noms a la llista dels participants.
Per això es defineix una llista 
![](https://i.imgur.com/pE6I8Dg.png)

I el botó on posar *Add* fem que el nom escrit al camp de text s'afegeix a la llista de participants.

![](https://i.imgur.com/OMD8NBq.png)

### Mostrar els particpants per pantalla

Al clicar al botó participants volem que mostri per pantalla tots els participants. Això es fa mostrant tots els elements de la llista.
Per això hi ha un bucle que itera sobre tots els elements de la llista:
![](https://i.imgur.com/woUzNZv.png)

I dins el bucle heu d'anar afegint els noms dels participants separats per un salt de línia a l'etiqueta resultat.

![](https://i.imgur.com/hgpCtMe.png)

### Botó de reset

Ha de buidar la llista de participants. Tornar a assignar-li una llista buida.

### Generar

És el botó encarregat de fer les assignacions.

#### Variables
Per això crearem les variables:
- parelles : text on hi haurà les assigancions, a l'estil pep -> maria (on Pep li toca fer regal a Maria)
- candidats : llista on es guarda a quins participants una persona pot fer un regal. Atots els aprticipants emnys a si amteix i els que ja han estat assignats.
- assignats: llista on guardarem tots aquells que ja tenen assignat qui li regala.
- triat: on guardarem el participant a qui assignem

![](https://i.imgur.com/3RLHE5O.png)

#### Algoritme

Al botó generar associem el codi que ens crearà el codi:

Primer incialitzar la variable assignació a llista buyida i la variable parelles a text buit. Ja que es fa una nova assignació.

Un bucle que recorri a tots els elements de la llista participants
![](https://i.imgur.com/woUzNZv.png)

I dins el bucle fer:
- el primer afegir a la variable parelles el nom del que fa el regal (element de la llista participant)
##### Triem candidats possibles
- copia la llista participants a candidats
- i eliminem el element per qui estem escollint a qui regala
![](https://i.imgur.com/lLSKI7o.png)
- ara eliminem els assignats (que ja tenen qui li fa regal) dels candidats
    - per això ens creem una llista temporal, on anirem guardant tots els candidats sense qui li regala.
    - per això recorrem la llista candidats i anem comprovant si està a la llista assignats, si no ho està ho afegirm a la llista temporal.
    - a l'acabar copiem la llista temporal a candidats.
![](https://i.imgur.com/cgBHRbc.png)

##### Fem assignació
- agafem un nom a l'atzar de la llista de candidats. El guardem a la variable triat.
- Afegim a parelles el text -> nomtriat i salt de línia \n. 
- Afegim element triat a assignats.
- 
![](https://i.imgur.com/caB3MC7.png)

### Millores
- Què passa si es posa un nom repetit? Es pot?
- Què passa si es clica a Genera i no hi ha cap participant a la llista o només 1?



