savra19 Δημοσ. 14 Δεκεμβρίου 2015 Δημοσ. 14 Δεκεμβρίου 2015 Καλησπέρα παδιά έχω αυτή την εργασία να κάνω όποιος βοηθήσει θα του είμαι ευγνώμων: Να αναπτυχθεί μια εφαρμογή που να επιτρέπει σε 2 παίκτες να παίζουν τρίλιζα. Πιο συγκεκριμένα η εφαρμογή θα ζητά τα ονόματα των παικτών. Στην συνέχεια θα ζητά από τον παίκτη Α (όπου Α το αντίστοιχο όνομα) να παίξει δηλ. να δώσει γραμμή και στήλη, θα εμφανίζει την κατάσταση του παιγνιδιού και θα ελέγχει μήπως έχουμε τέλος του παιγνιδιού. Στην περίπτωση τέλους θα βγάζει κατάλληλο μήνυμα και θα τερματίζει διαφορετικά θα ζητά από τον παίκτη Β να παίξει, θα εμφανίζει την κατάσταση του παιγνιδιού και θα ελέγχει μήπως έχουμε τέλος του παιγνιδιού. Προφανώς οι κινήσεις των παικτών θα επαναλαμβάνονται μέχρι να έχουμε τέλος του παιχνιδιού
antbyron Δημοσ. 14 Δεκεμβρίου 2015 Δημοσ. 14 Δεκεμβρίου 2015 Δεν νομίζω να σε βοηθήσει κάποιος έτσι όπως το ζητάς! Κάνεις λοιπόν την εργασία και όπου κολλήσεις ζητάς βοήθεια συγκεκριμένα.
Moderators Kercyn Δημοσ. 14 Δεκεμβρίου 2015 Moderators Δημοσ. 14 Δεκεμβρίου 2015 Σε λίγη ώρα στην έχω έτοιμη, δείξε ότι έχεις προσπαθήσει και θα στην κάνω χριστουγεννιάτικο δώρο.
savra19 Δημοσ. 14 Δεκεμβρίου 2015 Μέλος Δημοσ. 14 Δεκεμβρίου 2015 Σε λίγη ώρα στην έχω έτοιμη, δείξε ότι έχεις προσπαθήσει και θα στην κάνω χριστουγεννιάτικο δώρο κατι σαν αυτο εχω καταληξει αλλα δεν μου αρεσε και πολυ πρεπει να εχει θεματακια int checkWhoWins(char triliza[3][3]) { int i,j,result=0; for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza [j]=='X') { if ((triliza[i+1][j]=='X') && (triliza[i+2][j]=='X')) result=1; else if ((triliza[j+1]=='X') && (triliza[j+2]=='X')) result=1; else if ((triliza[i+1][j+1]=='X') && (triliza[i+2][j+2]=='X')) result=1; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza [j]=='O') { if ((triliza[i+1][j]=='O') && (triliza[i+2][j]=='O')) result=2; else if ((triliza[j+1]=='O') && (triliza[j+2]=='O')) result=2; else if ((triliza[i+1][j+1]=='O') && (triliza[i+2][j+2]=='O')) result=2; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza [j+1]=='X') { if ((triliza[i+1][j+1]=='X') && (triliza[i+2][j+1]=='X')) result=1; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza [j+1]=='O') { if ((triliza[i+1][j+1]=='O') && (triliza[i+2][j+1]=='O')) result=2; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza [j+2]=='X') { if ((triliza[i+1][j+2]=='X') && (triliza[i+2][j+2]=='X')) result=1; else if ((triliza[i+1][j+1]=='X') && (triliza[i+2][j]=='X')) result=1; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza [j+2]=='O') { if ((triliza[i+1][j+2]=='O') && (triliza[i+2][j+2]=='O')) result=2; else if ((triliza[i+1][j+1]=='O') && (triliza[i+2][j]=='O')) result=2; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza[i+1] [j+1]=='X') { if ((triliza[i+1][j]=='X') && (triliza[i+1][j+2]=='X')) result=1; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza[i+1] [j+1]=='O') { if ((triliza[i+1][j]=='O') && (triliza[i+1][j+2]=='O')) result=2; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza[i+2] [j]=='X') { if ((triliza[i+2][j+1]=='X') && (triliza[i+2][j+2]=='X')) result=1; } } } for(i=0; i<3; i++) { for(j=0; j<3; j++) { if (triliza[i+2] [j]=='O') { if ((triliza[i+2][j+1]=='O') && (triliza[i+2][j+2]=='O')) result=2; } } } return result; }
groot Δημοσ. 14 Δεκεμβρίου 2015 Δημοσ. 14 Δεκεμβρίου 2015 με μία γρήγορη ματιά αυτό που έβαλες πετάει array out of bounds (ή όπως το λέει η πλατς πλατς). Άρα, δεν προσπάθησες και πολύ...
savra19 Δημοσ. 14 Δεκεμβρίου 2015 Μέλος Δημοσ. 14 Δεκεμβρίου 2015 με μία γρήγορη ματιά αυτό που έβαλες πετάει array out of bounds (ή όπως το λέει η πλατς πλατς). Άρα, δεν προσπάθησες και πολύ... ναι ειμαι γενικα ασχετος με το θεμα για αυτο και ρωτησα εδω αν μπορειτε να βοηθησετε και κατι ακομη επειδη εγω εμαθα να χρησιμοποιω το codeblox και τωρα αυτος μας το ζηταει σε zip netbeans ξερεις πως γινετε να τρεξω το προγραμμα σε netbeans?
groot Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 Το όλο point είναι πως εάν είσαι άσχετος, είτε παράτα τα είτε διάβασε να γίνεις σχετικός. Αυτά που ζητάς δεν είναι κάτι τρελό, ούτε καν σοβαρό. Οπότε φαίνεται ότι ο λόγος που ζητάς βοήθεια είναι πως απλά δεν ασχολείσαι. Εάν έχεις ασχοληθεί, όντως, και δεν έχεις βρει άκρη με αυτά τότε πολύ πιθανό να μην κάνεις για τέτοια πράματα. Οπότε, δεν ζητάς βοήθεια, ζητάς να ασχοληθεί κάποιος άλλος με αυτά που πρέπει να ασχοληθείς εσύ.
M2000 Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 Χωρίς στοιχειώδη γραφικά είναι χάσιμο χρόνου..Και ZX81 να είχε...θα έβαζε κανείς με απλούς χαρακτήρες την κατάσταση της τρίλιζας... Blitz τρίλιζα φτιάχνει...
Moderators Kercyn Δημοσ. 15 Δεκεμβρίου 2015 Moderators Δημοσ. 15 Δεκεμβρίου 2015 Το θέμα της άσκησης δεν είναι η γραφική απεικόνιση.
M2000 Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 Ποτέ δεν είναι...Αυτό είναι ένα θέμα.. Αν σκεφτόταν ότι θα έπρεπε να δείξει την κατάσταση θα έχει μια καλύτερη εικόνα της άσκησης.. Αρχική κατάσταση, επιλογή γράμματος που ξεκινάει πρώτο, ορισμός παιχνιδιών. Ο κεντρικός βρόχος ζητάει κίνηση, ελέχγει αν είναι αποδεκτή, ελέγχει αν τερματίζει το παιχνίδι, αν όχι πάει στον άλλο παίκτη, αν ναι αναφαίρει το σκορ, αυξάνει τον αριθμό παιχνιδιών, αντιστρέφει τη σειρά των παικτών, συνεχίζει μέχρι να τελειώσουν τα επιλεγμένα παιχνίδια. Θα μπορούσε να ζητάει πάντα σε ζυγό αριθμό το πλήθος παιχνιδιών.
defacer Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 Δεν ξέρω αν διάβασες το πρώτο post. Μάλλον δεν το πρόσεξες. Όπως είπε ο Kercyn, η άσκηση ναι μεν ζητάει απεικόνιση και παιχνίδι αλλά το ζουμί της δεν είναι κατα βάση αυτό. Επίσης δεν καταλαβαίνω τι σχέση έχουν αυτά που λες με το πρόβλημα που αντιμετωπίζει ο κόσμος εδώ αλλά αυτό είναι μάλλον ο κανόνας και όχι η εξαίρεση.
M2000 Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 Μου αρέσει το πνεύμα σου! Αν επαναλάμβανα αυτά που διαβάζω ή απαντούσα μονολεκτικά θα με έβρισκες καλύτερο; Το θέμα είναι ότι εδώ δεν εξετάζουμε, ούτε "χαρίζουμε" λύσεις. Μου αρέσει η επέκταση...να βλέπει κανείς τα πράγματα πιο ολοκληρωμένα. Για την άσκηση προφανώς το ζουμί έχει να κάνει με τη θεωρία που του αναπτύχθηκε! Δεν μπήκε ξαφνικά! Για μας εδώ όμως ήταν ένα έναυσμα...να δούμε τι μας λέει ο ασκούμενος, πώς το σκέφτεται δηλαδή. Πήγε επιτόπου στον αλγόριθμο ενώ η πρακτική λέει, για μένα, δες πρώτα από που ξεκινάς και που θες να φτάσεις, και σαλαμοποίησε. Σκέψου ένα ενδιάμεσο σημείο και αν δεν πάρεις τη λύση σαλαμοποίησε πάλι. Τους το εχουν μάθει αυτό. Μας έδειξε ένα κατεβατό χωρίς καν σημειώσεις, με διαδοχικά βήματα ...άνευ ονομάτων. Αυτά τα κάνουν τοπ προγραμματιστές αφού καθαρίσουν τον κώδικα! Ο Groot έκατσε και το διαβασε..Εγώ δεν το έκανα.. Έπρεπε να πει..έχω αυτό εδώ που βάζω αυτές τις τιμές..Ο τύπος που δηλώνει τον τερματισμό είναι αυτός...Ή να πει ότι δεν ξέρει τι είναι τρίλιζα να του πούμε!
DDevil Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 Το θέμα της άσκησης δεν είναι η γραφική απεικόνιση. Αν έχεις γράψει κώδικα για το παιχνιδι ποσταρε τον να τον διαβάσει ειδάλλως σαν αρχάριος μονος του θα δυσκολευτει. Θεματοθέτη γιατι δεν ψάχνεις και σε αλλες σελιδες κώδικα για την τριλιζα; να δεις πως το υλοποιούν;
Moderators Kercyn Δημοσ. 15 Δεκεμβρίου 2015 Moderators Δημοσ. 15 Δεκεμβρίου 2015 Ο κώδικας είναι ελλιπής και λίγο άνω κάτω. Προσπάθησα να το κρατήσω απλό και για όποια απορία έχει ο OP ας ρωτήσει. Επειδή πρέπει να φύγω τώρα μπορώ να το συμμαζέψω όταν γυρίσω. Για το win con σκεφτόμουν να κάνω κάτι τέτοιο. Here goes nothing... #include <iostream> #include <Windows.h> #include <array> #include <string> #include <memory> class MGameManager; class MScreenManager; std::unique_ptr<MGameManager> GameManager; std::unique_ptr<MScreenManager> ScreenManager; enum class ESquare { Blank, X, O }; enum class EGameState { XPlaying, OPlaying, Draw, XWin, OWin }; class MGameManager { private: std::array<std::array<ESquare, 3>, 3> Board; EGameState CurrentState; std::string PlayerXName; std::string PlayerOName; void CheckWinner(); public: MGameManager() : CurrentState(EGameState::XPlaying) { Board = std::array<std::array<ESquare, 3>, 3>(); } void Initialize() { std::cout << "Player 1 name: "; std::cin >> PlayerXName; std::cout << std::endl << "Player 2 name: "; std::cin >> PlayerOName; std::cout << std::endl << std::endl; } void Process() { // input stuff } auto GetBoard() -> decltype(Board) { return Board; } EGameState GetGameState() { return CurrentState; } std::string GetXName() { return PlayerXName; } std::string GetOName() { return PlayerOName; } }; class MScreenManager { public: void PrintEndMessage() { switch (GameManager->GetGameState()) { case EGameState::OWin: std::cout << GameManager->GetOName() << " has won the game!" << std::endl; break; case EGameState::XWin: std::cout << GameManager->GetXName() << " has won the game!" << std::endl; break; case EGameState::Draw: std::cout << "The game is a draw!" << std::endl; break; } } void PrintBoard(const std::array<std::array<ESquare, 3>, 3> & Board) { int LineNumber = 0; std::cout << " 0 1 2" << std::endl; std::cout << " ==========" << std::endl; for (const auto & Line : Board) { std::cout << LineNumber++ << " " << Seperator; for (const auto & Square : Line) { switch (Square) { case ESquare::Blank: std::cout << " "; break; case ESquare:: std::cout << "X"; break; case ESquare:: std::cout << "O"; break; } std::cout << Seperator; } std::cout << std::endl; } std::cout << " ==========" << std::endl; } private: static const char Seperator = '='; }; int main() { GameManager = std::make_unique<MGameManager>(); ScreenManager = std::make_unique<MScreenManager>(); GameManager->Initialize(); do { ScreenManager->PrintBoard(GameManager->GetBoard()); GameManager->Process(); } while ((GameManager->GetGameState() == EGameState::XPlaying) || (GameManager->GetGameState() == EGameState::OPlaying)); ScreenManager->PrintEndMessage(); return 0; } 3
SpirosLouis Δημοσ. 15 Δεκεμβρίου 2015 Δημοσ. 15 Δεκεμβρίου 2015 ... #include <iostream> #include <Windows.h> #include <array> #include <string> #include <memory> class MGameManager; class MScreenManager; std::unique_ptr<MGameManager> GameManager; std::unique_ptr<MScreenManager> ScreenManager; enum class ESquare { Blank, X, O }; enum class EGameState { XPlaying, OPlaying, Draw, XWin, OWin }; class MGameManager { private: std::array<std::array<ESquare, 3>, 3> Board; EGameState CurrentState; std::string PlayerXName; std::string PlayerOName; void CheckWinner(); public: MGameManager() : CurrentState(EGameState::XPlaying) { Board = std::array<std::array<ESquare, 3>, 3>(); } void Initialize() { std::cout << "Player 1 name: "; std::cin >> PlayerXName; std::cout << std::endl << "Player 2 name: "; std::cin >> PlayerOName; std::cout << std::endl << std::endl; } void Process() { // input stuff } auto GetBoard() -> decltype(Board) { return Board; } EGameState GetGameState() { return CurrentState; } std::string GetXName() { return PlayerXName; } std::string GetOName() { return PlayerOName; } }; class MScreenManager { public: void PrintEndMessage() { switch (GameManager->GetGameState()) { case EGameState::OWin: std::cout << GameManager->GetOName() << " has won the game!" << std::endl; break; case EGameState::XWin: std::cout << GameManager->GetXName() << " has won the game!" << std::endl; break; case EGameState::Draw: std::cout << "The game is a draw!" << std::endl; break; } } void PrintBoard(const std::array<std::array<ESquare, 3>, 3> & Board) { int LineNumber = 0; std::cout << " 0 1 2" << std::endl; std::cout << " ==========" << std::endl; for (const auto & Line : Board) { std::cout << LineNumber++ << " " << Seperator; for (const auto & Square : Line) { switch (Square) { case ESquare::Blank: std::cout << " "; break; case ESquare:: std::cout << "X"; break; case ESquare:: std::cout << "O"; break; } std::cout << Seperator; } std::cout << std::endl; } std::cout << " ==========" << std::endl; } private: static const char Seperator = '='; }; int main() { GameManager = std::make_unique<MGameManager>(); ScreenManager = std::make_unique<MScreenManager>(); GameManager->Initialize(); do { ScreenManager->PrintBoard(GameManager->GetBoard()); GameManager->Process(); } while ((GameManager->GetGameState() == EGameState::XPlaying) || (GameManager->GetGameState() == EGameState::OPlaying)); ScreenManager->PrintEndMessage(); return 0; } Καλός ο κόπος σου, αλλά μάλλον για εμάς είναι ποιο πολύ παρά για τον TS. Μόλις τον ρωτήσει ο καθηγητής τι είναι αυτό, θα κοιτάει το ταβάνι. προς τον TS: Κάτσε ασχολήσου γιατί ο Λευτεράκης μπορεί να σε περάσει(αμφιβάλω βέβαια..) αλλά δεν θα πας πολύ μπροστά... 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα