Minesweeper
-
Hallo , ich bin recht neu im Berreich des Programmierens und muss nun für die Schule Minesweeper proggen.
Ein paar "Baustellen" habe ich schon abgearbeitet aber jetzt weiß ich wirklich nichtmehr weiter , meinen Code füge ich im späteren Verlauf mit an.
Was schon klappt ( klappen sollte ):
Das Spielfeld wird ausgegeben und man kann mit einem Cursor durch die einzelnen Reihen ( per w a s d ).
Eigentlich müssten die Mienen auch schon auf einem 2. Feld platziert werden, aber ich bin mir nicht wirklich sicher ob sie das auch werden oO.Was noch nicht klappt :
Ich kann noch keine Felder aufdecken ( eigentlich muss ich ja nur das Spielfeld mit dem Mienenfeld vergleichen und den Wert von dem Mienenfeld in das Spielfeld schreiben , aber irgendwie will das nicht so richtig.und noch einiges anderen nicht womit ich mich aber noch nicht beschäftigt habe. Es geht erstmal um das Problem das ich keine Felder aufdecken kann , und die Frage ob das mit dem zufälligen verteilen der Mienen so richtig ist.
Der Code wird euch in Sachen Formatierung wahrscheinlich das Wasser in die Augen treiben , aber ich hab von Formatierung noch keine Ahnung , wenn ihr aufgrund der Formatierung nichts damit anfangen könnt danke ich euch trozdem das ihr es euch mal angesehen habt.
#include "stdafx.h" //// Deklarierung globaler Variablen //// char minenfeld[10][10]; char spielfeld[10][10]; int position1=1,position2=1; char interaktion; int beenden=1; int x,y; int i,anzahldermienen=3; int random[2]; char mienenfeld () { for(x=0;x<=9;x++) { for (y=0;y<=9;y++) minenfeld[x][y] = ' '; } return minenfeld[10][10]; } //---------------------------------------------------------------------------------------------/ int minen() { rand(); for(i=1;i<=anzahldermienen;i++) { random[0] = rand()+1 % 10; random[1] = rand()+1 % 8; minenfeld[random[0]][random[1]] = '+'; } return minenfeld[10][10]; } int spielfelde() { for(x=0;x<=9;x++) { for (y=0;y<=9;y++) spielfeld[x][y] = '#'; } spielfeld[position1][position2] = '_'; for(x=0;x<=9;x++) { for (y=0;y<=9;y++) { printf("%c",spielfeld[x][y]); }; printf("\n"); } scanf("%c",&interaktion); if ( interaktion == 's') { position1++; } if ( interaktion == 'w') { position1--; } if ( interaktion == 'a') { position2--; } if (interaktion == 'd') { position2++; } if ( interaktion == 'q') { spielfeld[position1][position2] = minenfeld[position1][position2]; } return spielfeld[position1][position2]; } void main() { while ( beenden != 0) { spielfelde(); system ("cls"); } system("Pause"); }
-
Ich persönlich ziehe es vor die Bibliotheken in <> zu schreiben.
Mit deinem Problem kann ich dir aber sonst nicht weiterhelfen.
-
zu Fkt minen
int minen() { rand(); // falsch benutze hier srand(time(NULL)); for(i=1;i<=anzahldermienen;i++) { //random[0] = rand()+1 % 10; // ? //random[1] = rand()+1 % 8; // ? random[0] = rand() % 10; // intervall 0 bis 9 genau wie bei minenfeld random[1] = rand() % 10; minenfeld[random[0]][random[1]] = '+'; } return minenfeld[10][10]; }
-
Übrigens: Das Element "minenfeld[10][10]" ist kein gültiges Element des 10x10-Arrays (maximaler Index ist [9][9]). Außerdem solltest du in der Schleife innerhalb von minen() abfragen, ob die Mine schon gesetzt wurde.
PS: Und ganz wichtig: du mußt die Funktionen "mienenfeld()" und "minen()" auch aufrufen (und du mußt irgendwo die Siegbedingung abfragen).