Hiển thị kết quả từ 1 đến 2 / 2
  1. #1
    Tham gia
    24-11-2008
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    Help với game Hangman

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <cctype>
    using namespace std;
    #define MAX_WORD_SIZE 15 // The maximum size of word
    #define MAX_WORDS 255 // the max number of words
    void EnterWord();
    void LoadFile();
    void ChooseWord();
    void RunGame();
    void instruction();
    void DrawGallows(int State);
    typedef char String [MAX_WORD_SIZE]; // a char type with 15 characters
    String Words [MAX_WORDS-1];
    int Count; // word count
    char menu;
    char Continue;
    char choice;
    int main()
    {
    instruction();
    cout << "Choice: ";
    cin >> choice;
    cout << " " << endl;
    while (Continue =='Y')
    {


    cout<<"Welcome to Hangman . . . Don't lose your head!"<<endl;

    switch(choice)
    {
    case '1':
    EnterWord();
    break;

    case '2':
    ChooseWord();
    break;

    case '3':
    cout<<"\n\nBye!"<<endl<<endl;
    break;
    default:
    cerr << "Invalid choice - " << menu << endl
    << "enter again please. " << endl << endl;
    }
    }

    }
    // Function to run the program

    void instruction() // show the instruction
    {
    cout<<"\n\n *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* H A N G M A N *.*.*.*.*.*.*..*.*.*.*.*.*";
    cout<<"\n\n1. Enter a word (2 Player)";
    cout<<"\n\n2. Computer chooses word (1 Player)";
    cout<<"\n\n3. Quit ";
    cin.get();
    }
    // if option is 1


    void LoadFile()
    {
    char C;
    ifstream Datfile;
    Count = 0 ;
    Datfile.open("word.txt" );// open the data file word.txt
    while (( C=Datfile.peek()) !=EOF)
    {
    // get the next word and then increment Count
    Datfile>> Words [Count++];
    // If we surpass the max exit and tell the user
    if (Count > MAX_WORDS -1 )
    {
    cout << endl << "Too many words in the file, stopping with "<< MAX_WORDS<< "words"<< endl;
    Count = MAX_WORDS;
    break;
    }
    }
    // subtract one to get the correct number of words
    Count--;
    //Close the file
    Datfile.close();
    }
    void EnterWord()
    {
    char solution[20]; //holds solution
    char blank[20]; //holds "*"'s for unsolved letters
    int Subscript=0;
    int State=1;
    char Guess[20];
    char Copy [20];
    char Letter;
    int Correct =0 ;
    // input the string and getline it
    cout<<"Enter phrase 20 chars or less."<<endl;
    cin.getline(solution, 20);
    int Word; // this will hold the subscript of our word
    int Size; // this will hold the length of our word int State = 1 ; // This will hold the game state. int Subscript= 0; // This will hold the subscirpt char Guess [MAX_WORD_SIZE]; // this will hold their current word char Copy [MAX_WORD_SIZE]// this will hold a copy of word
    char letter;// this will be their letter guess int Correct = 0 ; // This is a true/ false value
    //Create a null terminated string to represent the word as the player know it//
    for ( ; Subscript < Size; Subscript++)
    {
    Guess [Subscript] = '-';
    }
    // insert the null character
    Guess [Subscript] = '\0';
    // Go until the player is hung
    while (State!=6)
    {
    DrawGallows(State);
    cout << Guess << endl;
    cout << "Guess a letter:" ;
    cin >> letter;
    // use only lower case letters
    Letter = tolower(Letter);
    for (Subscript = 0 ; Subscript < Size; Subscript ++ )
    {
    if (Copy[Subscript]== Letter)
    {
    Guess [Subscript] = Letter;
    Correct =1 ;
    cout<< endl<< "Good Guess";
    // If guess equals the word they won so exit
    if (strcmp (Words[Word],Guess) == 0 )
    {
    cout << endl << "Congratulation !! You won !!" << endl;
    return;
    }
    }
    }
    // If they did not guess correctly
    if (Correct == 0)
    {
    cout<< endl << "Sorry,bad guess!";
    State++;
    }
    Correct = 0 ;
    }
    DrawGallows(State); // Draw the gallows at end of game
    cout << "the word was : " << Words [Word]<< endl << endl;
    }
    void ChooseWord() // input choice = 2
    {
    LoadFile(); // call the function to open the file
    int Word; // this will hold the subscript of our word
    int Size; // this will hold the length of our word
    int State = 1 ; // This will hold the game state.
    int Subscript= 0; // This will hold the subscirpt
    char Guess [MAX_WORD_SIZE]; // this will hold their current word
    char Copy [MAX_WORD_SIZE];// this will hold a copy of word
    char Letter;// this will be their letter guess
    int Correct = 0 ; // This is a true/ false value
    //Create a random number
    srand (( unsigned)time (NULL));
    Word = rand () % Count; // find the remainder
    // Make a local copy of the word
    strcpy(Copy,Words[Word]);
    Size = strlen ( Words[Word]); // get the word's size
    //Create a null terminated string to represent the word as the player know it//
    for ( ; Subscript < Size; Subscript++)
    {
    Guess [Subscript] = '-';
    }
    // insert the null character
    Guess [Subscript] = '\0';
    // Go until the player is hung
    while (State!=6)
    {
    DrawGallows(State);
    cout << Guess << endl;
    cout << "Guess a letter:" ;
    cin >> Letter;
    // use only lower case letters
    Letter = tolower(Letter);
    for (Subscript = 0 ; Subscript < Size; Subscript ++ )
    {
    if (Copy[Subscript]== Letter)
    {
    Guess [Subscript] = Letter;
    Correct =1 ;
    cout<< endl<< "Good Guess";
    // If guess equals the word they won so exit
    if (strcmp (Words[Word],Guess) == 0 )
    {
    cout << endl << "Congratulation !! You won !!" << endl;
    return;
    }
    }
    }
    // If they did not guess correctly
    if (Correct == 0)
    {
    cout<< endl << "Sorry,bad guess!";
    State++;
    }
    Correct = 0 ;
    }
    DrawGallows(State); // Draw the gallows at end of game
    cout << "the word was : " << Words [Word]<< endl << endl;
    }

    void DrawGallows(int State)
    {
    if(State==6)
    {
    // The \\ will translate as '\' because it is a special char
    cout<<endl<<endl
    <<" +----+ "<<endl
    <<" | | "<<endl
    <<" | O "<<endl
    <<" | /|\\ "<<endl
    <<" | / \\ "<<endl
    <<" |Your Dead "<<endl
    <<" ============"<<endl<<endl;
    }
    else if(State==5)
    {
    cout<<endl<<endl
    <<" +----+ "<<endl
    <<" | | "<<endl
    <<" | O "<<endl
    <<" | /|\\ "<<endl
    <<" | \\ "<<endl
    <<" | "<<endl
    <<" ============"<<endl<<endl;
    }
    else if(State==4)
    {
    cout<<endl<<endl
    <<" +----+ "<<endl
    <<" | | "<<endl
    <<" | O "<<endl
    <<" | /|\\ "<<endl
    <<" | "<<endl
    <<" | "<<endl
    <<" ============="<<endl<<endl;
    }
    else if(State==3)
    {
    cout<<endl<<endl
    <<" +----+ "<<endl
    <<" | | "<<endl
    <<" | O "<<endl
    <<" | /| "<<endl
    <<" | "<<endl
    <<" | "<<endl
    <<" ============="<<endl<<endl;
    }
    else if(State==2)
    {
    cout<<endl<<endl
    <<" +----+ "<<endl
    <<" | | "<<endl
    <<" | O "<<endl
    <<" | | "<<endl
    <<" | "<<endl
    <<" | "<<endl
    <<" ============="<<endl<<endl;
    }
    else if(State==1)
    {
    cout<<endl<<endl
    <<" +----+ "<<endl
    <<" | | "<<endl
    <<" | "<<endl
    <<" | "<<endl
    <<" | "<<endl
    <<" | "<<endl
    <<" ============="<<endl<<endl;
    }
    }

    MAY BAC HELP EM VOI, CHUONG TRINH NO KHONG CHAY, COMPILE OK ROI MA EM KHONG BIET SAO, NGAY MAI NO DUE... HUHU MÂY BAC SUA DUM EM CHO NO CHAY VOI HĨ HIXX
    Quote Quote

  2. #2
    Tham gia
    15-12-2006
    Bài viết
    50
    Like
    0
    Thanked 0 Times in 0 Posts
    thẻ [ CODE ] [/ CODE] ko biết dùng?, vứt code lung tung như 1 đống rác thì chỉ có rác mới đi coi giùm logical errors quá nhiều + critical vulnerability, thua nhìn nhức mắt thêm, tự đọc và hiểu code đã rồi hãy lên đây hỏi, bỏ vào [ CODE ] thì may ra còn có người coi dùm
    (với khu vực programming mà ddth còn ko để format bar trong newreply nữa thì newbies lấy gì mà biết dùng thẻ code)

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •