IEIM Esercitazione VIII Gioco dell impiccato e Mappa Del Tesoro. Alessandro A. Nacci -

Documenti analoghi
Corso di Informatica Medica Esercitazione IX. Alessandro A. Nacci - alessandronacci.com

IEIM Esercitazione XI Ricorsione e Ripasso. Alessandro A. Nacci -

IEIM Esercitazione IX Ricorsione. Alessandro A. Nacci -

IEIM. Esercizio Gestione Automobili Strutture e Files Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.it

IEIM Esercitazione VIII Puntatori, Matrici, Enum. Alessandro A. Nacci -

Corso di Informatica Medica Esercitazione VII

IEIM Esercitazione IX Ripasso Generale. Alessandro A. Nacci -

IEIM Esercizio: L albero Genealogico

IEIM Esercitazione VI A cosa servono le funzioni, la ricorsione e l enum

IEIM Esercitazione VIII Ripasso Generale. Alessandro A. Nacci -

Informatica B

IEIM Esercitazione 1 Primi passi con la programmazione" Alessandro A. Nacci -

IEIM Esercitazione X Albero Genealogico & Ripasso. Alessandro A. Nacci -

IEIM Esercitazione V Matrici, funzioni, puntatori & enum. Alessandro A. Nacci -

IEIM Esercitazione VI Puntatori e Struct. Alessandro A. Nacci -

IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci -

ESERCIZIO: SHIFT ARRAY (1)

IEIM Esercitazione III Mappe di Karnaugh, array e alcune note sulle funzioni

IEIM Esercitazione 1I Array. Alessandro A. Nacci -

Informatica B

Esercizi. La funzione swapint() primo tentativo

Informatica B

- int nbrani = 0; //numero di brani presenti in archivio. int creaplaylist(tipobrano[] playlist, int n, TipoGenere g, TipoFile t);

IEIM Esercitazione IX Puntatori, Enumerazione e Ricorsione. Alessandro A. Nacci -

Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013

Esercizi C su array e matrici

Elementi di Informatica e Programmazione Allievi Ingegneria Informatica, Elettronica e delle Telecomunicazioni, Automazione Industriale

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array.

Esercitazione 8. Array multidimensionali

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri.

Esercizio 1 (15 punti)

Esercitazione 6. Array

3 Costrutti while, for e switch

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

1. Date due matrici S e T di uguali dimensioni, definiamo la somma delle differenze assolute: numrighe. numcol SAD=5&

I puntatori /2. Ad esempio. // inizio codice. #include <stdio.h> void mostra(int); int main() {int a = 10; mostra(a); return 0;}

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2014

Indovina la lettera...

Formato dei file. Definizione del formato immagine pbm. Il formato immagine pbm

3 Costrutti while, for e switch

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef char Griglia [3][3];

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

TUTORAGGIO INFORMATICA Settimana 7

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

1 (4) 2 (4) 3 (12) 4 (6) 5 (6)

Università degli Studi di Ferrara

IEIM Esercitazione X Ripasso: array, puntatori, ricorsione. Alessandro A. Nacci -

Introduzione al C. Lez. 2 Funzioni e Puntatori

Informatica ed Elementi di Informatica Medica

Esercitazione 2. Espressioni booleane Il comando if-else

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1

Informa(ca. Appun( dal laboratorio 5

Manualistica 3 Le strutture di controllo

Introduzione al C. Lez. 2. Funzioni e Puntatori

il precedente programma dichiara un vettore di interi di dimensione 10 e successivamente inserisce il valore 4 nel secondo elemento del vettore.

Esercizio 1 (Codifica binaria in virgola mobile) Codificare in virgola mobile a precisione singola I seguenti numeri: N1 = 16; N2 = -1.

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Introduzione al C. Esercitazione 2bis. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi

Primo programma in C

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

Programmazione I - Laboratorio

Corso di Informatica Medica Esercitazione 1I

Corso di Informatica Medica Esercitazione VIII

3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita!

Programmazione ricorsiva.

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Stringhe Ricerca binaria

Informatica B

Programmazione ricorsiva: cenni

Manualistica 3 Le strutture di controllo

Esercizi in Python. Docente: Domenico Daniele Bloisi

STRUCT - ESERCIZIO 1

N:\Lavoro\Compiti\esercizi svolti\4\info \main.c mercoledì 21 maggio :11

Informatica B

Esercitazione 11. Liste semplici

Passaggio dei parametri

Esercitazione Matrici e Struct

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE

PROGRAMMAZIONE: Le strutture di controllo

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

Campo Minato. in java

Esercizio 1: calcolo insieme intersezione

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Fondamenti di Informatica T-1 modulo 2

Esercizio 1: funzione con valore di ritorno di tipo puntatore

1 (12) 2 (6) 3 (4) 4 (4) 5 (6)

Tutorato Programmazione 1 Modulo 2

Dati due punti sul piano calcolare la loro distanza

1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che

GIOCO n.1 IL TRIS. o Mossa G1 o Controlla se vincita. o Visualizza griglia di gioco. o Mossa G2

TUTORAGGIO INFORMATICA Settimana 1

Linguaggio C: Array Valeria Cardellini

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Transcript:

IEIM 2015-2016 Esercitazione VIII Gioco dell impiccato e Mappa Del Tesoro Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1

Il gioco dell impiccato Scrivere un programma che permetta di giocare al gioco dell impiccato 2

Vediamo cosa ci serve... L idea è quella di avere un dizionario di parole da indovinare un numero massimo di tentativi lo stato delle parola (quali lettere sono state indovinate?) 3

Dichiarazione ed inizializzazione variabili 4

Dichiarazione ed inizializzazione variabili come la implemento? 4

Scegli parola 5

Ragioniamo sulle funzioni necessarie... Ora ci servono ancora alcune funzionalità: Controllare se una data lettera è corretta o meno Sostituire le lettere indovinate al posto dei trattini _ Stampare a schermo lo stato attuale della parola Controllare se il giocatore ha vinto 6

Controllo e sostituzione lettera Ora ci servono ancora alcune funzionalità: Controllare se una data lettera è corretta o meno Sostituire le lettere indovinate al posto dei trattini _ Stampare a schermo lo stato attuale della parola Controllare se il giocatore ha vinto 7

Controllo e sostituzione lettera Ora ci servono ancora alcune funzionalità: Controllare se una data lettera è corretta o meno Sostituire le lettere indovinate al posto dei trattini _ Stampare a schermo lo stato attuale della parola Controllare se il giocatore ha vinto 7

Controllo vincita & stampa a schermo 8

Controllo vincita & stampa a schermo 8

Controllo vincita & stampa a schermo 8

Gestione del gioco 9

Gestione del gioco 9

Mappa del Tesoro Matrici e Ricorsione 10

LA MAPPA DEL TESORO 11

Una mappa particolare! Immaginiamo di avere una mappa del tesoro un po particolare! E una sorta di mappa termica radiale della vicinanza al tesoro 12

La strategia del pirata Un pirata che vuole muoversi su questa mappa per cercare il tesoro, si sposterà sempre dalle celle con colori più freddi verso celle con colori più caldi 13

Traccia dell esercizio Scrivere un programma C che sia in grado di gestire la mappa appena introdotta date le coordinate del tesoro, creare la mappa termica di vicinanza date delle coordinate di partenza, tracciare un percorso valido per arrivare al tesoro 14

Gestione della mappa termica Come rappresentiamo la mappa termica? 15

Gestione della mappa termica Come rappresentiamo la mappa termica? Usiamo una matrice I colori diventano numeri 15

Gestione della mappa termica Come rappresentiamo la mappa termica? Usiamo una matrice I colori diventano numeri 15

Include, define e dichiarazione variabili #include <stdio.h> #include <math.h> #define W 10 #define H 10 #define VALORE_TESORO 15 VALORE_TESORO è legato alla dimensione della mappa int main() int mappa[w][h]; int x,y; int trovato = 0; 16

Inizializziamo la mappa void init_mappa(int mappa[w][h]) int x,y; for (x = 0; x < W; x++) for (y = 0; y < H; y++) mappa[x][y] = 0; Scrivere una funziona che riempia di 0 una matrice mappa in ingresso. 17

Inizializziamo la mappa void init_mappa(int mappa[w][h]) int x,y; for (x = 0; x < W; x++) for (y = 0; y < H; y++) mappa[x][y] = 0; 17

Stampiamo la mappa void stampa_mappa(int mappa[w][h]) int x,y; for (x = 0; x < W; x++) for (y = 0; y < H; y++) schermo printf("%d\t", una matrice mappa[x][y]); mappa in printf("\n"); ingresso Scrivere una funziona che visualizzi a printf("\n\n\n"); 18

Stampiamo la mappa void stampa_mappa(int mappa[w][h]) int x,y; for (x = 0; x < W; x++) for (y = 0; y < H; y++) printf("%d\t", mappa[x][y]); printf("\n"); printf("\n\n\n"); 18

Metti tesoro - corretto Scrivere una funziona che, date due coordinate tes_x e tes_y - che sono le coordinate del tesoro - crei la mappa termica radiale presentata in precedenza all interno di una matrice mappa passata in ingresso. 19

Metti tesoro - corretto 19

Cerchiamo il tesoro e tracciamo il percorso int cerca_tesoro(int mappa[w][h], int start_x, int start_y) if (mappa[start_x][start_y] == VALORE_TESORO) return 1; Scrivere int x,y; una funzione C che date due coordinate da cui il pirata parte ( start_x e start_y ), cerchi un percorso corretto per arrivare al tesoro. for (x = start_x - 1; x <= start_x + 1; x++) for (y = start_y - 1; y <= start_y + 1; y++) if (x>0 && y >= 0 && x<w && y<h) if (mappa[x][y] > mappa[start_x][start_y]) quello della cella corrente. mappa[start_x][start_y] = -1; return cerca_tesoro(mappa, x, y); Per creare un percorso corretto, dato un punto generico in cui il pirata si trova, il pirata può spostarsi solo in una cella adiacente che abbia un valore superiore a Una volta che una cella viene visitata, è necessario marcarla per indicare che quella cella è parte del percorso scelto. return 0; 20

Cerchiamo il tesoro e tracciamo il percorso int cerca_tesoro(int mappa[w][h], int start_x, int start_y) if (mappa[start_x][start_y] == VALORE_TESORO) return 1; int x,y; for (x = start_x - 1; x <= start_x + 1; x++) for (y = start_y - 1; y <= start_y + 1; y++) if (x>0 && y >= 0 && x<w && y<h) if (mappa[x][y] > mappa[start_x][start_y]) mappa[start_x][start_y] = -1; return cerca_tesoro(mappa, x, y); return 0; 20

Mostriamo a schermo il percorso void stampa_percorso(int mappa[w][h]) int x,y; for (x = 0; x < W; x++) for (y = 0; y < H; y++) if (mappa[x][y] == -1) printf("#\t"); Scrivere una cella che visualizzi in modo chiaro quale è il percorso scelto else dal pirata printf("-\t"); per raggiungere il tesoro. printf("\n"); printf("\n\n\n"); 21

Mostriamo a schermo il percorso void stampa_percorso(int mappa[w][h]) int x,y; for (x = 0; x < W; x++) for (y = 0; y < H; y++) if (mappa[x][y] == -1) printf("#\t"); else printf("-\t"); printf("\n"); printf("\n\n\n"); 21

E facciamo il main :) int main() int mappa[w][h]; int x,y; int trovato = 0; init_mappa(mappa); stampa_mappa(mappa); metti_tesoro(mappa, 5,5); stampa_mappa(mappa); trovato = cerca_tesoro(mappa, 0,2); if (trovato) printf("ho trovato il tesoro!\n"); stampa_mappa(mappa); stampa_percorso(mappa); 22

Tutte il materiale sarà disponibile sul mio sito internet! alessandronacci.com 23