4 - gewinnt in C
-
Hallo Leuter, also ich habe ein kleines Problem, bis morgen müssen wir ein Beispiel abgeben und zwar 4 gewinnt
Wenn ich nichts habe bekomm ich wahrscheinlich einen 5er, aber wenn ich wenigstens den Anfang habe oder bisschen mehr geht sich locker der 4er ausAlso, deshalb bitte ich euch mir ein bisschen dabei zu helfen...
Zur Basis hätte ich zwar ein einwandfreies Tic Tac Toe, aber ich wüsste nicht was ich mit dem anfangen könte, ich weiß zwar dass ich ein mehrdimensionales array brauche und dass ich nur die spalte eingeben darf wo ich setzen kann, aber das z.B. mit der check funktion wer gewonnen hat und mit der ausgabe und das ganze, das versteh ich nicht ganz...Ich bin eher so einer, der nicht weiß wie er beginnen soll...könnte mir da jmd. vielleicht ein bisschen auf die Sprünge helfen?
Und bitte nicht das ganze 4 gewinnt posten, das würde mir nichts bringen, denn wenn er fragt muss ich ja auch wissen was ich da ungefähr gemacht habe.
Danke schonmal im vo r r a u _s !
mfg
Blurp
-
Die ganzen Feiertage Zeit gehabt und nicht genutzt.
Hilfeanfragen für 4-Gewinnt kommen hier im Forom öfter.
Mal suchen gehen.
-
Vor allem ist gleich auf der ersten Seite ein Thread dazu. Der Code dort ist zwar schrecklich, aber eine 3 wird's sein.
-
Applaus!
Wie braun muss man sein, um spätnachmittags um 17:15 ein Vier-gewinnt Spiel für den nächsten Morgen haben zu wollen? Das mit der miesen Note geht für mich vollkommen in Ordnung, nix gemacht -> nix bekommen. Beim nächsten Mal vielleicht ein paar Tage früher anfangen und etwas Eigeninitiative zeigen.
-
Blurp_ schrieb:
Ich bin eher so einer, der nicht weiß wie er beginnen soll...könnte mir da jmd. vielleicht ein bisschen auf die Sprünge helfen?
Eher einer, der zur faulen Gesellschaft gehört.
So fängst du am besten an:
Stift besorgen. Papier besorgen. Spielfeld aufkrizeln. In kleinsten Schritten vorgehen und schauen, wie du die Gewinnabfrage per Hand machen würdest:
Steht in Feld x ein O? Falls ja, steht in den relevanten benachbarten Feldern auch ein O?
Usw.
Und falls es nur um Schule geht: Da verkraftet man schonmal die eine oder andere 5.
-
schnickas schrieb:
Und falls es nur um Schule geht: Da verkraftet man schonmal die eine oder andere 5.
Für jemanden mit dieser Einstellung ist das sicherlich nicht nur die eine oder andere...
-
Jetzt sagt nicht alle dass ich faul bin -.-
Ich hab auf den Test eine 3 geschrieben, und somit einen 4er ins Zeugnis bekommen, sagt er plötzlich heute wir sollen die Übung abgeben...Hallo...das kann ich ja nicht wissen dass er die auf einmal haben will, wobei er eig. vor 2 wochen (da wir letzte woche auf projektwoche waren) nichts gesagt hat von abgeben oder sonstiges...
Aber danke an die die mir nicht sagen dass ich dumm und faul bin sondern mir helfen..danke
Achja und noch etwas: Ich hab schon geschaut im Internet wegen 4-gewinnt...aber wir haben die ganzen Sachen nicht gemacht die dort vorkommen, und es wär ja doch bisschen komisch wenn ich mit sachen kommen würde die wir gar nicht gemacht haben..
mehrdimensionale arrays und präprozessor direktiven waren die letzen Themen bei uns
-
SeppJ schrieb:
schnickas schrieb:
Und falls es nur um Schule geht: Da verkraftet man schonmal die eine oder andere 5.
Für jemanden mit dieser Einstellung ist das sicherlich nicht nur die eine oder andere...
Naja, keine vorurteile amchen...das wäre die einzige 5 im ganzen zeugnis, und ja, nachprüfung muss ja nicht unbedingt sein, also hätt ich jz ne 5 würde ich jz noch ne prüfung machen würd ich die verhauen dann im herbst...also ich bin nicht dumm oder so, informatik versteh ich halt ned ganz
-
Blurp_ schrieb:
mehrdimensionale arrays und präprozessor direktiven waren die letzen Themen bei uns
Und was brauchst du außer mehrdimensionalen Arrays, Ein-/Ausgabe und einfachen Kontrollstrukturen? Ein Code im Internet für C wird nicht mehr benutzen.
Und hättest du die letzte Stunde damit verbracht, das Programm selber zu schreiben, wärest du schon fertig. Wenn du einen Ansatz brauchst, folge dem was schnickas sagt. Wenn du konkrete technische Hilfe brauchst, stell konkrete technische Fragen.
-
Okay, ich werds jz mal probieren...
Falls es jmd. machen möchte, so würde die AUfgabenstellung aussehen:
1. Aufgabe
Vier gewinnt
Vier gewinnt, ist ein Zweipersonen-Strategiespiel mit dem Ziel, als Erster vier der eigenen Spielsteine
in eine Linie zu bringen.
Regeln:
Das klassische Brettspiel wird auf einem senkrecht stehenden hohlen Spielbrett gespielt, in das die
Spieler abwechselnd ihre Spielsteine fallen lassen. Das Spielbrett besteht aus sieben Spalten
(senkrecht) und sechs Reihen (waagerecht). Jeder Spieler besitzt 21 gleichfarbige Spielsteine. Wenn
ein Spieler einen Spielstein in eine Spalte fallen lässt, besetzt dieser den untersten freien Platz der
Spalte. Gewinner ist der Spieler, der es als erster schafft, vier oder mehr seiner Spielsteine waagerecht,
senkrecht oder diagonal in eine Linie zu bringen. Das Spiel endet unentschieden, wenn das Spielbrett
komplett gefüllt ist, ohne dass ein Spieler eine Viererlinie gebildet hat.Aufgabe:
Realisieren Sie Vier gewinnt als C-Programm.
Folgende Eigenschaften muss das Spiel mindestens haben:
· Spieler gegen Spieler
· Erkennung der Gewinnbedingung für beide Spieler
Verwenden Sie dabei ein mehrdimensionales Array ähnlich wie in Kapitel „11.9.1“ der Abschnitt über
„Tic Tac Toe“ aus dem Buch „C von A bis Z“. Nachdem Sie in einem Konsolenprogramm keine echte
Grafik zur Verf
-
Ihr lernt in der Schule mit dem Buch "C von A bis Z"
. Ihr Armen.
-
Hmm, ich hab jz bisschen mit dem TicTacToe gearbeitet.
#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){ 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) { 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) { printf(" +---+---+---+\n"); } else { printf(" +---+---+---+\n"); } } } return 0; }
Also wenn ich ehrlich bin versteh ich das nicht, warum das hier gebraucht wird:
#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
Spieler 1 hat X dann im feld das is klar, und spieler 2 die 0
Das Feld ist dann auch 6 Reihen und 7 Spalten groß
Aja, genau, dann weise ich dem wert feld (der vorzeichenlos ist) dem wert 42 zu ( da das feld 42 kästchen hat(6*7)
Diesen Teil versteh ich nicht ganz:
void print_spielfeld(void); char neuer_zug(char); int if_win(void); void print_spielfeld(void) { 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) { printf(" +---+---+---+\n"); } else { printf(" +---+---+---+\n"); } } }
-
SeppJ schrieb:
Ihr lernt in der Schule mit dem Buch "C von A bis Z"
. Ihr Armen.
Also ich persönlich finde das Buch gar nicht schlecht, aber vielleicht liegt das daran dass ich keine anderen kenne. Ich kann mir gut vorstellen dass mein Lehrer auch in dem Forum angemeldet ist, ich frag ihn morgen
Könntest du mir da vielleicht weiterhelfen ein bisschen?
Wenigstens dass einmal das Speilfeld funktioniert und so ausschaut wie ein 4 gewinnt spielfeld, das könnt ja schon mal was^^
-
Blurp_ schrieb:
SeppJ schrieb:
Ihr lernt in der Schule mit dem Buch "C von A bis Z"
. Ihr Armen.
Also ich persönlich finde das Buch gar nicht schlecht, psccht ich kann mir gut vorstellen dass er auch in dem Forum angemeldet ist, ich frag ihn morgen
Das Buch ist bekannt dafür, sich gut zu lesen, aber voller fachlicher Fehler zu sein, die man nur bemerkt, wenn man richtig C kann. Und Anfänger die danach gelernt haben wundern sich, warum nichts funktioniert, sobald sie mal etwas "richtiges" programmieren.
-
SeppJ schrieb:
Blurp_ schrieb:
SeppJ schrieb:
Ihr lernt in der Schule mit dem Buch "C von A bis Z"
. Ihr Armen.
Also ich persönlich finde das Buch gar nicht schlecht, psccht ich kann mir gut vorstellen dass er auch in dem Forum angemeldet ist, ich frag ihn morgen
Das Buch ist bekannt dafür, sich gut zu lesen, aber voller fachlicher Fehler zu sein, die man nur bemerkt, wenn man richtig C kann. Und Anfänger die danach gelernt haben wundern sich, warum nichts funktioniert, sobald sie mal etwas "richtiges" programmieren.
aso, ja, deswegen geht bei mir nix
nein scherz^^
Hast du ne idee zu dem was ichschon gepostet habe?
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"); } } }
ich persönlich glaub ja dass ich bei der forschleife nicht 3 nehmen muss sondern 7, und dass ich 7 printf machen muss und nicht 3 , clearscreen is logisch, da gibts as einfach immer wieder neu aus nach jedem zug
printf(" 1 2 3 \n +---+---+---+\n");
also das 1 2 3 versteh ich nicht dann einfach nen zeilenumbruch und dann wieder
+---+---+---+
is glaub ich das feldund das:
if(i != 2) { printf(" +---+---+---+\n"); } else { printf(" +---+---+---+\n");
is halt auch rätselhaft für mich..
-
Kommt schon bitte Leute, helft mir weiter
-
Blurp_ schrieb:
Kommt schon bitte Leute, helft mir weiter
Darf man auch mal etwas essen?
Schnapp dir einen Compiler und probier es aus!
-
natürlich darf man was essen
sry
ich hab Microsoft visual c++ compiler, er sagt zwar keinen fehler aber er gibt einfach nichts aus, gar nichts...das wundert mich ja...
-
Blurp_ schrieb:
ich hab Microsoft visual c++ compiler, er sagt zwar keinen fehler aber er gibt einfach nichts aus, gar nichts...das wundert mich ja...
Ich würde mal sagen, der gibt schon was aus - nur schließt er das Fenster wieder, bevor du diese Ausgabe betrachten kannst.
(in den FAQs findest du sicher auch eine Lösung, wie du das verhinderst)
-
nein, ich glaub ich weiß was du meinst, starten ohen debugging, dann kommt das cmd fenster wo steht: Bitte beliebige taste drücken oder sowas...aber er gibt kein feld aus...
oder meinst du was anderes?