Türme von Hanoi



  • Hallöchen,

    möchte im ms visual studio das spiel"die türme von Hanoi" programmieren (mit spiel speichern, lade, forsetzen, spielzug rückgängig machen).
    kann mir jemand dabei behilflich sein, da ich in c im moment noch etwas schwachbrüstig bin und gerade dabei bin es mir anzueignen.
    Vielen Dank



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Hallo Staubi,

    willkommen im Forum. Bitte lies dir mal den ersten Link in meiner Signatur und die als wichtig markierten Threads durch. Außerdem solltest du darauf achten, im richtigen Forum zu posten, C und C++ sind zwei sehr unterschiedliche Sprachen.

    Zum Problem: Das etwas mit deiner Fragestellung nicht stimmt, habe ich dir schon gesagt. Mit so wenig Eigeninitiative wirst du kaum jemanden finden der dir hilft, zumal das Problem in jedem Unterforum bestimmt mindestens hundertmal komplett durchgesprochen wurde. Bitte nutze die Suchfunktion für Komplettlösungen oder stell konkrete Fragen zu konkreten Problemen, falls du selber Schwierigkeiten bei der Implementierung hast.



  • ok ja wiegesagt ich hab wenig ahnung was der genaue unterschied ist 😉

    aber um eine konkrete Frage zu stellen:

    Wie schaffe ich es in meinem Spiel "Türme von Hanoi" einen Spielzug wieder rückgängig zu machen?
    Das Grundsystem des Spiels hab ich mir fürs Programm mittlerweile erarbeitet.



  • du musst dir halten eben den letzten bzw. vorletzten spielzug merken. wie, musst du selber entscheiden, denn ohne code nichts los 😃



  • int t_main(int argc ,_TCHAR* argv[])
    {
    int s = 3;
    int help = s;
    int counter = 1;
    int dest = 3;

    for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;

    while (help >0)
    {
    cout << counter <<"\+";
    for (int i = 0; i<dest-1;i++)
    {
    cout <<"|\+";

    }
    cout<<endl;
    help --;
    counter++;
    }
    projekt(s,1,dest-1,dest);

    help = s;
    counter = 1;

    for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;

    while(help >0)
    {
    for(int i=0; i < dest-1; i++)
    {
    cout<< "|\+";
    {
    cout << counter;
    cout << endl;
    help --;
    counter++;
    }
    keep_window_open();
    return 0;
    }

    static void projekt(int s , int src, int work, int dest)
    {

    if(s>1)
    {
    projekt(s-1,src,dest,work);
    }

    printf("%i. Bewege Scheibe (%d) von %d nach%d\s" ,counter2,s,src,dest);
    counter2+t;
    if (s>1)
    {
    projekt(s-1,work,src,dest);
    }

    }

    das ist der code, funktioniert iwie noch nicht . aber grundlegendst dürfte der stimmen

    hab halt das problem das das spiel manuell gespielt werden soll und nicht vom pc was dann ein weiteres problem sein dürfte ..

    sry wenn ich etwas träge daher komm aber ich hab noch nie mit nem forum gearbeitet 🙂



  • Das ist jetzt aber wieder C++ (wegen cout )

    Damit die Einrückungen erhalten bleiben, nutze die cpp-Tags.
    Das ist ganz einfach: Markiere den Code und klicke auf den C/C++ Butten unter den 🙂 😃 😉
    Dann sieht das so schön bunt aus:

    int t_main(int argc ,_TCHAR* argv[])
    {
    	int s = 3;
    	int help = s;
    	int counter = 1;
    	int dest = 3;
    
    	for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    	for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    	for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    
    	while (help >0)
    	{
    		cout << counter <<"\+";
    		for (int i = 0; i<dest-1;i++)
    		{
    			cout <<"|\+";
    
    		}
    		cout<<endl;
    		help --;
    		counter++;
    	}
    	projekt(s,1,dest-1,dest);
    
    	help = s;
    	counter = 1;
    
    	for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    	for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    	for ( int i = 0;i< dest; i++) {cout << "|\+"; cout<< endl;
    
    	while(help >0)
    	{
    		for(int i=0; i < dest-1; i++)
    		{
    			cout<< "|\+";
    			{
    				cout << counter;
    				cout << endl;
    				help --;
    				counter++;
    			}
    			keep_window_open();
    			return 0;
    		}
    
    static void projekt(int s , int src, int work, int dest)
    {
    
    if(s>1)
    	{
    	projekt(s-1,src,dest,work);
    	}
    
    printf("%i. Bewege Scheibe (%d) von %d nach%d\s" ,counter2,s,src,dest);
    counter2+t;
    if (s>1)
    	{
    	projekt(s-1,work,src,dest);
    	}
    
    }
    

    Dann sieht man auch, dass da eine paar Klammern fehlen.

    Poste den Code mit dem du arbeitest und deer sich compilieren lässt.


Anmelden zum Antworten