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

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

Δημοσ.

Καλησπέρα παδιά έχω αυτή την εργασία να κάνω όποιος βοηθήσει θα του είμαι ευγνώμων:

 

Να αναπτυχθεί μια εφαρμογή που να επιτρέπει σε 2 παίκτες να παίζουν τρίλιζα. Πιο συγκεκριμένα η εφαρμογή θα ζητά τα ονόματα των παικτών. Στην συνέχεια θα ζητά από τον παίκτη Α (όπου Α το αντίστοιχο όνομα) να παίξει δηλ. να δώσει γραμμή και στήλη, θα εμφανίζει την κατάσταση του παιγνιδιού και θα ελέγχει μήπως έχουμε τέλος του παιγνιδιού. Στην περίπτωση τέλους θα βγάζει κατάλληλο μήνυμα και θα τερματίζει διαφορετικά θα ζητά από τον παίκτη Β να παίξει, θα εμφανίζει την κατάσταση του παιγνιδιού και θα ελέγχει μήπως έχουμε τέλος του παιγνιδιού.

Προφανώς οι κινήσεις των παικτών θα επαναλαμβάνονται μέχρι να έχουμε τέλος του παιχνιδιού

Δημοσ.

Δεν νομίζω να σε βοηθήσει κάποιος έτσι όπως το ζητάς! Κάνεις λοιπόν την εργασία και όπου κολλήσεις ζητάς βοήθεια συγκεκριμένα.

  • Moderators
Δημοσ.

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

Δημοσ.

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

κατι σαν αυτο εχω καταληξει αλλα δεν μου αρεσε και πολυ πρεπει να εχει θεματακια

 

 

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;

 }

Δημοσ.

με μία γρήγορη ματιά αυτό που έβαλες πετάει array out of bounds (ή όπως το λέει η πλατς πλατς).

 

Άρα, δεν προσπάθησες και πολύ...

Δημοσ.

με μία γρήγορη ματιά αυτό που έβαλες πετάει array out of bounds (ή όπως το λέει η πλατς πλατς).

 

Άρα, δεν προσπάθησες και πολύ...

ναι ειμαι γενικα ασχετος με το θεμα  για αυτο και ρωτησα εδω αν μπορειτε να βοηθησετε και κατι ακομη επειδη εγω εμαθα να χρησιμοποιω το codeblox και τωρα αυτος μας το ζηταει σε zip netbeans ξερεις πως γινετε να τρεξω το προγραμμα σε netbeans?

Δημοσ.

Το όλο point είναι πως εάν είσαι άσχετος, είτε παράτα τα είτε διάβασε να γίνεις σχετικός.

 

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

 

Οπότε, δεν ζητάς βοήθεια, ζητάς να ασχοληθεί κάποιος άλλος με αυτά που πρέπει να ασχοληθείς εσύ.

Δημοσ.

Χωρίς στοιχειώδη γραφικά είναι χάσιμο χρόνου..Και ZX81 να είχε...θα έβαζε κανείς με απλούς χαρακτήρες την κατάσταση της τρίλιζας...

Blitz τρίλιζα φτιάχνει...

Δημοσ.

Ποτέ δεν είναι...Αυτό είναι ένα θέμα..

Αν σκεφτόταν ότι θα έπρεπε να δείξει την κατάσταση θα έχει μια καλύτερη εικόνα της άσκησης..

Αρχική κατάσταση, επιλογή γράμματος που ξεκινάει πρώτο, ορισμός παιχνιδιών.

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

Δημοσ.

Δεν ξέρω αν διάβασες το πρώτο post. Μάλλον δεν το πρόσεξες. Όπως είπε ο Kercyn, η άσκηση ναι μεν ζητάει απεικόνιση και παιχνίδι αλλά το ζουμί της δεν είναι κατα βάση αυτό.

 

Επίσης δεν καταλαβαίνω τι σχέση έχουν αυτά που λες με το πρόβλημα που αντιμετωπίζει ο κόσμος εδώ αλλά αυτό είναι μάλλον ο κανόνας και όχι η εξαίρεση.

Δημοσ.

Μου αρέσει το πνεύμα σου! Αν επαναλάμβανα αυτά που διαβάζω ή απαντούσα μονολεκτικά θα με έβρισκες καλύτερο;

Το θέμα είναι ότι εδώ δεν εξετάζουμε, ούτε "χαρίζουμε" λύσεις. Μου αρέσει η επέκταση...να βλέπει κανείς τα πράγματα πιο ολοκληρωμένα. Για την άσκηση προφανώς το ζουμί έχει να κάνει με τη θεωρία που του αναπτύχθηκε! Δεν μπήκε ξαφνικά! Για μας εδώ όμως ήταν ένα έναυσμα...να δούμε τι μας λέει ο ασκούμενος, πώς το σκέφτεται δηλαδή. Πήγε επιτόπου στον αλγόριθμο ενώ η πρακτική λέει, για μένα, δες πρώτα από που ξεκινάς και που θες να φτάσεις, και σαλαμοποίησε. Σκέψου ένα ενδιάμεσο σημείο και αν δεν πάρεις τη λύση  σαλαμοποίησε πάλι. Τους το εχουν μάθει αυτό.

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

Έπρεπε να πει..έχω αυτό εδώ που βάζω αυτές τις τιμές..Ο τύπος που δηλώνει τον τερματισμό είναι αυτός...Ή να πει ότι δεν ξέρει τι είναι τρίλιζα να του πούμε!

Δημοσ.

Το θέμα της άσκησης δεν είναι η γραφική απεικόνιση.

 

Αν έχεις γράψει κώδικα για το παιχνιδι ποσταρε τον να τον διαβάσει ειδάλλως σαν αρχάριος μονος του θα δυσκολευτει. Θεματοθέτη γιατι δεν ψάχνεις και σε αλλες σελιδες κώδικα για την τριλιζα; να δεις πως το υλοποιούν;

  • Moderators
Δημοσ.

Ο κώδικας είναι ελλιπής και λίγο άνω κάτω. Προσπάθησα να το κρατήσω απλό και για όποια απορία έχει ο 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;
}

 

 

  • Like 3
Δημοσ.

...

 

 

 

#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: Κάτσε ασχολήσου γιατί ο Λευτεράκης μπορεί να σε περάσει(αμφιβάλω βέβαια..) αλλά δεν θα πας πολύ μπροστά...

  • Like 1

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

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

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

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

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

Σύνδεση

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

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