Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπέρα insomniacs!!

 

Στα πλαίσια ενός μαθήματος αναπτύξαμε, μια ομάδα δύο ατόμων, μια εφαρμογή που "παίζει" το παιχνίδι

Quoridor(Link.png Site: Click ).

 

Είναι μια προσπάθεια που πήρε αρκετές ώρες να υλοποιηθεί και θα ήθελα ως πιο έμπειροι εδώ μέσα αν μπορέσετε να κοιτάξετε τον κώδικα και να δώσετε οποιοδήποτε feedback ή ακόμα και να δοκιμάσετε να το νικήσετε :devil: (More on that later.)

 

Τα αρχεία υπάρχουν Link.png Site: εδώ: για όποιον ενδιαφέρεται καθώς και ένα makefile για εύκολο compile.

Τρέξτε την εντολή list_commands για να δείτε μια λίστα με τις επιτρεπτές εντολές και απολαύστε το. :-D

 

Αν κάποιος θέλει να παίξει, το μέγεθος 7 είναι το πιο "δύσκολο" αλλά αν θέλει να παίξει σε άλλο μέγεθος με μεγαλύτερη δυσκολία να μου πει και να αλλάξει κάτι αρκεί να είναι λίγο υπομονετικός στις πρώτες κινήσεις γιατί αργεί η απόφαση. :ph34r:

 

Από εκεί πέρα υπάρχει ένα σχετικά αναλυτικό pdf που εξηγεί την λειτουργία του προγράμματος αν υπάρχει οποιαδήποτε απορία.Αν παρ' όλα αυτά δεν καταλάβετε κάτι περίμενω με αγωνία!! :-D

 

Υ.Γ kudos to @gon1332 μιας και με βοήθησε κάποια στιγμή με κάποια memory leaks!

Υ.Γ Η υλοποιήση έγινε από πρωτοετείς so be nice :D

Επεξ/σία από kaliakman
  • Like 3
Δημοσ.

Δεν μπορώ να καταλάβω γιατί χρησιμοποιεί τόσο μεγάλες συναρτήσεις! Δεν μπορεί να τα βάλει σε ένα Struct;

Εκτός και αν πρέπει όλο αυτό να το βλέπει κάθε λίγο...έτσι για να την βρίσκει!

 

alphaBeta(board,sizeBoard,position,walls,depth,initialDepth,maxPL,1,alpha,beta,maxPL)

Δημοσ.

Καλημέρα και ευχαριστώ που ασχολήθηκες! :)

 

Καλημέρα μπορείς να εξηγήσεις λίγο παραπάνω? Δηλαδή εννοείς τα ορίσματα να ήταν όλα μέσα σε struct και να περνάω αυτό? Αν ναι αυτό δεν θα μεγάλωνε επικίνδυνα τον κώδικα που είναι ήδη μεγάλος μέσα στο σώμα της συνάρτησης αφού θα έπρεπε να γράφω πχ aiStruct.maxPL?

Δημοσ.

Η χρήση global μεταβλητών θεωρείται κακή πρακτική στον προγραμματισμό.

Δημοσ.

Η χρήση global μεταβλητών θεωρείται κακή πρακτική στον προγραμματισμό.

Μα η Μ2000 έχει ένα κάρο globals. Περίμενε λίγο και έρχεται παράδειγμα με globals σε M2000.

  • Like 4
Δημοσ. (επεξεργασμένο)

Global δεν υπάρχουν;

Οι globals όπως είπαν και οι από πάνω θεωρείται κακή τεχνική προγραμματισμού και έχουμε προσπαθήσει να τις κρατήσουμε στο minimum δυνατό. Επεξ/σία από kaliakman
Δημοσ.

Και η C έχει. Η χρήση της σε ένα πρόγραμμα που δεν πρόκειται να γίνει import αλλού δεν έχει θέμα. Ένα struct δηλωμένο χωρίς κάτι ιδιαίτερο, έχει global scope.

Δημοσ.

Οι globals όπως είπαν και οι από πάνω θεωρείται κακή τεχνική προγραμματισμού και έχουμε προσπαθήσει να τις κρατήσει στο minimum δυνατό.

 

Και πολύ καλά κάνατε.

 

Φυσικά και είναι κακή τεχνική και κακώς κάτι τέτοιο προτείνεται.

Δημοσ.

kaliakman, τι είδους feedback θα ήθελες; Δεν είχα χρόνο να το κοιτάξω μέχρι στιγμής αλλά λογικά θα βρούμε πάρα πολλά που θα μπορούσαμε να πούμε εφόσον είναι από πρωτοετείς.

 

Το feedback δηλαδή όσον αφορά τον κώδικα, σε ποιόν ας πούμε θα απευθύνεται;

Δημοσ.

Σε εμένα και το άλλο παιδί που το φτιάξαμε.. Αν έχει κανένα φοβερό λάθος τρόπο υλοποίησης που μπορεί να το καθυστερεί,κάποια τεχνική που θα μπορούσε να γίνει ώστε να είναι πιο ευαναγνωστος/καλυτερος ο κώδικας και γενικά οτιδήποτε θα μας βοηθούσε να βελτιωθουμε.. Είναι η πρώτη φορά που κάνουμε κάτι τόσο μεγάλο οπότε είναι μια καλή ευκαιρία να διορθώσουμε λάθος τεχνικές..

 

Ξέρω ότι ζητάω πολλά οπότε οτιδήποτε είναι χρήσιμο!! :)

Δημοσ.

Δύο-τρια πραγματάκια που δεν έχουν να κάνουν με την υλοποίηση, αλλά για καλύτερο readability:

 

Βάλτε comment headers και γενικά comments στα functions/methods/classes κλπ στα αρχεία του project σας (κατά προτίμηση βάση του Doxygen https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html#cppblock προκειμένου να μπορεί εύκολα να γίνει automatically documented το project σας).

 

Περάστε από έναν code beautifier τον κώδικα σας.

 

Επιλέξτε ένα naming convention (GNU, K&R, linux, κλπ) και ακολουθήστε το παντού (ονόματα αρχείων, μεταβλητές, ονόματα functions, κλπ), πχ, αποφασίστε ή capital ή mixedCase ή lowercase ή underscore filenames (Utilities.c, mainUtilities.h, minimax.c, κλπ) , αποφασίστε ή underscore ή mixedCase variables (list_head, currRow, κλπ);

  • Like 5

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...