Informatica 1(C.d.S. Matematica)

Frequently Asked Questions about Final Project "Sliding Puzzle"

  • Nel livello 1 richiesto di utilizzare grafica 2D: significa che non possiamo utilizzare immagini e quindi che, ad esempio, le finestre dovranno essere necessariamente create sulla base della libreria gra2d_lib e non della image_lib?

    Vuol dire che si deve usare solo disegno e testo per definire lo schema di gioco e non una immagine predefinita; si puo' usare la image_lib (per chi fara' anche il secondo livello e' indispensabile) e generare lo schema di gioco con solo disegno e testo.

  • Nel punto 3 del livello 1 si parla di "finestra grafica", al singolare: deve essere necessariamente un'unica finestra a contenere tutto ci che richiesto? (schema di gioco, schema finale, lista dei comandi)

    Si'.

  • Quando attivata la mossa horse, le altre mosse devono continuare a funzionare oppure la mossa horse, quando attiva, diventa l'unica mossa consentita?

    Si'; quando si attiva horse deve essere l'unica mossa possibile. E' chiaro che si puo' fare di tutto, ma la logica vuole che se si comincia una partita con un tipo di mossa questa non possa essere cambiata a meta' partita.

  • La funzione times messa a disposizione durante il corso non sembra funzionare bene. Ho confrontato il tempo con il mi orologio da quando e' partito il programma a quando e' finito e il tempo rilevato dalla times era molto inferiore. Cosa posso fare?

    La funzione messa a disposizione durante il corso misura il tempo di processo (vedi man times), mentre per il progetto serve il "calendar time" cioe' il tempo trascorso in assoluto. Per aiutarvi ho messo on-line alla pagina web del corso un piccolo codice che usa una tale funzione.

  • Come e con quale libreria possiamo gestire i suoni?

    Senza usare nessuna libreria si puo' stampare (printf) la "sequenza di Escape" corrispondente al Bell:
    dichiarare: char bell[2]={'\007','\012'};
    stampare: printf("%s",bell);

    Cosi' facendo pero' non si riesce a controllare il volume ed il beep potrebbe essere troopo debole. In alternativa si puo' usare la libreria X11 gia' inclusa per gestire disegno e immagini; in questo caso si deve modificare la libreria image_lib come segue:
    image_lib.c: aggiungere in fondo al file la seguente funzione:
    void Bell(int percent)
    {
    XBell(dpy,percent);
    XFlush(dpy);
    }

    imagelib.h: aggiungere in fondo al file il seguente prototipo:
    extern void Bell(int );

    programma chiamante:
    Bell(val);
    dove val puo' assume valori da -100 a 100 e specifica il volume del Bell.

  • Come possiamo ritardare i processi nel programma?

    Si puo' usare la funzione di sistema sleep (guardare man sleep).