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...
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