Minesweeper programmieren mit c# in Visual Studio?
Im grunde sagt der Titel ja schon einiges.
Ich brauche für die Schule ein minesweeper Porgramm/Spiel welches am besten mit c# und Visual Studio erstellt wurde. Leider hab ich absolut keine Ahnung wie ich das ganze angehen soll, geschweige wie das ganze überhaupt geht. Würde mich über jegliche Form der Hilfe freuen :P Mfg. Jannik
2 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren
Okay, gehen wir mal davon aus, dass du die Oberfläche (das Ding mit den Knöpfen und so) auf die Reihe kriegst.
Dann bleibt nur noch eine "Kleinigkeit" übrig:
- Nimm ein 2-Dimensionales int-Array (int[,] field = new int[width,height])
- Verteile die Minen (z.B. als -1) mithilfe eines System.Random Objektes über das Array.
- Gehe das Feld Zelle für Zelle durch und überprüfe, wie viele Minen horizontal und vertikal an die jeweilige Zelle angrenzen; erhöhe den Wert im Array um 1. (Ausser, wenn der Wert der betrachteten Zelle -1 ist, in dem Fall gehts direkt mit der nächsten weiter.)
- Jetzt haben wir das Feld soweit fertig, fehlt noch der Klick auf eine Zelle.
- Wenn der Wert der geklickten Zelle -1 ist: BOOM! ;)
- Wenn der Wert der geklickten Zelle >0 ist: Die Zelle aufdecken.
- Wenn der Wert der Zelle exakt 0 ist: "Flood-Fill"-mäßig die komplette 0-Fläche aufdecken (und natürlich die !=0 Zellen der Kontur.)
Beispiel für den ersten Teil:
int width=20, height=10;
int mines = 15;
int[,] field = new int[width,height];
Random rng = new Random();
while(mines>0){
int x = rng.Next(width);
int y = rng.Next(height);
if(field[x,y]==0){
field[x,y]=-1;
--mines;
}
}
for(int y=0;y<height;++y){
for(x=0;x<width;++x){
if(y>0){
if(field[x,y-1]==-1) ++field[x,y];
}
if(x>0){
if(field[x-1,y]==-1) ++field[x,y];
}
if(y<height-1){
if(field[x,y+1]==-1) ++field[x,y];
}
if(x<width-1){
if(field[x+1,y]==-1) ++field[x,y];
}
}
}
P.S.: Wenns echt für die Schule ist, dann solltest du ab hier erstmal klarkommen. Wenn nicht, "gib laut". ;)
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren
Minesweeper für die Schule ist schon etwas heftig...?
besser kannst Du es nicht dokumentiert bekommen: