Newsgroup: it.comp.programmare.win32
Titolo: Simulazione del problema delle torri di hanoi

Salve a tutti,
tra gli esercizi del mio testo sul c++ c'era anche quello di risolvere
il problema delle torri di hanoi.
Il problema era abbastanza facile, ma mi ha fatto venire voglia di creare
una simulazione grafica del problema.
nulla di impegnativo, i dischi sarebbero rappresentati con degli asterischi:
    |     |     |
    *     |     |
   ***    |     |
  *****   |     |
 -------------------
più o meno così.
ho già in mente il diagramma delle classi, ma ora il problema è questo:
lavoro in modalità console: come faccio a disegnare paletti e dischi?
servirebbero funzioni come gotoxy() ed altre, notoriamente non presenti
nella libreria standard del c++.
Qualcuno ha dei suggerimenti?
TIA
--
Lupin85©
Azzurranet IRC: +#afiad, @#fils - ICQ: 91528290
Mail: Remove PAN to contact me
- "It is not important what you believe, only that you believe." -

 
guarda qui
http://javascript.internet.com/games/hanoi.html
É scritto in Javascript, ma non penso questo sia un problema.
Ciao
Luca

 É scritto in Javascript, ma non penso questo sia un problema.
forse non mi sono spiegato.
ecco la funzione ricorsiva che risolve il problema:
#include <iostream>
using std::cout;
using std::endl;
void hanoi(const int nDischi,   /*numero dei dischi*/
           const int pS,        /*paletto iniziale*/
           const int pE,        /*paletto finale*/
           const int pI = 0     /*paletto intermedio*/) {
    if(nDischi == 2) {
        cout << pS << "->" << pI << endl
             << pS << "->" << pE << endl
             << pI << "->" << pE << endl;
    }
    else if(nDischi == 1)
        cout << pS << "->" << pE << endl;
    else {
        hanoi(nDischi - 1, pS, pI, pE);
        hanoi(1, pS, pE);
        hanoi(nDischi - 1, pI, pE, pS);
    }
}
il problema non sta nel codice, ma nell'output che produce.
infatti questa funzione produrrà questo tipo di output:
(caso 3 dischi)
1->2
1->3
2->3
1->2
3->1
3->2
1->2
Quello che cercavo era un modo per rappresentare graficamente (come
ho disegnato nel primo post) il grafico delle torri in una finestra
console.
Spero di essere stato più chiaro, grazie comunque per il tuo aiuto!


infatti questa funzione produrrà questo tipo di output:
Dicono che devi usare le ncurses, ma non mi chiedere dove scaricarle
per windows, perchè lo vorrei sapere anch'io!! E' l'oggetto della mia
domanda postata poco prima...

 
Ok, sorry.
Dovevo leggere meglio il tuo post.
Io nei miei programmi in console mode, utilizzo le funzioni
OpenScreen,
ClearScreen (una bella pulizia e' sempre utile)
PutCharXY e
CloseScreen,
funzioni della libreria CRT di MS
Prova a vedere se fanno al caso tuo, altrimenti mi sembra di ricordare 
che ci sono funzioni simili alla gotoxy() del Pascal e alla LOCATE del 
buon caro vecchio QuickBasic, ma non mi ricordo come si chiamano in C.
Saluti
Luca

 buon caro vecchio QuickBasic, ma non mi ricordo come si chiamano in C.
forse ti riferisci alle funzioni della libreria conio.h.
--
Lupin85©
Azzurranet IRC: @#afiad, @#fils, @#pokegalaxy - ICQ: 91528290


 
Si', dovrebbero essere quelle, cmq se guardi in MSDN e ricerchi una di 
quelle funziuoni che ti ho detto, dovresti trovare anche le librerie e 
gli headers da includere.
Luca.

> Qualcuno ha dei suggerimenti?
interrupt del bios...sicuramente in windows c'è una funzione che fa da
wrapper. Cmq gli interrupt del bios permettono di scrivere direttamente
nella memoria video anche in modalità caratteri.
Scusa se non scendo nel dettaglio ma è da una vita che non programmo più a
console (secondo me fai prima a farti una finestra ed usare la gdi!).
Ciao

 non ho i sorgenti su questa macchina.
Trovata:
SetConsoleCursorPosition() in wincon.h
:-)
Ciao!