Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <time.h>
- #include <malloc.h>
- #include <stdlib.h>
- int main () {
- int eingabex=2, eingabey=10, eingabebomben=10; //angabe wie groß matrix
- int i=0, j=0, x=0, y=0; //hilfsvariablen fuer schleifen
- int bombenverteiler=0, xbombe=0, ybombe=0; //koordinaten fuer bombenverteilung
- int gamex=0, gamey=0; //koordinaten die im spiel eingegeben werden
- int feld[8][8];
- char feldgui[8][8];
- int lost=0;
- int summefelder = eingabex * eingabey; // fuers gewinnen
- // I. Teil, 8x8 matrix zufaellig mit bomben fuellen + rest mit nullen + bombenzahlen
- for(x=0; x < eingabex; x++){
- for(y=0; y < eingabey; y++){
- feld[x][y] = 0;
- }
- }
- // solange bomben in zufaellige felder des arrays packen, bis es 10 bomben an 10 verschiednen plaetzen gibtprintf("Die zahlen muessen > 0 sein \n");
- srand(time(NULL));
- while(bombenverteiler<eingabebomben){
- xbombe = rand() %(eingabex);
- ybombe = rand() %(eingabey);
- if (feld[xbombe][ybombe] == 0){
- feld[xbombe][ybombe]=-9; // -9 da ich bombenzahlen hochzaehle, und max. bomben um feld herum = 8
- bombenverteiler++;
- }
- }
- // zahlen eintragen, um anzahl bombem in umgebung anzugeben
- for(x=0; x<eingabex; x++){
- for(y=0; y<eingabey; y++){
- if(feld[x][y] == 0){
- for(i=(eingabex-1); i<(eingabex+1); i++){
- for (j=(eingabey-1); j<(eingabey+1); j++){
- if(i < 0 || i > (eingabex) || j < 0 || j > (eingabey)){
- // nix machen, da außerhalb des arrays
- //printf("auserhalb arrays \n");
- }
- else {
- //printf("im array \n");
- if(feld[i][j] < 0){
- feld[x][y] += 1;
- }
- }
- }
- }
- }
- }
- }
- //___________________________________________
- //II. Teil 'spielprogrammanfang', x und y koordinate eingeben, fuer das feld das man 'aufklicken' moechte
- // hilfsfeld / spiel'ansicht'
- for(x=0; x<eingabex; x++){
- for(y=0; y<eingabey; y++){
- feldgui[x][y] = '#';
- }
- }
- printf(" \t Minesweaperprogramm \n Bitte geben sie 2 Koordinaten an, zwischen 0 und %d fuer X, und zwischen 0 und %c fuer Y. \n", eingabex, eingabey);
- printf("Erster wert entspricht X-Koordinate, Zweiter wert entspricht Y-Koordinate \n");
- // anfangsmatrix ausgeben, unaufgedackte felder -> #
- printf("FELD: \n");
- for(x=0; x<eingabex; x++){
- for(y=0; y<eingabey; y++){
- printf("%c\t", feld[x][y]);
- }
- printf("\n \n");
- }
- printf("FELDGUI: \n");
- for(x=0; x<eingabex; x++){
- for(y=0; y<eingabey; y++){
- printf("%c\t", feldgui[x][y]);
- }
- printf("\n");
- }
- // anfang 'spiel'
- while (lost == 0){
- summefelder--; //hochzaehlan um herauszufinden, ob alle bombenaufgedeckt sind
- // eingabe des feldes das man aufdeckt
- printf("X-Koordinate: ");
- scanf("%d", &gamex);
- printf("Y-Koordinate: ");
- scanf("%d", &gamey);
- //gewonnen falls, zugnr - anzahl der felder = bomben+10
- if (0 <= gamex <= (eingabex) && 0 <= gamey <= (eingabey)){
- if (summefelder > eingabebomben){
- if(feld[gamex][gamey] < 0){ // da bomben = mind. -1
- printf(" \a YOU LOST THE GAME \a \n");
- feldgui[gamex][gamey] = 'B';
- //ausgabe endmatrix
- for(x=0; x<eingabex; x++){
- for(y=0; y<eingabey; y++){
- printf("%c\t", feldgui[x][y]);
- }
- printf("\n \n");
- }
- lost = 1;
- break;
- }
- else{
- if(feld[gamex][gamey] == 0){
- // feld 'aufdecken'
- feldgui[gamex][gamey] = '-';
- }
- else{
- // feld 'aufdecken'
- feldgui[gamex][gamey] = feld[gamex][gamey];
- }
- // ergebnismatrix ausgeben
- for(x=0; x<eingabex; x++){
- for(y=0; y<eingabey; y++){
- feldgui[x][y] == '-'? printf("%c \t", feldgui[x][y]):printf("%c \t", feldgui[x][y]);
- }
- printf("\n \n");
- }
- } // else klammer
- }
- else{
- printf("SIE HABEN GEWONNEN");
- }
- }
- else { //else falls Koordinaten nicht im array liegen
- printf("Koordinaten muessen zwischen 0 und %c liegen! \n", eingabey);
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment