---
# System prepended metadata

title: 'Prog 1 - Uppgiftsblad 5: Listor'

---

# Prog 1 - Uppgiftsblad 5: Listor

I det här övningsbladet finns både uppgifter som handlar om listor i C# och övningar för att använda listor i Unity. Gör C#-uppgifterna i ett nytt Visual Studio projekt (konsolapplikation). Gör unity-uppgifterna i ett nytt tomt Unity projekt.


## Listor i C#
1. Nedan är en lista med siffror som motsvarar temperaturen för alla dagar under en vecka. Skriv ett program som skriver ut vad temperaturen var på onsdagen och fredagen, genom att använda listan.
 
 ```csharp
List<int> temps = new List<int> { 12, 15, 20, 10, 13, 12, 15 };
 ```
 
 2. Utifrån följande lista med färger, skriv ett program som sorterar listan (i bokstavsordning) och sedan skriver ut första och sista färgen.
```csharp
List<string> colors = new List<string> { "red", "blue", "green", "yellow", "orange", "black", "white", "purple" };
```
 
3. Skriv ett program som ber användaren skriva in sina fem favoritfilmer. Filmerna ska läggas till en i en lista, och sedan ska hela listan skrivas ut.

4. Skriv ett program där användaren får skriva in ett valfritt antal städer, användaren ska inte ange hur många städer som hen vill skriva in i början av programmet. Alla städerna ska sparas i en lista med textsträngar. Användaren ska avsluta sin inmatning av städer genom att skriva in en tom rad. Efter att alla städer är inmatade ska listan sorteras i bokstavsordning och därefter skrivas ut.


5. Skriv ett program som för varje element i följande lista skriver ut om siffran är över 100 eller inte. 

```csharp
List<int> numbers = new List<int> { 20, 120, 6372, 239, 1, 10, 362, 73 };
```

*Exempel på utskrift*
```
inte över
över
över
över
inte över
inte över
över
inte över
```

6. Skriv ett program som utifrån samma lista som i förra uppgiften skriver ut varje siffra multiplicerat med 3.


## Listor och Unity

1. Skapa en UI-text-element som har ett skript som innehåller en lista av `string` och lägg till ett antal olika hälsningsfraser (till exempel "Hej", "Tjena", "Hallå" osv.). Gör så att varje gång spelaren trycker på mellanslag ska text-elementet visa slumpad text i listan.

2. Skapa tre olika objekt, till exempel en fyrkant, en cirkel och en triangel. Skapa ett "skjut"-skript som gör så att varje gång spelaren trycker på en skjut-knapp (till exempel F), ska det spawnas ett av de tre objekten. Varje gång spelaren trycker på en annan knapp (till exempel TAB) ska det bytas vilket objekt som spawnas.
*Tips:*
	* använd en lista för dina tre objekt
	* använd *Instantiate* för att spawna dina objekt
	* använd en int-variabel som du använder som index. Den här variabeln ökar du värdet på varje gång man trycker på TAB.
	
3. Skapa ett skript med en lista av *Vector2* och lägg skriptet på en fyrkant. Var tredje sekund ska kuben "hoppa" till nästa plats i listan, dvs sätta sin position till vektorn i listan. Utveckla skriptet sedan att om man trycker på musknappen läggs det till en position där muspekaren är. 


---

**Utmaning**

Skapa ett Tower Defense-spel där fiender rör sig längs en fördefinierad bana och spelaren kan placera torn för att försvara sig mot dem.
 
1. *Fiendernas bana*: Skapa en enkel bana med "waypoints" (tomma GameObjects) i din scen. Se till att vägpunkterna är placerade i en sekvens som bildar en tydlig väg för fienderna att följa.
2. *Spawna fiender*: Implementera en enkel mekanism för spawna fiender på ett fixt interval. Fiender bör spawnas i början av banan och röra sig mot slutet.
3. *Tornplacering*: Tillåt spelaren att placera torn längs banan för att attackera fienderna. Varje torn bör ha en räckvidd och attackkraft.
4. *Fiendernas rörelse*: Implementera fiendens rörelse längs den fördefinierade banan. Fiender ska röra sig från en "waypoint" till nästa tills de når slutet av banan.
5. *Torn-attack*: Torn bör automatiskt rikta in sig på och attackera fiender inom deras räckvidd. När en fiende kommer in i tornets räckvidd bör tornet börja attackera den.