Makaveli123 Δημοσ. 14 Ιανουαρίου 2017 Share Δημοσ. 14 Ιανουαρίου 2017 Γεια σας παλεύω εδώ και αρκετό διάστημα να φτιάξω το παιχνίδι του ναρκαλιευτή σε γλώσσα C.Αρχικά να πω απαγορεύονται γκλομπαλ μεταβλητές.Η άσκηση λέει: να γραφεί πρόγραμμα το οποιο θα τοποθετει Κ βομβες σε ενα χωρο Μ επι Ν θεσεων και στη συνεχεια θα υπολογιζει καθε ελευθερη απο βομβες θεση με ποσες θα συνορευει (οριζοντια,καθετα,διαγωνια κατα μια θεση).Οι διαμετροι του χωρου και το πληθος περνανε στο προγραμμα ως παραμετροι εκτελεσης. Ο αριθμος των βομβων και οι διαστασεις να πω οτι δινονται απο τον χρηστη.Οι βομβες μπαινουν σε τυχαιες θεσεις. Αυτο που εκανα δεν εμφανιζει τον ακριβη αριθμο βομβων που δινει ο χρηστης κι ουτε εμφανιζει αριθμους που λεει με ποσες θεσεις συνορευει καθε βομβα.Να πω οτι δεν θελω να φτιαξω το παιχνιδι για να παιζω απλα να εμφανιζει σε τυχαιες θεσεις τον αριθμο βομβων που δινει ο χρηστης και στις διαστασεις που ζηταει κι οπως προανεφερα τον αριθμο των βομβων με τις οποιες συνορευει μια θεση Καντε οτι μετατροπες,αλλαγες θελετε.Απαντηστε ακομα κι αν εχει περασει αρκετο διαστημα #include <stdio.h> #include <stdlib.h> #include <time.h> char **Field(int , int ); void BlankFill(char **, int , int ); void Bombs(char **, int , int , int ); void Fill(char **, int , int ); int CountB(char **, int , int ); void Print(char **, int , int ); int main () { int M,N,B; char **F1; printf("dwse oria\n"); scanf("%d%d",&M,&N); F1=Field(M,N); BlankFill(F1,M,N); printf("dwse bombs\n"); scanf("%d",&; Bombs(F1,M,N,; CountB(F1,M,N); Fill(F1,M,N); Print(F1,M,N); return 0; } char **Field(int M, int N) { char **F; int i; F=(char **)malloc(M*sizeof(char *)); if (F==NULL) exit(1); for (i=0; i<M; i++) { *(F+i)=(char *)malloc(N*sizeof(char)); if (*(F+i)==NULL) exit(1); } return F; } void BlankFill(char **F, int M, int N) { int i,j; for (i=0; i<M; i++) for (j=0; j<N; j++) F[j]=' '; } void Bombs(char **F, int M, int N, int { int i,x,y; srand(time(NULL)); for (i=0; i<B; i++) { do { x=rand()%M; y=rand()%N; } while (F[x][y]!=' '); F[x][y]='*'; } } void Fill(char **F, int M, int N) { int i,j,a; for (i=0; i<M; i++) for (j=0; j<N; j++) if (CountB(F,i,j)>0) { if (F[j]=!'*') F[j]=CountB(F,i,j); else F[j]=' '; } } int CountB(char **F, int M, int N) { int i,j,count=0; for (i=0; i<M; i++) for (j=0; j<N; j++) if (F[j]=='*') count=count+1; return count; } void Print(char **F, int M, int N) { int i,j; for (i=0; i<M; i++) { for (j=0; j<N; j++) printf("%c",F[j]); } } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
imitheos Δημοσ. 15 Ιανουαρίου 2017 Share Δημοσ. 15 Ιανουαρίου 2017 Καντε οτι μετατροπες,αλλαγες θελετε.Απαντηστε ακομα κι αν εχει περασει αρκετο διαστημα Εμείς γιατί να κάνουμε αλλαγές ? Εσύ πρέπει να κάνεις αλλαγές μέχρι να υλοποιήσεις αυτά που ζητάει η άσκησή σου. Αυτό που μπορούμε να κάνουμε εμείς είναι, αφού μας πεις σε ποιο σημείο δυσκολεύεσαι και τι έκανες μέχρι τώρα για να το λύσεις, να σου δώσουμε κάποιες κατευθύνσεις. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Makaveli123 Δημοσ. 15 Ιανουαρίου 2017 Μέλος Share Δημοσ. 15 Ιανουαρίου 2017 Αναφερω οτι εχω προβλημα επειδη δεν εμφανιζει ακριβη αριθμο βομβων και τους αριθμους γυρω.Οι μετατροπες που ζηταω να κανετε ειναι για να βρειτε που υπαρχει προβλημα και να με συμβουλεψετε οχι να μου δωσετε την λυση... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kaliakman Δημοσ. 15 Ιανουαρίου 2017 Share Δημοσ. 15 Ιανουαρίου 2017 Γιατί δεν τεστάρεις τον κώδικα σου; Εννοώ αν έχεις κάποιον debugger χρησιμοποιήσε αυτόν ή ακόμα χειρότερα βάλε παντού prints να δεις τι συμβαίνει με τις μεταβλητές σου. Έτσι θα μπορέσεις να καταλάβεις τι συμβαίνει και κυριώς αν συμβαίνει αυτό που θέλεις! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Dinos_12345 Δημοσ. 15 Ιανουαρίου 2017 Share Δημοσ. 15 Ιανουαρίου 2017 20 ευρώ. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sundance_kid Δημοσ. 16 Ιανουαρίου 2017 Share Δημοσ. 16 Ιανουαρίου 2017 Εδώ είσαι. Θενκ μι λέητερ. Φυσικά μελέτησε τον κώδικα, άμα κάνεις copy paste, είσαι τραγικός. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
albNik Δημοσ. 19 Ιανουαρίου 2017 Share Δημοσ. 19 Ιανουαρίου 2017 H CountB είναι λάθος. Πρέπει για κάθε σημείο να μετρήσεις τα 8 γύρω του. Π.χ. είσαι στο (x, y) πρέπει να μετρήσεις πόσα από τα [(x-1,y-1),(x-1,y) (x-1,y+1) ...] είναι βομβα. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα