C++ Arrays

Discussion in 'Computer Science & Culture' started by BiteMe, May 2, 2003.

Thread Status:
Not open for further replies.
  1. BiteMe Registered Member

    Messages:
    5
    Hi everybody, I would like some help doing this, I got the first part down, having a bit of a problem with the second.

    I'm making a "hangman" type game using arrays and for loops...when the players enters a letter in the array, the letter should go into its spot in the word and be replaced with a zero (0) in the array...if its not there, then it should count that as a miss and start the cycle again. Here's what I have so far, which is simply array initializing the alphabet.

    void initAlpha(char alpha[])
    {
    int i;
    for(i=0; i<26; i++)
    alpha = 'A' + i;
    }

    and I can't even get started as to what to do about this guessing letter and putting zero in its place thing. PLEASE HELP!!!! It will be much appreciated --- thanks
     
  2. Google AdSense Guest Advertisement



    to hide all adverts.
  3. pragmathen 0001 1111 Registered Senior Member

    Messages:
    452
    Hang in there .. man! paching!

    After I saw this question, I got to thinking about how to go about making a hangman program. And, except for the getRandomWordFromFile beast of a function, I wrote the rest. My coworker helped me tremendously with that one bit.

    It works by DOS-prompt only, of course. And you have to make sure you have a wordlist (separated by carriage-return+line-feed) located in C:\TEMP\ called SHORTLIST.txt.

    No doubt it could've been written better, but I just wanted to crank this one out. And for my next act, I'd like to try something like that gameshow Lingo. We'll see how it goes.

    Best of luck, <b>BiteMe</b>!

    prag

    Code follows:
    _________________________
    #include &lt;fstream&gt;
    #include &lt;ctyp.h&gt;
    #include &lt;conio.h&gt;

    <b>static</b> AnsiString getRandomWordFromFile(AnsiString fileName)
    {
    &nbsp;&nbsp;&nbsp;randomize(&nbsp; );
    &nbsp;&nbsp;&nbsp;<b>char</b> temp[100];
    &nbsp;&nbsp;&nbsp;std::ifstream InFile;
    &nbsp;&nbsp;&nbsp;inFile.open(fileName.c_str(&nbsp; ), std::ios_base::in);
    &nbsp;&nbsp;&nbsp;<b>if</b>(!inFile)<b>return</b> "";
    &nbsp;&nbsp;&nbsp;inFile.seekg(0, std::ios::end);
    &nbsp;&nbsp;&nbsp;<b>long</b> fileSize = inFile.tellg(&nbsp; );
    &nbsp;&nbsp;&nbsp;<b>long</b> randomOffset = random(fileSize);
    &nbsp;&nbsp;&nbsp;inFile.seekg(randomOffset);
    &nbsp;&nbsp;&nbsp;<b>for</b>(; randomOffset > 0; randomOffset--)
    &nbsp;&nbsp;&nbsp;(
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>long</b> filePos = inFile.tellg(&nbsp; ) - 1;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>char</b> nextChar = inFile.get(&nbsp; );
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>(nextChar == '\n')<b>break</b>;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inFile.seekg(filePos);
    &nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;inFile.getline(temp, 100, '\n');
    &nbsp;&nbsp;&nbsp;inFile.close(&nbsp; );
    &nbsp;&nbsp;&nbsp;<b>return</b> (AnsiString)temp;
    }
    <b>void</b> clear(&nbsp; )
    {
    &nbsp;&nbsp;&nbsp;clrscr(&nbsp; );
    &nbsp;&nbsp;&nbsp;cout &lt;&lt; "Hangman" &lt;&lt; endl;
    }
    <b>void</b> main(&nbsp; )
    {
    &nbsp;&nbsp;&nbsp;<b>char</b> temp[50];
    &nbsp;&nbsp;&nbsp;<b>char</b> blanks[50];
    &nbsp;&nbsp;&nbsp;<b>char</b> temp2[50];
    &nbsp;&nbsp;&nbsp;<b>char</b> alpha[50];
    &nbsp;&nbsp;&nbsp;<b>unsigned int</b> numLetters;
    &nbsp;&nbsp;&nbsp;<b>unsigned int</b> numTries = 0;
    &nbsp;&nbsp;&nbsp;<b>char</b> guess;
    &nbsp;&nbsp;&nbsp;<b>char</b> answer;
    &nbsp;&nbsp;&nbsp;<b>bool</b> done = <b>false</b>;
    &nbsp;&nbsp;&nbsp;strcpy(alpha, "abcdefghijklmnopqrstuvwxyz");
    &nbsp;&nbsp;&nbsp;strcpy(temp, getRandomWordFromFile("c:\\temp\\shortlist.txt").c_str(&nbsp; ));
    &nbsp;&nbsp;&nbsp;blanks[0] = NULL;
    &nbsp;&nbsp;&nbsp;numLetters = strlen(temp);
    &nbsp;&nbsp;&nbsp;<b>for</b>(<b>unsigned int</b> y = 0; y < numLetters; y++)
    &nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(blanks, "_");
    &nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;<b>while</b>(!done)
    &nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clear(&nbsp; );
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; numLetters &lt;&lt; "-letter word: " &lt;&lt; blanks &lt;&lt; " (" &lt;&lt; alpha &lt;&lt; ")" &lt;&lt; endl;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "Your guess: ";
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin &gt;&gt; guess;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guess = tolower(guess);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numTries++;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>for</b>(<b>unsigned int</b> i = 0; i < numLetters; i++)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>(guess == temp)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blanks = guess;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>int</b> ptr = strcmp(blanks, temp);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>(ptr == 0)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done = <b>true</b>;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>for</b>(<b>int</b> j = 0; j < 26; j++)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>(guess == alpha[j])
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alpha[j] = '_';
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>(done)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout << endl << endl << "Great, you guessed " << blanks << "!" << endl;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout << "And it only took you " << numTries << " tries!" << endl;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout << endl << endl << "Care to play again?" << endl;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin >> answer;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer = tolower(answer);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>(answer == 'y')
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done = <b>false</b>);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(alpha, "abcdefghijklmnopqrstuvwxyz");
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(temp, getRandomWordFromFile("c:\\temp\\shortlist.txt").c_str(&nbsp; ));
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blanks[0] = NULL;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numLetters = strlen(temp);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numTries = 0;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>for</b>(<b>unsigned int</b> y = 0; y < numLetters; y++)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(blanks, "_");
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clear(&nbsp; );
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;}
    }
     
  4. Google AdSense Guest Advertisement



    to hide all adverts.
Thread Status:
Not open for further replies.

Share This Page