SlideShare a Scribd company logo
1 of 52
Download to read offline
{Codemotion} Roma 2016 19.03.2016
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
// Di cosa ho bisogno? Di esploratori.
// Per ogni turno effettua questo controllo
if (EsploratoriDisponibili() > 0) {
PortaciFuoriMrSulu();
} else {
if (EsploratoriInProduzione() == 0) {
AggiungiAllaCodaDiProduzione();
}
}
// Ripeti per ogni turno, fino a che non raggiungo
// un numero massimo di esploratori
// Per incrementare potere ed influenza devo colonizzare
// nuove aree e far crescere le mie forze.
// Di cosa ho bisogno? Unità di colonizzazione
if (ColonizzatoriDisponibili() > 0) &&
(TerreniDisponibili() > 0) {
RaggiungiTerrenoDaColonizzare();
Colonizza();
} else {
if (ColonizzatoriInProduzione() == 0) {
AggiungiAllaCodaDiProduzione();
}
}
// Ripeti per ogni turno, fino a che non raggiungo
// un numero massimo di nuove colonie
// Sfruttamento e raccolta risorse
// Di cosa ho bisogno? Edifici o unità esterne
foreach Villaggio v {
if (v.NecessariEstrattoriRisorse() == true) &&
(v.SpaziDisponibili() > 0) {
v.CostruisciEstrattore();
} else {
e = v.NuovoEdificioPrioritario();
if (v.NumeroEdifici(e) == 0) {
v.Costruisci(e);
}
}
}
// In base alla civiltà e all’obiettivo
r = NuovaRicercaPrioritaria();
AvviaRicerca(r);
// Ripeti per ogni turno, fino a che non raggiungo il
// un numero massimo di edifici che posso costruire
// Come posso difendere i miei territori?
// A chi devo menare?
if (NuovoSoldatoPronto() == true) {
s = NuovoSoldato();
Armata.Aggiungi(s);
Armata.DefinisciRuolo(s);
Armata.DefinisciFormazione();
Armata.DefinisciComportamento(s);
} else {
if (SoldatiInProduzione() == 0) {
s = ScegliNuovoSoldato();
AggiungiAllaCodaDiProduzione(s);
}
}
a. In base allo stato della AI, viene selezionata quale unità costruire.
b. La costruzione dell'unità viene inserita nel cantiere libero che
permette una maggiore velocità di realizzazione.
c. Il primo elemento della coda è selezionato e valutato. Viene
costruito se:
c1. Ci sono meno di X villaggi (o pianeti, o città) per ogni
oggetto? (es. ci sono 13 villaggi e noi abbiamo già 4
unità di questo tipo, il valore di VillaggiPerItem = 3,
quindi vogliamo costruirne un altro.
Se il VPI < (NumVillaggi / NumUnità di quel tipo), allora
costruisci.)
d. Se il valore di DeviAverneAlmeno è > di 0, controlliamo se la
condizione del VPI è ancora vera. Se si, allora costruiscine un altro,
se no, va al prossimo elemento da costruire. Il loop continua fino a che
la condizione è falsa, o quando è stato raggiunto il valore di
DeviAverneAlmeno.
e. Quando l'ultimo elemento è stato raggiunto, ricomincia da capo.
a. La tecnologia necessaria alla costruzione è disponibile?
a1. Si, vai avanti
a2. No, non costruire
b. L'AI si trova in uno stato compatibile?
b1. Si, vai avanti
b2. No, non costruire
c. C'è spazio nel villaggio per costruire il nuovo edificio?
c1. Si, vai avanti
c2. No, cerca un altro villaggio in cui costruirlo
d. Se l'edificio ha una abilità a livello di Regione, ce ne sono altri?
d1. Si, non è necessario costruirlo
d2. No, vai avanti
e. Tutti i criteri di valutazione sono validati, procedi con la
costruzione.
a. Valuta le mie forze e assegna un punteggio A
b. Valuta le forze nemiche, assegnando un punteggio B
if A > B then Spacca!
if A = B then
if Civ-Aggressiva o AttaccoNecessario then attacca
else Aspetta e cerca rinforzi
if A < B then Ritirati
a. disporsi in formazione
b. attuare un movimento primario
c. attuare un eventuale movimento secondario
d. processare una lista di controlli sull'obiettivo primario
d1. è armato?
d2. è più danneggiato?
d3. è più forte?
d4. è il più vicino?
e. determinare la priorità d'attacco
e1. una unità nemica
e2. le mura di difesa
e3. le trappole
e4. i trasporti
e5. i villaggi
...
f. bersaglio trovato?
f1. Si e il bersaglio è a tiro?
f11. spara
f2. No, muoviti verso il bersaglio, fino a che non è verificata la
condizione di movimento primaria
g. valuta i danni subiti. Sono troppo danneggiata per continuare?
g1. Si, tenta la fuga se puoi muoverti
g2. No, continua
•
•
•
•
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?
Quanto sono intelligenti i videogiochi di strategia?

More Related Content

More from Codemotion

Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Codemotion
 
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019Codemotion
 
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019Codemotion
 
Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019
Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019
Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019Codemotion
 
Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019
Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019
Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019Codemotion
 
Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019
Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019
Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019Codemotion
 
Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019
Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019
Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019Codemotion
 

More from Codemotion (20)

Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
 
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
 
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
 
Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019
Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019
Mario Viviani - Designing apps for fire TV - Codemotion Amsterdam 2019
 
Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019
Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019
Ilona Demidenko - Conversational Sign Up - Codemotion Amsterdam 2019
 
Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019
Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019
Katie Koschland - Ready, steady, crash - Codemotion Amsterdam 2019
 
Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019
Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019
Matteo Antony Mistretta - React, the Inglorious way - Codemotion Amsterdam 2019
 

Quanto sono intelligenti i videogiochi di strategia?

  • 2.
  • 4.
  • 5.
  • 6.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 25.
  • 27. // Di cosa ho bisogno? Di esploratori. // Per ogni turno effettua questo controllo if (EsploratoriDisponibili() > 0) { PortaciFuoriMrSulu(); } else { if (EsploratoriInProduzione() == 0) { AggiungiAllaCodaDiProduzione(); } } // Ripeti per ogni turno, fino a che non raggiungo // un numero massimo di esploratori
  • 28. // Per incrementare potere ed influenza devo colonizzare // nuove aree e far crescere le mie forze. // Di cosa ho bisogno? Unità di colonizzazione if (ColonizzatoriDisponibili() > 0) && (TerreniDisponibili() > 0) { RaggiungiTerrenoDaColonizzare(); Colonizza(); } else { if (ColonizzatoriInProduzione() == 0) { AggiungiAllaCodaDiProduzione(); } } // Ripeti per ogni turno, fino a che non raggiungo // un numero massimo di nuove colonie
  • 29. // Sfruttamento e raccolta risorse // Di cosa ho bisogno? Edifici o unità esterne foreach Villaggio v { if (v.NecessariEstrattoriRisorse() == true) && (v.SpaziDisponibili() > 0) { v.CostruisciEstrattore(); } else { e = v.NuovoEdificioPrioritario(); if (v.NumeroEdifici(e) == 0) { v.Costruisci(e); } } } // In base alla civiltà e all’obiettivo r = NuovaRicercaPrioritaria(); AvviaRicerca(r); // Ripeti per ogni turno, fino a che non raggiungo il // un numero massimo di edifici che posso costruire
  • 30. // Come posso difendere i miei territori? // A chi devo menare? if (NuovoSoldatoPronto() == true) { s = NuovoSoldato(); Armata.Aggiungi(s); Armata.DefinisciRuolo(s); Armata.DefinisciFormazione(); Armata.DefinisciComportamento(s); } else { if (SoldatiInProduzione() == 0) { s = ScegliNuovoSoldato(); AggiungiAllaCodaDiProduzione(s); } }
  • 31. a. In base allo stato della AI, viene selezionata quale unità costruire. b. La costruzione dell'unità viene inserita nel cantiere libero che permette una maggiore velocità di realizzazione. c. Il primo elemento della coda è selezionato e valutato. Viene costruito se: c1. Ci sono meno di X villaggi (o pianeti, o città) per ogni oggetto? (es. ci sono 13 villaggi e noi abbiamo già 4 unità di questo tipo, il valore di VillaggiPerItem = 3, quindi vogliamo costruirne un altro. Se il VPI < (NumVillaggi / NumUnità di quel tipo), allora costruisci.) d. Se il valore di DeviAverneAlmeno è > di 0, controlliamo se la condizione del VPI è ancora vera. Se si, allora costruiscine un altro, se no, va al prossimo elemento da costruire. Il loop continua fino a che la condizione è falsa, o quando è stato raggiunto il valore di DeviAverneAlmeno. e. Quando l'ultimo elemento è stato raggiunto, ricomincia da capo.
  • 32. a. La tecnologia necessaria alla costruzione è disponibile? a1. Si, vai avanti a2. No, non costruire b. L'AI si trova in uno stato compatibile? b1. Si, vai avanti b2. No, non costruire c. C'è spazio nel villaggio per costruire il nuovo edificio? c1. Si, vai avanti c2. No, cerca un altro villaggio in cui costruirlo d. Se l'edificio ha una abilità a livello di Regione, ce ne sono altri? d1. Si, non è necessario costruirlo d2. No, vai avanti e. Tutti i criteri di valutazione sono validati, procedi con la costruzione.
  • 33. a. Valuta le mie forze e assegna un punteggio A b. Valuta le forze nemiche, assegnando un punteggio B if A > B then Spacca! if A = B then if Civ-Aggressiva o AttaccoNecessario then attacca else Aspetta e cerca rinforzi if A < B then Ritirati
  • 34. a. disporsi in formazione b. attuare un movimento primario c. attuare un eventuale movimento secondario d. processare una lista di controlli sull'obiettivo primario d1. è armato? d2. è più danneggiato? d3. è più forte? d4. è il più vicino? e. determinare la priorità d'attacco e1. una unità nemica e2. le mura di difesa e3. le trappole e4. i trasporti e5. i villaggi ... f. bersaglio trovato? f1. Si e il bersaglio è a tiro? f11. spara f2. No, muoviti verso il bersaglio, fino a che non è verificata la condizione di movimento primaria g. valuta i danni subiti. Sono troppo danneggiata per continuare? g1. Si, tenta la fuga se puoi muoverti g2. No, continua
  • 35.
  • 36.
  • 37.