Schiffe setzen in C Brauche dringend hilfe
-
hallo,
bitte verzeiht, wenn ich falsche poste, aber brauche dringend hilfe.
ich bin gerade dabei das spiel schiffe versenken in c zu programmieren.
das spielfeld habe ich schon hinbekommen, aber leider weiss ich nicht wie ich auf die einzelnen felder zugreifen kann.wie setze ich zb auf das Feld a3-a6 einen schiff mit der länge 4 bzw 5 kästchen?
wie bekomme ich für einen treffer "X" und
für einen fehlschuss "O"?danke und hoffe das jemand schnellsmöglich antworten kann
mein quellcode für das spielfeld:
#include <stdio.h> #define max 10 int main() { char spielfeld[max][max]; short i,j,k; for(i = 0; i < max; i++) for(j = 0; j<max; j++) spielfeld[i][j] = 31 + i + j; printf("\n\t "); for(k = 0; k < max; k++) printf(" %c", k+65); for(i = 0; i < max; i++) { printf("\n\t "); for(k = 0; k < max; k++) printf(" -- "); printf("\n"); printf("%\t%2hi ",i+1); for(j = 0; j < max; j++) printf("| %c ", spielfeld[i][j]); printf("|"); } printf("\n\t "); for(k = 0; k < max; k++) printf(" -- "); printf("\n"); return 0; }
-
So kann man den Array ansprechen...
spielfeld[0][3]='$';
Wenn su schiesst kannst du ja prüfen ob das Feld ein '$' enthält, und wenn es so ist dann schreib ein 'x' hinein, wenn es leer ist dann ein 'o'.
-
danke für deine antwort xoxo :D,
kannst du mir auch sagen wie ich das mit dem prüfen mache...ich nehme an mit "if"?
ich hab wirklich überall geschaut und auch gegoogelt, aber leider finde ich nichts taugliches...und es wäre super, wenn du mir bitte als beispiel einen quellcode schreiben könntest der per tastatur die koordinaten des schiffes abfragt und und hinterher die schiffe an diese stelle setzt, damit ich wenigstens eine richtlinie hab
ich danke dir für deine mühe...
-
Hier fehlts wohl generell an den Grundlagen. Sorry - soll keine Beleidigung
sein - aber Programmieren sollte man mit einfachen Aufgaben beginnen.
So ein "Schiffe versenken" ist doch etwas aufwendig für den Einstieg.
Das Ansprechen von arrays, Abfragen usw sollte man erst mal "intus" haben,
bevor man so was angeht. Ich hab da so knapp 28 Jahre Berufserfahrung,
was das Entwicklen angeht - angefangen von S/370 Assembler über SAP/ABAP
bis C - und immer mit einfachen Problemstellungen angefangen.
Der Rest ist dann - wie mein damaliger Chef gesagt hat - üben, üben, üben....
-
So in etwa kann ma das recht einfach machen:
char caTemp[3]; int iColumn,iRow; //Position einlesen gets(caTemp); iColumn=toupper((int)caTemp[0]); iRow=caTemp[1]; if(((iColumn-64)<0 || (iColumn-64)> max) && (iRow<0 || iRow> max)) { printf("ungueltiges Feld\n"); return; }
So könnte man eine Position bestimmen um dann mit:
spielfeld[iColumn][iRow]='$';
ein Schiff zu setzten, oder
if(spielfeld[iColumn][iRow]=='$') spielfeld[iColumn][iRow]='x'; else spielfeld[iColumn][iRow]='o';
ein Schiff beschiessen. o verfehlt, x getroffen.
Du solltest dir umbedingt die Grundlagen aneignen, ansonsten kommt du nicht wirklich schnell vorwärts, wenn du alles im Internet und in Foren zusammensuchen musst!