4 - gewinnt in C



  • hmm, also, sry, projekttyp meinst du mit *.c oder?

    und der breakpoint ist was genau?



  • Blurp_ schrieb:

    hmm, also, sry, projekttyp meinst du mit *.c oder?

    Damit meinte ich sowas wie "Konsolenanwendung" vs. "WinAPI" vs. ...

    und der breakpoint ist was genau?

    Hmm, vielleicht solltest du dir echt mal ansehen, wie der Debugger funktioniert und wie er bedient wird.



  • ich versteh nicht wirklich deine frage, bzw, würde er was bei dir ausgeben wenn du das ausführst in deinem compiler?



  • Du hast doch irgendwie angefangen dein Programm zu schreiben:

    Visual Studio starten
    -> Neuer Projekt
    -> Was hast du da dann ausgewählt?
    Konsolenprogramm oder ...?



  • Leeres Projekt, so hat es auch der Lehrer vorgegeben also wird das schon passen, also leeres projekt dann dann namen eingeben dann rechtsklick auf quelldatei -> hinzufügen dann name.c

    so hab ich das seit der "10." klasse gemacht, und hatte nie wirklich probleme damit



  • http://imageshack.us/photo/my-images/89/captureac.png/

    Das ist ein Breakpoint. Einfach mit der linken Maustaste drauf klicken. (Auf den Rand). Wenn das Programm dann an dieser Stelle vorbei kommt, wird es angehalten.



  • Hmm, so eine Breakpoint habe ich nicht...

    Entweder ich bin echt so dumm oder weiß nicht...

    Ich hab auch Teamviewer 6, falls mir wer besser so helfen kann und auch will !


  • Mod

    Blurp_ schrieb:

    Hmm, so eine Breakpoint habe ich nicht...
    !

    Du sollst ihn ja auch selber setzen...

    Wenn du nicht mit deinen Werkzeugen umgehen kannst, dann nützt dir die beste Bastelanleitung nichts.



  • und wie setze ich den?

    man das haben wir shcon einmal glaub ich gemacht..ich suchs mal

    ah k der rote punkt, ja schon klar und wo soll ich den jz hinsetzen?



  • so, na gut jz gibt er mal das feld aus aber nur in 3x3, und der fehler war: er hat int i nicht wahgenommen, jz hab ichs nach dem ersten int main(void) geschrieben und dann ist es gegangen, jz muss ich nur noch schauen wie es geht damit er das ganze feld annimmt



  • Wäre echt leiwand wenn ich wenigstens das feld + die eingabe schaffe, die gewinnfunktion muss nicht sein, aber ich verzweifle ja schon an dem feld x(



  • Sieht das Programm noch so aus wie um 18:23:49 ?

    Dort hast du die print_spielfeld() innerhalb von main() definiert.
    Das ist in C nicht vorgesehen.



  • warte, 1. wo siehst du die uhrzeit + datum des posts? und 2. warte ich poste nochmal das ganze programm:

    #include <stdio.h>
    #include <stdlib.h>
    #ifdef __unix__
        #define clrscr() printf("\x1B[2J")
    #elif __BORLANDC__ && __MSDOS__
        #include <conio.h>
    #elif __WIN32__ || _MSC_VER
        #define clrscr() system("cls")
    #else
        #define clrscr() printf("clrscr() - Fehler!!\n")
    #endif
    
    #define X 'X'
    #define O 'O'
    #define LEER ' '
    #define GAME_OVER 0
    #define A_WINNER 1
    #define CONTINUE 2
    
    int main(void){
    	int i;
    		char Viergewinnt[6][7] = {	{' ',' ',' ',' ',' ',' '},
    									{' ',' ',' ',' ',' ',' '},
    									{' ',' ',' ',' ',' ',' '},
    									{' ',' ',' ',' ',' ',' '},
    									{' ',' ',' ',' ',' ',' '},
    									{' ',' ',' ',' ',' ',' '} 
    								 };
    
    		char Spieler1 = X;
    		/* Spieler2 hat das Zeichen 'O'. */
    		char Spieler2 = O;
    		/* Anzahl der Felder, die besetzt werden können */
    		unsigned int felder = 42;
    
    		void print_spielfeld(void);
    		char neuer_zug(char);
    		int if_win(void);
    
    		void print_spielfeld(void); {
    
       clrscr();
       printf("       1   2   3  \n     +---+---+---+\n");
       for(i = 0; i < 3; i++) {
          printf("  %d  | ",i+1);
          printf("%c",Viergewinnt[i][0]);
          printf(" | ");
          printf("%c",Viergewinnt[i][1]);
          printf(" | ");
          printf("%c",Viergewinnt[i][2]);
          printf(" | \n");
          if(i != 2) {
             printf("     +---+---+---+\n");
          }
          else {
             printf("     +---+---+---+\n");
          }
       }
    }
    
    	return 0;
    }
    

    Hier gibt er ein 3x3 Spielfeld (TicTacToe) aus ich will aber ein 6x7, was muss ich da noch beifügen?
    Das komische is, das void ghört wohin? weil bei tictactoe stehts dort und es funkt...



  • ca hier drüber steht die Uhrzeit.

    Blurp_ schrieb:

    Hier gibt er ein 3x3 Spielfeld (TicTacToe) aus ich will aber ein 6x7, was muss ich da noch beifügen?
    Das komische is, das void ghört wohin? weil bei tictactoe stehts dort und es funkt...

    Da TicTacToe ein 3x3 Feld hat könnte man ja mal nach den Dreien im Programm schauen und die mal durch 6 oder 7 ersetzen. Mal sehen was passiert.

    Und dann das ganze mal etwas näher am Standard:

    #include <stdio.h>
    #include <stdlib.h>
    
    void print_spielfeld(char Viergewinnt[6][7]);
    
    int main(void)
    {
            char Viergewinnt[6][7] = {  {' ',' ',' ',' ',' ',' '},
                                        {' ',' ',' ',' ',' ',' '},
                                        {' ',' ',' ',' ',' ',' '},
                                        {' ',' ',' ',' ',' ',' '},
                                        {' ',' ',' ',' ',' ',' '},
                                        {' ',' ',' ',' ',' ',' '}
                                     };
    
            char Spieler1 = X;
            /* Spieler2 hat das Zeichen 'O'. */
            char Spieler2 = O;
            /* Anzahl der Felder, die besetzt werden können */
            unsigned int felder = 42;
    
        print_spielfeld(Viergewinnt)     
        return 0;
    } // Hier ist main zu Ende
    
    // Außerhalb von main (davor oder danach, aber bitte nur an einer Stelle) können andere Funktionen definiert werden.
    void print_spielfeld(char Viergewinnt[6][7]) 
    {
        int i;
    
    //   clrscr();
       printf("       1   2   3  \n     +---+---+---+\n");
       for(i = 0; i < 3; i++) 
       {
          printf("  %d  | ",i+1);
          printf("%c",Viergewinnt[i][0]);
          printf(" | ");
          printf("%c",Viergewinnt[i][1]);
          printf(" | ");
          printf("%c",Viergewinnt[i][2]);
          printf(" | \n");
          if(i != 2) {  // Keine Ahnung was das soll
             printf("     +---+---+---+\n");  // hier wird eh das gleiche gedruckt
          }
          else {
             printf("     +---+---+---+\n");  // hier wird eh das gleiche gedruckt
          }
       }
    }
    // Als Trockenübung können da auch noch Fehler drin sein
    


  • Danke mal für deine große Hilfe 🙂

    Kurze Frage, wielange bleibst du heute noch online, bzw hast zeit mir zu helfen?



  • 20 Minuten.



  • ok, dann egal 😃 ich schau dass ich noch etaws zusammenbkomme bis morgen 😃

    Danke für deine große Hilfe aufjedenfall !



  • Hab das jz mal ausgeführt, aber iwie is das genauso wie das von vorher...bist du dir sicher, dass er da dann das 4gewinnt feld ausgibt?



  • Ich bin mir sicher, dass das TicTacToe Feld ausgegeben wird.
    Denn daran habe ich nichts geändert. Die Dreien (3) sind noch da wo sie waren.



  • //   clrscr();
       printf("       1   2   3   4   5   6   7	\n     +---+---+---+\n");
       for(i = 0; i < 6; i++)
       {
          printf("  %d  | ",i+1);
          printf("%c",Viergewinnt[0][0]);
          printf(" | ");
          printf("%c",Viergewinnt[1][1]);
          printf(" | ");
          printf("%c",Viergewinnt[2][2]);
          printf(" | \n");
          if(i != 7) {  // Keine Ahnung was das soll
             printf("     +---+---+---+\n");  // hier wird eh das gleiche gedruckt
          }
          else {
             printf("     +---+---+---+\n");  // hier wird eh das gleiche gedruckt
          }
       }
    }
    [\cpp]      printf("  %d  | ",i+1);
          printf("%c",Viergewinnt[i][0]);
    

    Irgendwie denk ich mir dass ich die Zeile 7 mal ausgeben muss, also bis [i][6], hab ich da recht?

    printf("     +---+---+---+\n");  // hier wird eh das gleiche gedruckt
    

    und das, ist was genau? x(


Anmelden zum Antworten