Mein erstes Game :o) Und gleich buggy



  • So, gleich mein erster Beitrag ein Hilfeaufruf: Ich hab grad C gelernt (ulrich kaiser) und schreib grad ein Programm/Spiel. Keine Sorge, es wird nicht gleich ein Shooter, sondern ein TicTacToe für console :D. Im anhang mal der Code+ einmal hier noch (bitte schlagt mich für die Fehler nicht, ich fang ja grad erst an ^^)

    //EDIT: Das wichtigste, das Problem hab ich natürlich vergessen: Wenn man das Feld 2 1 (mitte oben) füllen will, wird gleich noch 3 1 gefüllt. Ka warum, hab schonmal alles durchgeguckt. N Kumpel von mir hatte bei ner alten Win-installation nen Speicherfehler, bei der neuen aber nicht. gcc kompiliert bei mir ohne meckern...

    Download

    hier nochmal das Buch: C/C++: Von den Grundlagen zur professionellen Programmierung | ISBN: 3934358039

    //edit @ Kuldren: hät ich mir fast gedacht 🤡
    main.C

    #include <stdio.h>
    #include "game.h"
    //#include <stdlib.h>
    
    int main()
    {
    int rounds;
    
    	/**************************************************/
    	char **field = (char **) malloc( 3 * sizeof( char ) ); // speicher 1. dimension allokieren
    	int i ;
    	for( i = 0; i < 3; i++ ) // speicher für 2. dimension allokieren
    	{
    		field[i] = (char *) malloc( 3 * sizeof( char ) );
    	} // ende speicher allokieren
    	/**************************************************/
    
    	system ("clear");
    
    	first_usage(field); //Füllen des arrays
    
    	greetings(); //begrüßung
    
    	printfield (field); //ausgabe des Spielfelds
    
      for (rounds=0; rounds<9; rounds++)
    	 {
    	  put (field); //setzen von zeichen
    
    	  printfield (field); //resultierendes ergebniss
    
    	  check (field); //überprüfen von eventuellem Spielende
    	 }
    
    	printf ("Unentschieden\n");
    
    	wait(5); //wartezeit vor Programmende
    
    	system("clear"); //leeren der Konsole
    
    	return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void greetings ()
    {
    	char answer[20];
    	printf ("Lust auf eine Runde TicTacToe? (ja/nein)\n" );
    	scanf  ( "%s", answer );
    
    	if ( answer[0] == 'j' )
    	{
    		printf ( "supi!\n" );
    		return;
    	}
    	printf ( "*ganzBöseUndZensiert*\n" );
    	exit( 0 );
    }
    
    void printfield(char **field)
    {
    	printf ("      1     2     3  \n");
    
    	printf ("         |     |   \n1     %c  |  %c  |  %c \n    _____|_____|_____\n", field[0][0], field[0][1], field[0][1]);
    	printf ("         |     |   \n2     %c  |  %c  |  %c \n    _____|_____|_____\n", field[1][0], field[1][1], field[1][2]);
    	printf ("         |     |   \n3     %c  |  %c  |  %c \n         |     |     \n", field[2][0], field[2][1], field[2][2]);
    }
    
    void put(char **field)
    {
    int row;
    int column;
    
    printf ("Koordinaten: ");
    scanf  ("%d %d", &row, &column);
    
    row=row-1;
    column= column-1;
    
    field [column][row]= 'O';
    }
    
    void wait( int secs )
    {
    
    	clock_t end = clock() + secs * CLOCKS_PER_SEC;
    
    	while( clock() < end )
    		;
    
    }
    
    void first_usage (char **field)
    {
    	int i;
    	int j;
    	for (i=0; i<= 2; i++)
    	{
    		for (j=0; j<= 2; j++)
    		{
    			field [i][j]= ' ';
    		}
    	}
    
    }
    
    void check(char **field)
    {
     int checkx=0;
     int checky=0;
    
     for (checkx=0; checkx<=2; checkx++)
     {
     	if (field[checkx][checky]=='O' && field[checkx][checky+1]=='0' && field[checkx][checky+2]=='0')
     	{
     		printf ("Sie haben gewonnen!!!111einself");
    
     		wait(5); //wartezeit vor Programmende
     		system("clear"); //leeren der Konsole
     		exit (0);
     	}
     }
    
     for (checky=0; checky<=2; checky++)
     {
    	if (field[checky][checkx]=='O' && field[checky][checkx+1]=='0' && field[checky][checkx+2]=='0')
    	{
     		printf ("Sie haben gewonnen!!!111einself\n");
    
     		wait(5); //wartezeit vor Programmende
     		system("clear"); //leeren der Konsole
     		exit (0);
     	}
     }
    
    }
    

    Und konsolenlog

    1     2     3  
             |     |   
    1        |     |    
        _____|_____|_____
             |     |   
    2        |     |    
        _____|_____|_____
             |     |   
    3        |     |    
             |     |     
    Koordinaten: 2 1
          1     2     3  
             |     |   
    1        |  O  |  O 
        _____|_____|_____
             |     |   
    2        |     |    
        _____|_____|_____
             |     |   
    3        |     |    
             |     |
    

    Is noch sehr schwachsinnig das Programm und auf Einzelheiten sind noch keine Rücksicht genommen. Erstmal müssen die basics laufen 😞



  • Kopier deinen Code doch in deinen Post, Dateien extra runterladen zu müssen hält viele davon ab dir zu helfen;)



  • was hast du den für einen fehler ?



  • Sorry, habs grad gesehen 😛 Is gefixt

    //edit: alle ruder zurück, eine Zahl kann vieles kaputtmachen. Fehler gefunden und eliminiert

    printf (" | | \n1 %c | %c | %c \n ||_____\n", field[0][0], field[0][1], field[0][1]);

    muss

    printf (" | | \n1 %c | %c | %c \n ||_____\n", field[0][0], field[0][1], field[0][2]);

    lauten



  • Spommel schrieb:

    Firefox. Take back the web. Klick

    lustig 👍



  • dafür muss man erstmal die ruder benutzen 😛



  • Ein wenig Werbung muss ja sein 😉

    @ sache mit den Rudern: Oh, ich hab schon lange gesucht, ich renn nicht gleich mit jedem Fehler zu nem Forum, auch wenns ehrlichgesagt so aussieht 😉


Anmelden zum Antworten