Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <ctype.h>
- #define ZEILEN 26
- #define SPALTEN 26
- #define GROSS_A 65
- void feldAnzeigen(int feldberechnet[ZEILEN][SPALTEN], int feldwerte[ZEILEN][SPALTEN], int zeilen, int spalten);
- void feldAnzeigenEnde(int feld[ZEILEN][SPALTEN], int zeilen, int spalten);
- void feldFuellen(int feld[ZEILEN][SPALTEN], size_t zeilen, size_t spalten, int bomben);
- void feldBerechnen(int feld[ZEILEN][SPALTEN], int zeilen, int spalten);
- void eingabefeld(int *xkord, int *ykord, int zeilen, int spalten);
- int pruefBombe(int feld[ZEILEN][SPALTEN], int xkord, int ykord);
- //void feldAufdecken(int feldberechnet[ZEILEN][SPALTEN], int feldwerte[ZEILEN][SPALTEN], int xkord, int ykord, int zeilen, int spalten);
- //int feldAufdeckenNullen(int feldberechnet[ZEILEN][SPALTEN], int feldwerte[ZEILEN][SPALTEN], int zeilen, int spalten);
- int main() {
- char eingabe[300], dummy1, dummy2;
- int ok, zeilen = 25, spalten = 25, bomben = 1;
- printf("\nWillkommen bei Minesweeper!\n"
- "Wieviele Spalten soll das Feld beinhalten? (max: %d)\n", SPALTEN);
- do {
- printf("--->");
- fgets(eingabe, 300, stdin);
- ok = sscanf(eingabe, "%d%c%c", &spalten, &dummy1, &dummy2);
- ok != 2 ? printf("Falsche Eingabe!\n") : ok;
- spalten > SPALTEN ? printf("Spaltenanzahl zu hoch!\n"): ok;
- spalten < 1 ? printf("Spaltenanzahl zu gering!\n"): ok;
- }while(ok != 2 || spalten > SPALTEN || spalten < 1);
- printf("Wieviele Zeilen soll das Feld beinhalten ? (max: %d)\n", ZEILEN);
- do {
- printf("--->");
- fgets(eingabe, 300, stdin);
- ok = sscanf(eingabe, "%d%c%c", &zeilen, &dummy1, &dummy2);
- ok != 2 ? printf("Falsche Eingabe!\n") : ok;
- zeilen > ZEILEN ? printf("Zeilenanzahl zu hoch!\n"): ok;
- zeilen < 1 ? printf("Zeilenanzahl zu gering!\n"): ok;
- }while(ok != 2 || zeilen > ZEILEN || zeilen < 1);
- printf("Wieviele Bomben soll das Feld beinhalten? (max: %d)\n", zeilen*spalten);
- do {
- printf("--->");
- fgets(eingabe, 300, stdin);
- ok = sscanf(eingabe, "%d%c%c", &bomben, &dummy1, &dummy2);
- ok != 2 ? printf("Falsche Eingabe!\n") : ok;
- bomben > zeilen*spalten ? printf("Bombenanzahl zu hoch!\n") : ok;
- bomben < 1 ? printf("Bombenanzahl zu gering!\n") : ok;
- } while (bomben > zeilen*spalten || bomben < 1 || ok != 2);
- int bombenfeld[zeilen][spalten], i, j;
- for (j = 0; j < zeilen; j++) {
- for ( i = 0; i < spalten; i++){
- bombenfeld[j][i] = 0;
- }
- }
- feldFuellen(bombenfeld, zeilen, spalten, bomben);
- feldBerechnen(bombenfeld, zeilen, spalten);
- /*int feldaufgedeckt[zeilen][spalten], j, i;
- for (j = 0; j < zeilen; j++) {
- for (i = 0; i < spalten; i++) {
- feldaufgedeckt[j][i] = 0;
- }
- }
- int xkord, ykord;
- */
- feldAnzeigenEnde(bombenfeld, zeilen, spalten);
- /*do {
- feldAnzeigen(bombenfeld, feldaufgedeckt, zeilen, spalten);
- eingabefeld(&xkord, &ykord, zeilen, spalten);
- if(pruefBombe(bombenfeld, xkord, ykord)){
- break;
- }
- } while (1);
- printf("BOOM!\n");
- feldAnzeigenEnde(bombenfeld, zeilen, spalten);
- */
- putchar('\n');
- return 0;
- }
- void feldAnzeigenEnde(int feld[ZEILEN][SPALTEN], int zeilen, int spalten){
- int i, j;
- printf("\n ");
- for (i = 0; i < spalten; i++) {
- printf(" %c", GROSS_A + i);
- }
- putchar('\n');
- for (i = 0; i < spalten + spalten + 4; i++) {
- putchar('*');
- }
- putchar('\n');
- for (j = 0; j < zeilen; j++) {
- printf("%2d ", j + 1);
- putchar('|');
- for (i = 0; i < spalten; i++) {
- if(feld[j][i] == -1){
- printf("X|");
- }
- else if(feld[j][i] == 0){
- printf(" |");
- }
- else{
- printf("%d|", feld[j][i]);
- }
- }
- putchar('\n');
- }
- for (i = 0; i < spalten + spalten + 4; i++) {
- putchar('*');
- }
- }
- void feldFuellen(int feld[ZEILEN][SPALTEN], size_t zeilen, size_t spalten, int bomben){
- srand(time(NULL));
- int i, bombenzeile, bombenspalte;
- for (i = 0; i < bomben;) {
- bombenzeile = rand() % zeilen;
- bombenspalte = rand() % spalten;
- if(feld[bombenzeile][bombenspalte] == -1){
- continue;
- }
- else if(feld[bombenzeile][bombenspalte] != -1){
- feld[bombenzeile][bombenspalte] = -1;
- i++;
- }
- }
- }
- void feldBerechnen(int feld[ZEILEN][SPALTEN], int zeilen, int spalten){
- int i, j, anzahl = 0;
- for (j = 0; j < zeilen; j++) {
- for (i = 0; i < spalten; i++) {
- if(feld[j][i] == -1){
- continue;
- }
- if(i - 1 >= 0 && j - 1 >= 0){
- if(feld[j - 1][i - 1] == -1){
- anzahl++;
- }
- }
- if(j - 1 >= 0){
- if(feld[j-1][i] == -1){
- anzahl++;
- }
- }
- if(j - 1 >= 0 && i + 1 < spalten){
- if(feld[j-1][i+1] == -1){
- anzahl++;
- }
- }
- if(i - 1 >= 0){
- if(feld[j][i-1] == -1){
- anzahl++;
- }
- }
- if(i + 1 < spalten){
- if(feld[j][i+1] == -1){
- anzahl++;
- }
- }
- if(j + 1 < zeilen && i - 1 >= 0){
- if(feld[j+1][i-1] == -1){
- anzahl++;
- }
- }
- if(j + 1 < zeilen){
- if(feld[j+1][i] == -1){
- anzahl++;
- }
- }
- if(j + 1 < zeilen && i + 1 < spalten){
- if(feld[j+1][i+1] == -1){
- anzahl++;
- }
- }
- feld[j][i] = anzahl;
- anzahl = 0;
- }
- }
- }
- void eingabefeld(int *xkord, int *ykord, int zeilen, int spalten){
- printf("\n\nGeben Sie das gewuenschte Feld ein (zB. A5)\n");
- int ok;
- char eingabe[300], dummy1, dummy2, kordx;
- spalten = spalten + GROSS_A;
- do {
- printf("--->");
- fgets(eingabe, 300, stdin);
- ok = sscanf(eingabe, "%c%d%c%c", &kordx, ykord, &dummy1, &dummy2);
- kordx = toupper(kordx);
- if(ok != 3){
- printf("Falsche Eingabe!\n");
- }
- else {
- !isupper(kordx) ? printf("Kein Spaltenbuchstabe angegeben!\n") : ok;
- kordx >= spalten ? printf("Zu grosse Spalte angegeben!\n") : ok;
- *ykord > zeilen ? printf("Zu grosse Zeile angegeben!\n") : ok;
- }
- } while (ok != 3 || !isupper(kordx) || kordx >= spalten || *ykord > zeilen);
- *xkord = kordx - GROSS_A;
- (*ykord)--;
- }
- int pruefBombe(int feld[ZEILEN][SPALTEN], int xkord, int ykord){
- if(feld[ykord][xkord] == -1){
- return 1;
- }
- return 0;
- }
- void feldAnzeigen(int feldberechnet[ZEILEN][SPALTEN], int feldwerte[ZEILEN][SPALTEN], int zeilen, int spalten){
- int i, j;
- printf("\n ");
- for (i = 0; i < spalten; i++) {
- printf(" %c", GROSS_A + i);
- }
- putchar('\n');
- for (i = 0; i < spalten + spalten + 4; i++) {
- putchar('*');
- }
- putchar('\n');
- for (j = 0; j < zeilen; j++) {
- printf("%2d ", j + 1);
- putchar('|');
- for (i = 0; i < spalten; i++) {
- if(feldwerte[j][i] == 1){
- printf("%d|", feldberechnet[j][i]);
- }
- else{
- printf(" |");
- }
- }
- putchar('\n');
- }
- for (i = 0; i < spalten + spalten + 4; i++) {
- putchar('*');
- }
- }
- /*
- void feldAufdecken(int feldberechnet[ZEILEN][SPALTEN], int feldwerte[ZEILEN][SPALTEN], int xkord, int ykord, int zeilen, int spalten){
- if(feldberechnet[ykord][xkord] == 0){
- feldwerte[ykord][xkord] = 1;
- //while (feldAufdeckenNullen(feldberechnet, feldwerte, zeilen, spalten));
- }
- }
- int feldAufdeckenNullen(int feldberechnet[ZEILEN][SPALTEN], int feldwerte[ZEILEN][SPALTEN], int zeilen, int spalten){
- int anzahl = 0, i, j;
- for (j = 0; j < zeilen; j++) {
- for (i = 0; i < spalten; i++) {
- if(i - 1 >= 0 && j - 1 >= 0){
- }
- if(j - 1 >= 0){
- }
- if(j - 1 >= 0 && i + 1 < spalten){
- }
- if(i - 1 >= 0){
- }
- if(i + 1 < spalten){
- }
- if(j + 1 < zeilen && i - 1 >= 0){
- }
- if(j + 1 < zeilen){
- }
- if(j + 1 < zeilen && i + 1 < spalten){
- }
- }
- }
- }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement