• Non ci sono risultati.

IEIM 2015-2016

N/A
N/A
Protected

Academic year: 2021

Condividi "IEIM 2015-2016"

Copied!
27
0
0

Testo completo

(1)

IEIM 2015-2016

Esercitazione VII

“Forza quattro”

Alessandro A. Nacci

alessandro.nacci@polimi.it - www.alessandronacci.it

(2)

Cosa facciamo oggi?

Forza Quattro

Il gioco dell’impiccato

(3)
(4)

Un semplice videogioco

Scriviamo un programma C che implementi il

gioco del Forza 4

Due giocatori, entrambi

“reali”

Il programma deve

permettere di giocare

Il programma deve

annunciare il vincintore

(5)

Forza 4: rappresentazione

Come facciamo a rappresentare nel terminale, con quello che già conosciamo, delle pedine rosse e delle pedine nere?

(6)

Forza 4: rappresentazione

%

% #

# # %

x

y 0

Ma è il PIANO CARTESIANO!

Generico forma

di categoria F_PUNTO

Generico forma

di categoria F_PUNTO

Quindi abbiamo una matrice, descritta da due indici e che

contiene caratteri...

POSSIAMO RIUTILIZZARE PRATICAMENTE TUTTO QUELLO CHE ABBIAMO

FATTO NELL’ESERCIZIO PRECEDENTE...

ECCO A COSA SERVONO LE FUNZIONI! :D

(7)

Cosa manca

Anche se possiamo utilizzare buona parte del codice già scritto per il “PIANO

CARTESIANO”, qualche concetto ancora ci manca:

Come rappresentiamo un GIOCATORE?

Come gestiamo l’inserimento di una pedina?

Come controlliamo la vincita?

(8)

Il giocatore

Un giocatore è identificato da:

IL SUO NOME

QUALE PEDINA HA SCELTO

(9)

L’inserimento di una pedina

%

% #

# # %

x

y 0

#

Dobbiamo creare una sorta di effetto gravita!

(10)

L’inserimento di una pedina: codice C

(11)

Verifica delle vincita

#

# %

% # #

# # % % % %

x

y 0

Dobbiamo controllare che, dato un simbolo, un vettore contiene 4 occorrenze di quest’ultimo

(12)

Verifica della vincita

Per verificare una vincinta, dobbiamo prima di tutto saper controllare se, dato un

vettore generico, esistono FORZA=4 occorrenze consecutive di un carattere

‘occorrenza’ dato in ingresso

Con questa funzione potremo poi controllare sia vettori verticali, che orizzontali che obliqui

(13)

Controllo di un generico vettore

Se ho un vettore A, e voglio controllare se qualcuno ha vinto, potrei usare il seguente metodo

Parto dal secondo elemento e, per ogni elemento

Se l’elemento A[i] considerato è uguale al carattere occorrenza ed è uguale all’elemento A[i-1], incremento un contatore occorrenze (occorrenze++)

Se l’elemento A[i] non è uguale ad occorrenza oppure l’elemento A[i] != A[i-1], occorrenze viene riportato a 0 (occorrenze=0)

Ogni qual volta che occorrenze arriva a FORZA-1, nel nostro caso 4-1, vale a dire 3, ho verificato che c’è una vincita

Se non succede mai che occorrenze == FORZA-1, allora non

(14)

Controllo di un generico vettore: codice C

(15)

Controllo vincita orizzontale

(16)

Controlla vincita verticale

(17)

Controlla vincita obliquo

In obliquo abbiamo due direzioni possibili

Quindi creiamo una funzione parametrica che dato un

parametro direzione estra un vettore

orizzontale...

(18)

Estrazione array obliquo (codice C)

QUESTA FUNZIONE CONTIENE UN BUG!

(19)

Controllo vincita in obliquo

Quindi, usando la funzione appena creata ora possiamo controllare le vincite in

obliquo

(20)

Controllo di una qualsiasi vincita

Usando le funzioni precedenti possiamo controllare una qualsiasi vincita

(21)

Prima di scrivere il main(), ci mancano ancora un paio di funzioni comode...

(22)

Crea giocatore: codice C

(23)

Richiedi inserimento pedina: codice C

(24)

Inserisci pedina: codice C

(25)

Ed ora, scriviamo il main:

Dobbiamo creare due giocatori

Dobbiamo gestire l’alternanza dei due giocatori

Dobbiamo richiedere dove inserire la pedina

Dobbiamo controllare la vincita

(26)
(27)

Tutte il materiale sarà

disponibile sul mio sito internet!

alessandronacci.it

Riferimenti

Documenti correlati

- miglioramenti nella realizzazione del rivestimento vetrato dell’edificio 3 ovvero eventuale esecuzione del rivestimento sulla totalità della facciata Nord, eventuale esecuzione

Dati due file di testo F1.txt e F2.txt, si scriva una funzione bool righe() che restituisce il valore true se i due file hanno lo stesso numero di righe, false altrimenti.. Dati

Ricerca esaustiva: si scandisce il vettore, confrontando gli elementi con quello da cercare, fino a che.. • si sono confrontati tutti gli

La tendenza ad ossidarsi e ridursi genera un flusso di elettroni (e quindi di corrente elettrica) dall’anodo verso

Si dice che i due punti formano un sistema di riferimento per la retta, il primo punto si dice origine ed il secondo punto si dice punto unita’; il numero reale da cui proviene un

In un palazzo di 100 piani si vuole stabilire qual ` e il piano pi` u alto dal quale ` e possibile lanciare un uovo senza che esso si rompa.. Le uova sono considerate tutte aventi

• This means that it is possible to define parametric

[r]