Thread: Help: Text-Based Roulette Game

  1. #1
    Registered User
    Join Date
    Nov 2006
    Posts
    13

    Post Help: Text-Based Roulette Game

    First of all, I would like to thank anyone that takes the time to read and respond to my thread. I am still currently in my first semester of programming and taking a small c++ class in college. To get a better understanding of what a single line of code could possibly represent I'm starting my first project with an interest I have. The program I want to create is not necessarily a game, but could be converted as such. What I aim to accomplish is to make a game related program that tests probabilty and other statistics.

    The biggest difficulty for me is I have written simple programs that consist of asking for a series of numbers and it would calculate the sum, difference, average, etc. The algorithms required for the program I want is a little more advanced then anything we have done in class thus far. To me the difficulty makes the project more fun, and I don't think that it is out of my abilities completely. I would like some guidance from anyone interested in giving me advice and/or algorithm help on designing a basic program.

    This next portion says in so many words what I want to get out of my program. In advance I am sorry for how long this is, but I wanted to try and be clear on what I want my program to do. If there are holes in the way I am thinking of setting this up let me know.


    I want it to just show text saying "Welcome! How much would you like to deposit into our casino? Only use numerical values! <= 1" Else, the message repeats until you give an accepted answer. Then, output $ "X Dollars". For example, for 1000 would output "You have deposited $1000 good luck!"

    Next, it asks "What wheel would you like to place your bets on?" "American" and "European" are the only accepted answers. Else, repeat statement until accepted answer is typed. Exception for the wrong answers in the future is "Floor". This will bring the player back to this question at any time. "What wheel would you like to place your bets on?"

    Next, it asks "Would you like to bet using a loop? Yes or No?" Typing Y, N, Yes, and No, would be the only accepted answers. Else, it would repeat the statement until you gave the right choice.

    Next, if "Yes" is choosen it asks "How many spins would you like the roulette wheel to make?" Only whole numbers are to be accepted in this portion of the program. Else, repeat question. If "No" is choosen less questions should be asked. "How much would you like to bet?", "Where would you like to place your bets?", and "Would you like the croupier to spin?" options should follow.

    Next, it asks "How much money would you like to bet for the requested amount of spins?" Only whole numbers should be accepted here as well to make it easier for calculations and testing <= 1. The feedback to the answer should be "Would you like your $ "X Dollars" disbursed?" For example, 1000 should respond with "Would you like your $ 1000 disbursed?"

    "No" implies that only one bet is going to be placed and "Yes" implies that $"X Dollars" will be divided among the number of bets you place. Same same thing should apply for eaither a looped bet or single bet. The reason is to show the results of a consistent bet. The acceptable yes or no answers apply here too.

    Next, I would like the croupier (program) to ask "How many bets would you like to place?" Whole numbers should only be accepted here as well <= 1.

    Next, "What is your starting bet?" Whole numbers only allowed.

    Next, "What is your maximum bet?" Whole numbers only allowed.

    Next, "Would you like to increase your bets as you win or lose?"

    "Yes" asks would you like your bets to increase as you win or lose?" "Win" and "Lose" are the only options.

    Next, "How would you like to increase your betting? Only whole numbers and 'N' or 'n' is allowed to increase the betting by the number of spins." I would like this part of the program to even process equations involving powers. For example, I would like to be able to put "(1^n + 10)". If the starting bet is $10 and you lost three times in a row the third bet would be (1^3 + 10) = (3 + 10) = 13. I know this is a dumb bet since you would not even break even. This is simply an example. My teacher never went into powers, but he did go into using '%'.

    Next, it should ask Would you like to enable temporary betting? "Yes" and "No" applies with "Details" as an added option.

    If "Details" is selected it should say "The temporary betting feature prevents a gambler from betting too high and losing all of his money on a high streak! When your current bet exceeds the maximum bet, temporary betting automatically works for that spin."

    "Yes" asks "What would you like to set your temporary bet as?" Whole numbers only allowed.

    Temporary betting is only enabled when the next spin would exceed the maximum bet. Also, it is disabled once a spin results in a win, or the loop is terminated. When a win occurs, the starting bet is applied before the next spin.


    Display Table Now!


    Before you place your bets it will now show a table of what bets you can place, the payout, and what numbers would win. For example, a "Five-Number Bet" and "Odd Bet" would display "The payoff on your Five-Number Bet is 6 to 1!" and "0, 00, 1, 2 or 3 wins!" and "The payoffon your Odd bet is 1 to 1!" and "All odd numbers win!" The Five-Number Bet is only an option on the "American Wheel" option and I have to have certain bets and values to spin on not available depending on what wheel is used.

    Next, based on the number of bets you place it will ask "Where would you like to place your bets?" If you follow the betting options you proceed to the next question.

    Next, it needs to calculate the amount of money you wished to bet per spin divided by the number of bets placed.

    Next, it needs to summarize the options choosen for the bets.

    Next, it needs to ask if the bets placed are correct. Yes and no options are the same once again.

    Next, it asks "Would you like the croupier to spin at this time?" Yes and no options are the same once again.

    At this time results should be being generated. Program should stop at the end of the loop, after one spin if no loop is selected, or if there isn't enough money to cover the current bet for the loop. Once the betting stops it shows how much you earned.

    Next, the program says "Are you ready to continue with the results?" Only "Yes" works unless once again if you type "Floor" to take you back to the casino floor. Else, repeat previous statement until a correct answer is typed.

    Next, With a "Yes" list how many times in a row (streak) both your bet had won and lost in a row with five and more as the value of the streak. Also, if a streak of ten occurs it should not indicate that a streak of five occured twice and ten occured once. Then, it should indicate how many times the bet had to be reset to the starting bet due to a high streak, if requested to increase bets based on wins or losses until you can not cover the bet with the range selected. Also, if enabled how many spins was temporary betting used.


    If this occurs the first thing that should happen is if a temporary bet is
    selected, that amount should be used for future spins until the win or loss
    option selected results in terminating the temporary bet. This is only used so
    long streaks do not cause you to lose all of your money. If you can't cover
    any bet it should automatically bet the original amount and continue to increase as it did before. However, if the current funds can not even cover the temporary
    bet or starting bet, then the loop is terminated. As stated above!


    After the report the program should ask. "Would you like to place anymore bets?" Yes and no answers apply.

    "No" brings back to casino floor with new bankroll.
    "Yes" asks "Would you like to repeat your bets? with or without the money you earned?" Only "With" and "Without" applies.

    "With" uses new bankroll to place same bet.
    "Without" gives away earnings and tests the betting again.

    I think this was really detailed...maybe too detailed, but I hope it was a good outline of what I want to accomplish. Also, I hope what I typed can help anyone give me some guidance on writing my program. I figure I'm doing great if I can eventually make this program and understand it. Even if I get help from you fellow programmers along the way. Thanks in advance to those that assist me or read my post at least.

  2. #2
    System Novice siavoshkc's Avatar
    Join Date
    Jan 2006
    Location
    Tehran
    Posts
    1,246
    Try a top to down designation.
    Learn C++ (C++ Books, C Books, FAQ, Forum Search)
    Code painter latest version on sourceforge DOWNLOAD NOW!
    Download FSB Data Integrity Tester.
    Siavosh K C

  3. #3
    Registered User
    Join Date
    Nov 2005
    Posts
    545
    Well, you need to use a lot of loops, file i/o to save the person's bank account. I would start coming up with some code and then post it so that people here can help, we don't write the code for you.

    Just start with working on the first few questions that need to be asked: have a loop and only break the loop once you have checked that the input is correct. http://www.cprogramming.com/tutorial/lesson3.html

  4. #4
    Registered User
    Join Date
    Nov 2006
    Posts
    13
    siavoshkc - "Try a top to down designation." What do you mean by that? I never covered that in class lol.

    bumfluff - "file i/o to save the person's bank account" The only file i/o I ever used was iostream.h what kind of i/o stream(s) would you think I should use, and how do I determine which one I need?

    "you need to use a lot of loops" Also, if the option to make a series of random spins is choosen, and even if temporary betting is enabled can't I still use one loop? I thought about using more then one loop, but since I wanted all of the spins to continue until the loop ended, shouldn't I use just one loop? What is your take on this?

    I know people aren't going to write code for me, so I'm working on that at the moment. However, I've never done things such as involve powers and have the program ask for someone to put an equation for the program to calculate a different bet (possibly an increase in money after each spin before the next spin automatically occurs) for each spin as streaks increase.

    I'll post some code as I come up with it, but I just need a little guidance that is all. Thanks for your help so far everyone.

  5. #5
    Registered User
    Join Date
    Nov 2006
    Posts
    13

    Post

    I'm getting close to finishing up the code that I know how to do, but I think this maybe too complex for me. I'll submit my code today or tomorrow, but my biggest problem is I'm not sure how I can get my values to work with each other in the loop and how to organize it. Hopefully with my // comments people will be able to understand what I'm trying to accomplish.

  6. #6
    Its hard... But im here swgh's Avatar
    Join Date
    Apr 2005
    Location
    England
    Posts
    1,688
    Use nested loops, each with a different value, but you must be careful not to nest too deeply or get the braces mixed up. Like you said, post some code when you can
    Double Helix STL

  7. #7
    VA National Guard The Brain's Avatar
    Join Date
    May 2004
    Location
    Manassas, VA USA
    Posts
    903
    Code:
    #include<windows.h>
    #include<iostream>
    #include<cctype>
    #include<cstdlib>
    #include<ctime>
    
    using namespace std;
    
    class Roulette
    {
       public:
                 
          Roulette();      
          
          void board_display();
          void prompt();
          void bet_menu();
          void place_bet();
          void set_bet(int choice);
          void set_bet(int menu_choice, int number, int amount); 
          void set_chip(int);
          void set_chip(int, int);          
          void spin_the_wheel();     
          void win_or_lose();
          void reset();
          bool quit();
          void gotoxy(int x, int y);      
            
          bool win_straight_up();   //35:1 + bet back
          bool win_column();        // 2:1 + bet back
          bool win_low();           // 1:1 + bet back
          bool win_high();          // 1:1 + bet back
          bool win_even();          // 1:1
          bool win_odd();           // 1:1
          bool win_red();           // 1:1
          bool win_black();         // 1:1
          bool is_black(int); 
          
          void input_error();
          void bet_error();
          void domain_error();
          void cap_error();
          
       private:
                  
          bool is_bet,
               is_quit;      
          
          int  total,
               available,
               winnings,
               winner,
               bet_array_side[9],
               bet_array_number[36],
               zero_coords_x[2],
               zero_coords_y[2],           
               side_coords_x[6],
               side_coords_y[6],
               num_coords_x[36],
               num_coords_y[36],
               col_coords_x[3],
               col_coords_y[3];         
                  
    };
    
    int main()
    {
        Roulette myRoulette;
        
        myRoulette.board_display();
        
        do{          
              myRoulette.prompt();                
        
        }while(!myRoulette.quit());
        
    return 0;
    }
    
    
    //////////////////////////////////////////////
    ///////////////////// Function Definitions //
    ////////////////////////////////////////////
    
    Roulette::Roulette()
    {
       is_bet  = FALSE;
       is_quit = FALSE;
       total  = 2500;
       available = 200;
       winnings = 0;
       
       srand((unsigned)time(NULL));  
       
       for(int i=0; i<9; i++)
       
          bet_array_side[i] = 0;
          
       for(int i=0; i<36; i++)
       
          bet_array_number[i] = 0; 
       
       for(int i=0, x=8; i<2; i++, x+=15)
       {
          zero_coords_x[i] = x;
          zero_coords_y[i] = 6;
       }      
       
       for(int i=0, y=13; i<6; i++, y+=8)
       {
          side_coords_x[i] = 35;
          side_coords_y[i] = y;
       }
       
       for(int i=0, x=5, y=10; i<36; i++, x+=10)
       {
           if(x>26)
           {               
                x = 5;
                y+= 4;
           }
           
          num_coords_x[i] = x;
          num_coords_y[i] = y;
       }
       
       for(int i=0, x=8; i<3; i++, x+=10)
       {
          col_coords_x[i] = x;
          col_coords_y[i] = 56; 
       }   
    }   
       
    void Roulette::board_display()
    {
       cout << " _____________________________ "
            << "\n|      ___     |   ___   ___  |"  
            << "\n|     |   |    |  |   | |   | |"
            << "\n|     |   |    |  |   | |   | |"
            << "\n|     |___|    |  |___| |___| |"
            << "\n|              |              |"        
            << "\n|______________|______________|_________ "
            << "\n|         |         |         |         |"  
            << "\n|    1    |    2    |    3    |  *LOW*  |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|  1 - 18 |"
            << "\n|         |         |         |         |            ________________"  
            << "\n|    4    |    5    |    6    |         |           /   The Wheel.   \\"
            << "\n|         |         |         |         |          /  ______________  \\" 
            << "\n|_________|_________|_________|_________|         |  |              |  |"
            << "\n|         |         |         |         |         |  |              |  |"  
            << "\n|    7    |    8    |    9    | *EVEN*  |         |  |______________|  |"
            << "\n|         |         |         |         |         |   ______________   |" 
            << "\n|_________|_________|_________|         |         |  |              |  |"
            << "\n|         |         |         |         |         |  |              |  |"  
            << "\n|    10   |    11   |    12   |         |         |  |______________|  |"
            << "\n|         |         |         |         |         |                    |"  
            << "\n|_________|_________|_________|_________|          \\   Total $        /"
            << "\n|         |         |         |         |           \\________________/"  
            << "\n|    13   |    14   |    15   |  *RED*  |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|         |"
            << "\n|         |         |         |         |"  
            << "\n|    16   |    17   |    18   |         |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|_________|"
            << "\n|         |         |         |         |"  
            << "\n|    19   |    20   |    21   | *BLACK* |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|         |"
            << "\n|         |         |         |         |"  
            << "\n|    22   |    23   |    24   |         |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|_________|"
            << "\n|         |         |         |         |"  
            << "\n|    25   |    26   |    27   |  *ODD*  |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|         |"
            << "\n|         |         |         |         |"  
            << "\n|    28   |    29   |    30   |         |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|_________|"
            << "\n|         |         |         |         |"  
            << "\n|    31   |    32   |    33   | *HIGH*  |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________| 19 - 36 |"
            << "\n|         |         |         |         |"  
            << "\n|    34   |    35   |    36   |         |"
            << "\n|         |         |         |         |" 
            << "\n|_________|_________|_________|_________|"
            << "\n|   2:1   |   2:1   |   2:1   |"
            << "\n|_________|_________|_________|";
            
       gotoxy(62,22);  cout << total;          
    }
    
    void Roulette::prompt()
    {   
         int menu_choice=0;
        
          gotoxy(50,35); cout << "      Main Menu       ";
          gotoxy(50,36); cout << "--------------------- ";
          gotoxy(50,38); cout << "1. Place Bet          ";
          gotoxy(50,39); cout << "2. Spin the wheel     ";         
          gotoxy(50,40); cout << "3. Quit               ";
          gotoxy(50,41); cout << "                      ";
          gotoxy(50,42); cout << "                      ";
          gotoxy(50,43); cout << "                      ";
          gotoxy(50,44); cout << "                      ";
          gotoxy(50,45); cout << "                      ";
          gotoxy(50,46); cout << "                      ";
          gotoxy(50,47); cout << "                      ";
          gotoxy(50,48); cout << "                      ";
          gotoxy(50,49); cout << "                            ";
          gotoxy(50,50); cout << "                            ";
          gotoxy(50,51); cout << "                            ";
          gotoxy(50,52); cout << "                            ";
          gotoxy(50,53); cout << "                            ";
          gotoxy(50,54); cout << "                            ";
          gotoxy(50,55); cout << "                            ";
          gotoxy(50,56); cout << "                            ";
          
            
          gotoxy(50,42); cout << "Enter ye' choice: ";
          cin >> menu_choice;      
          
          switch(menu_choice)
          {
             case 1:  place_bet();                           break;
             case 2:  is_bet?spin_the_wheel():bet_error();   break;
             case 3:  is_quit=TRUE;                          break;
            default:  input_error();                         break;
          }            
    }
    
    void Roulette::place_bet()
    {
        int menu_choice=0,
            number=0,
            bet_amt=0; 
           
        gotoxy(54,26); cout << "               ";
        gotoxy(62,10); cout << "                ";     
        gotoxy(50,39); cout << "1.  Double Zero      ";
        gotoxy(50,35); cout << "      Bet Menu       ";
        gotoxy(50,36); cout << "---------------------";
        gotoxy(50,38); cout << "0.  Zero             ";
        gotoxy(50,40); cout << "2.  Straight-up      ";
        gotoxy(50,41); cout << "3.  Left Column      ";
        gotoxy(50,42); cout << "4.  Middle Column    ";
        gotoxy(50,43); cout << "5.  Right Column     ";
        gotoxy(50,44); cout << "6.  Low  Numbers     ";
        gotoxy(50,45); cout << "7.  High Numbers     ";
        gotoxy(50,46); cout << "8.  Evens            ";
        gotoxy(50,47); cout << "9.  Odds             ";
        gotoxy(50,48); cout << "10. Red              ";
        gotoxy(50,49); cout << "11. Black            ";
        
        
        gotoxy(50,51); cout << "Enter ye' choice: ";
        cin >> menu_choice; 
        
        if(menu_choice < 0 || menu_choice > 11)
        
           domain_error();   
        
        if(menu_choice == 2)      
           
           set_bet(menu_choice, number, bet_amt);    
        
        else
        
           set_bet(menu_choice);
    }
    
    void Roulette::set_bet(int choice)
    {
        int bet_amt=0;
        
         cin.ignore();
         gotoxy(50,53); cout << "$200 Limit Per Turn";       
         gotoxy(50,54); cout << '$' << available << " available to bet.";
         gotoxy(50,56); cout << "Enter Amount: ";
         gotoxy(64,56); cin >> bet_amt;
         
         if(bet_amt > available)
         
            cap_error();
            
         total -= bet_amt; 
         available -= bet_amt;    
         bet_array_side[choice-3] = bet_amt;
         
         gotoxy(62,22);  cout << "      ";
         gotoxy(62,22);  cout << total;     
         
         is_bet = TRUE;
         set_chip(choice);
    }
    
    void Roulette::set_bet(int choice, int number, int bet_amt) 
    {    
           gotoxy(50,51); cout << "Enter a number 1-36: ";
           
           cin >> number;
           
           if(number < 1 || number > 36) //straight up
           
              domain_error();    
           
           cin.ignore();
           gotoxy(50,53); cout << "$200 Limit Per Turn";       
           gotoxy(50,54); cout << '$' << available << " available to bet.";
           gotoxy(50,56); cout << "Enter Amount: ";
           gotoxy(64,56); cin >> bet_amt;
         
         if(bet_amt > available)
         
            cap_error();
            
         total -= bet_amt;   
         available -= bet_amt;
         bet_array_number[number-1] = bet_amt;
         
         gotoxy(62,22);  cout << "      ";
         gotoxy(62,22);  cout << total; 
         
         is_bet = TRUE;
         set_chip(choice, number);     
    }    
    
    void Roulette::set_chip(int pos)
    {  
       char chip = 1;
    
          switch(pos)
          {
             case 0:  gotoxy(zero_coords_x[0], zero_coords_y[0]);  cout << chip;            
                      break; 
             case 1:  gotoxy(zero_coords_x[1], zero_coords_y[1]);  cout << chip;
                      break;
             case 3:  gotoxy(col_coords_x[0], col_coords_y[0]);    cout << chip;
                      break;
             case 4:  gotoxy(col_coords_x[1], col_coords_y[1]);    cout << chip;
                      break;
             case 5:  gotoxy(col_coords_x[2], col_coords_y[2]);    cout << chip;
                      break;
             case 6:  gotoxy(side_coords_x[0], side_coords_y[0]);  cout << chip;
                      break;
             case 7:  gotoxy(side_coords_x[5], side_coords_y[5]);  cout << chip;
                      break;
             case 8:  gotoxy(side_coords_x[1], side_coords_y[1]);  cout << chip;
                      break; 
             case 9:  gotoxy(side_coords_x[4], side_coords_y[4]);  cout << chip;
                      break;
             case 10: gotoxy(side_coords_x[2], side_coords_y[2]);  cout << chip;
                      break; 
             case 11: gotoxy(side_coords_x[3], side_coords_y[3]);  cout << chip;
                      break;
          }
          
          prompt();
    }
    
    void Roulette::set_chip(int pos, int number)
    {
       char chip = 1;
       
       gotoxy(num_coords_x[number-1], num_coords_y[number-1]);
       cout << chip;
       
       prompt();
    }
    
    void Roulette::spin_the_wheel()
    {   
        int turn=0;
        int snooze=75;
        int target=0; 
        gotoxy(56,15); cout << "   ZERO    ";
        gotoxy(60,19); cout << "0 ";
              
        Sleep(snooze);
              
        gotoxy(56,15); cout << "DOUBLE ZERO";
        gotoxy(60,19); cout << "00";
              
        Sleep(snooze);      
              
    
        for(int i=1; i<37; i++)  
        {
           if(is_black(i))  
           {
              gotoxy(56,15); cout << "   BLACK   ";
              gotoxy(60,19); cout << "  ";    
              gotoxy(60,19); cout << i;                     
           }   
           else 
           {           
              gotoxy(56,15); cout << "   RED     ";
              gotoxy(60,19); cout << "  ";    
              gotoxy(60,19); cout << i;
           }            
                            
           Sleep(snooze);
        } 
               
        //Random Number
        target = rand()%38+1;    
        
        if(is_black(target))
        {
           gotoxy(56,15); cout << "   BLACK   "; 
           gotoxy(60,19); cout << "  ";    
           gotoxy(60,19); cout << target;   
        }   
        else 
        {
           gotoxy(56,15); cout << "   RED     ";
           gotoxy(60,19); cout << "  ";    
           gotoxy(60,19); cout << target;
        }
        if(target == 37)
        {
           gotoxy(56,15); cout << "   ZERO    ";
           gotoxy(60,19); cout << "0 ";
        }
        else if(target == 38)
        {            
           gotoxy(56,15); cout << "DOUBLE ZERO";
           gotoxy(60,19); cout << "00"; 
        }
                
        winner = target;
        win_or_lose();        
    } 
    
    void Roulette::win_or_lose()
    {    
         int snooze = 2000;
             
         if(is_quit)
         
            return;
             
         win_straight_up();   //35:1 + bet back
         win_column();        // 2:1 + bet back
         win_low();           // 1:1 + bet back
         win_high();          // 1:1 + bet back
         win_even();          // 1:1
         win_odd();           // 1:1
         win_red();           // 1:1
         win_black();
         
             if(winnings)
             {    
                  gotoxy(54,26); cout << "                ";   
                  gotoxy(54,26); cout << "You WIN: $" << winnings;              
             }
             else
             {
                  gotoxy(54,26); cout << "                ";  
                  gotoxy(56,26); cout << "No Wins.";              
             }
             
             total += winnings;
             gotoxy(62,22);  cout << "      ";
             gotoxy(62,22);  cout << total;  
             Sleep(snooze);
             reset();          
    }
    
    bool Roulette::win_straight_up()
    {
         
         if(!bet_array_number[winner-1])
         
            return FALSE;
         
         else
         {
            winnings += bet_array_number[winner-1] * 35 + bet_array_number[winner-1];
            return TRUE;
         }  
    }
    
    bool Roulette::win_column()
    {         
         if(!bet_array_side[0] && !bet_array_side[1] && !bet_array_side[2])
         
            return FALSE;
            
          for(int i=0, j=1; i<3; i++, j++)
          {  
            if(bet_array_side[i])
            {
               for(int k=j; k<37; k+=3)
               {
                  if(winner == k)
                  {
                      winnings += bet_array_side[i] * 2 + bet_array_side[i];
                      return TRUE;
                  }
               }
            }        
          }
          return FALSE;
    }  
    
    bool Roulette::win_low()
    {
         if(!bet_array_side[3])
         
            return FALSE;
            
         else if(winner > 0 && winner < 19)
         {
            winnings += bet_array_side[3] + bet_array_side[3];
            return TRUE;
         }
         else
         
            return FALSE;
    }
    
    bool Roulette::win_high()
    {
         if(!bet_array_side[4])
         
            return FALSE;
            
         else if(winner > 18)
         {
            winnings += bet_array_side[4] + bet_array_side[4];
            return TRUE;
         }
         else
         
            return FALSE;
    }
    
    bool Roulette::win_even()
    {
         if(!bet_array_side[5])
         
            return FALSE;
            
         else if(winner%2+1)
         {
            winnings += bet_array_side[5];
            return TRUE;
         }
         else 
         
            return FALSE;
    }
    
    bool Roulette::win_odd()
    {
         if(!bet_array_side[6])
         
            return FALSE;
            
         else if(winner%2)
         {
            winnings += bet_array_side[6];
            return TRUE;
         }
         else 
         
            return FALSE;
    }
    
    bool Roulette::win_red()
    {
         if(!bet_array_side[7])
         
            return FALSE;
         
         else if(!is_black(winner))
         {
            winnings += bet_array_side[7];
            return TRUE;
         }
         else 
         
            return FALSE;
    }
    
    bool Roulette::win_black()
    {
         if(!bet_array_side[8])
         
            return FALSE;
         
         else if(is_black(winner))
         {
            winnings += bet_array_side[8];
            return TRUE;
         }
         else 
         
            return FALSE;
    }           
    
    bool Roulette::is_black(int number)
    {
         if(number<11 && !(number%2) || number>10 && number<18 && number%2 || 
            number>19 && number<29 && !(number%2) || number>28 && number<36 && number%2)
         
            return true;
            
         else
         
            return false;
    }    
    
    void Roulette::reset()
    {
       winnings  = 0;
       available = 200; 
       is_bet  = FALSE; 
       
       for(int i=0; i<9; i++)
       
          bet_array_side[i] = 0;
          
       for(int i=0; i<36; i++)
       
          bet_array_number[i] = 0; 
          
       for(int i=0; i<2; i++)
       { 
          gotoxy(zero_coords_x[i], zero_coords_y[i]); cout << '_';
       } 
       for(int i=0; i<6; i++)
       {
          gotoxy(side_coords_x[i], side_coords_y[i]); cout << ' ';
       }
       for(int i=0; i<36; i++)
       {
          gotoxy(num_coords_x[i], num_coords_y[i]);   cout << '_';
       }
       for(int i=0; i<3; i++)
       {
          gotoxy(col_coords_x[i], col_coords_y[i]);   cout << '_';
       }
       
        gotoxy(54,26); cout << "              ";
    }
    
    bool Roulette::quit()
    {
         return is_quit;
    }                
              
    void Roulette::gotoxy(int x, int y)
    {
      COORD coord;
      coord.X = x;
      coord.Y = y;
      SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    }  
    
    void Roulette::input_error()
    {
          gotoxy(50,44); cout << "\aInvalid Entry! ";      
          Sleep(1500);
          prompt();
    }  
    
    void Roulette::cap_error()
    {     
         gotoxy(50,56); cout << "\aBet amount exceeds $200 limit! ";
         Sleep(1500);
         gotoxy(50,51); cout << "                     ";
         gotoxy(50,53); cout << "                                 ";
         gotoxy(50,54); cout << "                                 ";
         gotoxy(50,56); cout << "                                 ";  
         place_bet();
    }
    
    void Roulette::domain_error()
    {
          gotoxy(50,53); cout << "\aEntry does not fall within specified range. ";
          Sleep(1500);
          gotoxy(50,51); cout << "                                             ";
          gotoxy(50,53); cout << "                                             ";
          place_bet();
    } 
    
    void Roulette::bet_error()
    {
          gotoxy(50,44); cout << "\aYou must place a bet before spinning the wheel! ";
          Sleep(1500);
          gotoxy(50,44); cout << "                                                  ";
          prompt();
    }
    • "Problem Solving C++, The Object of Programming" -Walter Savitch
    • "Data Structures and Other Objects using C++" -Walter Savitch
    • "Assembly Language for Intel-Based Computers" -Kip Irvine
    • "Programming Windows, 5th edition" -Charles Petzold
    • "Visual C++ MFC Programming by Example" -John E. Swanke
    • "Network Programming Windows" -Jones/Ohlund
    • "Sams Teach Yourself Game Programming in 24 Hours" -Michael Morrison
    • "Mathmatics for 3D Game Programming & Computer Graphics" -Eric Lengyel

  8. #8
    Registered User
    Join Date
    Nov 2006
    Posts
    13
    That might be too complex for me...I might have to stick with basic loops and such. I'll try to post mine soon. It is actually coming along, but there are some things I just can't figure out so far.

  9. #9
    Registered User
    Join Date
    Nov 2006
    Posts
    13
    Finally I have plenty code to show! I tried to put this game together in a loop, but I keep getting it all wrong. The way I setup the program this time wasn't how the code should look exactly, but as a personal starting point and a guide on how I wanted to put it together. I need some advice on how to put it together for the transitions and how to do various equations involved to get game results. Also, if you notice I only put together the American Roulette table and duplicated it for the European Roulette table. This was to save time and submit something. Hopefully people can read my code and it isn't so sloppy. I tried to organize it the best I could, so please keep in mind I'm a newbie programmer. If you see any other things I'm overlooking like necessary counters and variable to add let me know. I'll keep working on it, but I wanted to at least post something to show I'm working on it. Thanks so much in advance for at least looking at it everyone!

    Code:
    /* Text-Based Roulette Game - Michael - e-mail
    
       C program to prompt user to answer a series of questions and print the
       results based on the user's input.
    */
    
    #include <iostream.h> // include system information
    
    int main() {
      int new, exit, q_begin, q_deposit, q_wheel, q_loop, q_numberspins, q_bet,  
      q_disbursedbet, q_numberbets, q_startingbet, q_maximumbet, q_increasebet, 
      q_increasebetwinlose, q_increasebetopposite, q_temporarybets q_temporarybetsvalue, 
      q_eachbetvalue, q_placebets, q_confirmbet, q_modifybet, q_newbets, q_spinwheel, 
      q_repeatbet, q_currentbankroll;
    
    char Streak = 'n';   // Win or Loss streak counter
    char Win    = 'w';   // Win counter
    char Lose   = 'l';   // Lose Counter
    
    
    // This defines each variable and its role in the program. 
    // Basically what I want the variables to do, 
    // but I'm not skilled enough to get them to.
    /*
    
    new - New game
    
    exit - Exit game
    
    q_begin - After user inputs data begin prompting the user for game input
    
    q_deposit - $"X Dollars" to deposit into the casino
    
    q_wheel - Type of wheel to display later
    (Choose between the American and European Wheel)
    
    q_loop - Enable or Disable multiple spins 
    (Useful for testing out numerous spins with fixed betting)
    
    q_numberspins - Number of spins
    
    q_bet - $"X Dollars" to bet
    
    q_disbursedbet - Enable or Disable multiple bets
    
    q_numberbets - Number of bets
    
    q_startingbet - Sets the "starting bet" amount and 
    the amount of the reset bet when the streak resets.
    
    q_maximumbet - Sets the maximum bet
    If the next bet and spin will exceed the "maximum bet" and 
    "temporary betting" is enabled, use that set amount until the streak is reset.
    Else, restart at the "starting bet" amount for the next spin.
    
    q_increasebet - Enable or Disable increasing bets 
    
    q_increasebetwinlose - Increase bets as you win or lose
    
    q_increasebetopposite - Opposite of "q_increasebetwinlose" selection
    Determines when 'n' will reset.
    
    q_increasebetequation - Equation user inputs 
    To determine how the bet will increase based on 
    the win or loss streak. 
    
    char Streak = 'n' - Win or Loss streak counter
    Bet will automatically increase based on this variable in the equation.
    
    q_temporarybets - Enable or Disable temporary bets
    "Temporary betting" is only used if enabled and the following spin 
    will result in betting an amount that exceeds the "maximum bet"
    If active the bet will return to the "minimum bet" amount 
    after the streak is reset. 
    Else, skip step and return to the "starting bet" amount.
    (Useful for long streaks!)
    
    q_temporarybetsvalue - $"X Dollars" set for temporary bet
    
    q_eachbetvalue - $"X Dollars" calculated using ( q_bet / q_numberbets )
    
    q_placebets - Where bets are placed
    
    q_confirmbet - Confirm bet options
    
    q_modifybet - If bet not correct use integers to modify bet options
    
    q_currentbets - When bets have been changed this value stores them
    
    q_spinwheel - Spin wheel
    
    q_repeatbet - Enable or Disable repeat bet option
    
    q_updatebankroll - Update bankroll option
    
    q_currentbankroll - Bet with current bankroll
    
    q_oldbankroll - Bet again with old bankroll
    (Usful for repeating tests, and if you like to donate to charity!)
    
    char Win - To keep track of all of the win streaks 
    that occured during the multiple spins <= 5
    
    char Lose - To keep track of all of the lose streaks 
    that occured during the multiple spins <= 5
    
    */
    // End defining variables
    
      // Display initial program identification
      cout << "Text-Based Roulette Game" << endl
           << "" << endl << endl;
    
    
      // Print menu options and prompt to continue
      cout << "new - New game 
      << endl
      "exit - Exit game
      << endl << endl;
      cout << "Press Y or Yes to continue";
      cin >> q_begin;
      cout << endl;
      // After user inputs "Y" or "Yes" go to the
      // "Make a deposit" option 
    
    
      // Begin prompting the user for game input
    
    
      // Make a deposit
      cout << "Welcome! How much would you like to deposit into our casino? $
      << endl
      Note: Only use whole numbers <= 1!"
      << endl;
      cin >> q_deposit;
      cout << endl;
      // After user inputs a whole number <= 1, save the value 
      // and go to the "pick a wheel" option 
      
    
      // Pick a wheel
      cout << "What wheel would you like to place your bets on? 
      << endl
      Note: Only type A, E, American, European!"
      << endl;
      cin >> q_wheel;
      cout << endl;
      // After user inputs "A", "E", "American", or "European", save the value
      // and go to the "Loop" option
    
          // "A", and "American" - will later display the American Roulette table
          // "E", and "European" - will later display the European Roulette table
      
    
      // Enable or disable multiple spins
      cout << ""Would you like to bet using multiple spins? 
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_loop;
      cout << endl;
      // Depending on user input go to "Enable", or "Disable" 
      // "Loop" option 
     
    
        // Enable loop and ask for number of spins
        cout << "How many spins would you like the roulette wheel to make? 
        << endl
        Note: Only use whole numbers <= 1!"
        << endl;
        cin >> q_numberspins;
        cout << endl;
        // After user inputs a whole number <= 1, save the value
        // and go to the "Disburse bet" option 
    
    
        // Disable loop and go to the "Place bet" option
    
      // Place a bet
      cout <<"You have $"<< q_deposit 
      << endl
      cout << "How much money would you like to bet? $
      << endl
      Note: Only use whole numbers <= 1!"
      << endl;
      cin >> q_bet;
      cout << endl;
      // After user inputs a whole number <= 1, save the value
      // and display a "Roulette table"
    
    
      // Enable or disable disburse bet
      cout << "Would you like your $" << q_bet << 
      cout << "disbursed
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_disbursedbet;
      cout << endl;
      // Depending on user input goto "Enable", or "Disable" 
      // "Disburse bet" option 
      
     
        // Enable disbursed bet and ask for number of bets
        cout << "How many bets would you like to place?
        << endl
        Note: Only use whole numbers < 1!"
        << endl;
        cin >> q_numberbets;
        cout << endl;
        // After user inputs a whole number <= 1, save the value
        // and go to the "Starting bet" option
    
    
        // Disable disbursed bet goes to 
        // "Starting bet" option with only 
        
    
      // Place a starting bet 
      cout << "What is your starting bet? $ 
      << endl
      Note: Only use whole numbers <= 1!"
      << endl;
      cin >> q_startingbet;
      cout << endl;
      // After user inputs a whole number <= 1, save the value
      // and go to the "Maximum bet" option
      
    
      // Place a maximum bet
      cout << "What is your maximum bet? $
      << endl
      Note: Only use whole numbers <= 1!"
      << endl;
      cin >> q_maximumbet;
      cout << endl;
      // After user inputs a whole number <= 1, save the value
      // go to the "Increase bet" option
    
    
      // Increase bet as you win or lose
      cout << "Would you like to increase your bet as you win or lose? 
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_increasebet;
      cout << endl;
      // Depending on user input goto "Enable", or "Disable" 
      // "Increase bet" option 
    
    
        // Enable increase bet ask to increase for win or lose
        cout << "Would you like the bet to increase as you win or lose? 
        << endl
        Note: Only type W, L, Win, Lose!"
        << endl;
        cin >> q_increasebetwinlose;
        cin >> q_increasebetopposite; // Opposite of input generates this value
        cout << endl;
        // Depending on user input save "Win", or "Lose" data,
        // Else the option you did not choose will reset 
        // the next bet amount to the starting bet amount
        // and go to the "Increase bet equation" option 
      
        // Disable increase bet go to 
        // "Temporary bet" option
        
    
      // Increase bet equation
      cout << "Enter an equation to increase bets
      << endl
      Note: Only use integers, and 'n' to generate an equation
      << endl
      'n' = current number of spins that occurs
      before the q_increasebetopposite value occurs
      << endl  
      example: (1^n) + 5  ... If n=4,  The bet would now be (1^4) + 5 = (4 + 5) = 9
      << endl                         
      The n term would be four, if you won or lost three spins in a row!
      This is because you are on your 4th spin in the streak.
      << endl
      cin >> q_increasebetequation;
      cout << endl;
      // Depending on user input save "Equation" data,
      // and go to the "Temporary bet" option
    
    
      // Enable or disable temporary bets
      cout << "Would you like to enable or disable temporary bets? 
      << endl
      Note: Only type Y, N, D, Yes, No, Details!"
      << endl;
      cin >> q_temporarybets;
      cout << endl;
      // Depending on user input goto "Enable", or "Disable" 
      // "Temporary bet" option 
    
    
          // Enable temporary bets
          cout << "What would you like to set your temporary bet as? $
          << endl
          Note: Only use whole numbers <= 1!"
          << endl;
          cin >> q_temporarybetsvalue;
          cout << endl;
          // After user inputs a whole number <= 1, save the value
          // and go to the "Display Roulette Table" option
    
          // Disable temporary bets 
          // go to "Display Roulette Table" option
    
          // Details temporary bets
          cout << "The temporary betting feature prevents a gambler from betting 
          too high and losing all of his money on a high streak! When your current 
          bet exceeds the maximum bet, temporary betting automatically works for 
          that spin."      
          << endl;
          // Following this statement return to "Enable" or "Disable" 
          // "Temporary bet" option
    
    
    
    
      // Display Roulette Table depending on user's table choice
      // After table prints go to the
      // "Place bet" option
    
      
      // American Roulette Table
      cout<<"0 |1  4  7  10 13 16 19 22 25 28 31 34|1stColumn"<<endl 
          <<"--|2  5  8  11 14 17 20 23 26 29 32 35|2ndColumn"<<endl 
          <<"00|3  6  9  12 15 18 21 24 27 30 33 36|3rdColumn"<<endl 
          <<"--|    1st12  |    2nd12  |   3rd12   |---       "<<endl 
          <<"  | 1stHalf  |  Even |  ODD | 2ndHalf |          "<<endl<<endl; 
    
      // American Roulette Profit Margin 
     cout<<"           The Profit Margin"<<endl 
         <<"            +-------------+"<<endl 
         <<"            |EVEN    | 2X |"<<endl 
         <<"            |ODD     | 2X |"<<endl 
         <<"            |Halves  | 2X |"<<endl 
         <<"            |Columns | 3X |"<<endl 
         <<"            |12ths   | 3X |"<<endl 
         <<"            |Numbers | 35X|"<<endl 
         <<"            +-------------+"<<endl<<endl; 
    
    
      // European Roulette Table
      cout<<"0 |1  4  7  10 13 16 19 22 25 28 31 34|1stColumn"<<endl 
          <<"--|2  5  8  11 14 17 20 23 26 29 32 35|2ndColumn"<<endl 
          <<"00|3  6  9  12 15 18 21 24 27 30 33 36|3rdColumn"<<endl 
          <<"--|    1st12  |    2nd12  |   3rd12   |---       "<<endl 
          <<"  | 1stHalf  |  Even |  ODD | 2ndHalf |          "<<endl<<endl; 
    
      // European Roulette Profit Margin 
     cout<<"           The Profit Margin"<<endl 
         <<"            +-------------+"<<endl 
         <<"            |EVEN    | 2X |"<<endl 
         <<"            |ODD     | 2X |"<<endl 
         <<"            |Halves  | 2X |"<<endl 
         <<"            |Columns | 3X |"<<endl 
         <<"            |12ths   | 3X |"<<endl 
         <<"            |Numbers | 35X|"<<endl 
         <<"            +-------------+"<<endl<<endl;  
    
    
    
    
      // Place your bets
      cout << "Where would you like to place your bets? 
      << endl
      Note: Type a series of words you see on the table. Use the spacebar to 
      seperate bets!"
      << endl;
      cin >> q_placebets;
      cout << endl;
      // Depending on user input save data to print later
      // go to the "Calculate bet" data 
     
      
      // Calculate the amount of money you wished to bet per spin 
      // divided by the number of bets placed.
      cout << "You have placed $" << q_eachbetvalue <<
      cout << "on" << q_placebets <<
      cout << endl;
      // go to "Print summary"
      
    
      // Print Summary of all selections made throughout the program
      cout << endl
      "1) Y << endl
      2) Selection #2 << endl
      3) Selection #3 << endl
               etc...";
      // go to the "Confirm bet" option
    
    
      // Confirm bet
      cout << "Has your bet been placed correctly? 
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_confirmbet;
      cout << endl;
      // Depending on user input goto "Correct", or "Not correct" option 
      
    
        // If bet is correct go to the "Spin wheel" option
        
    
        // Bet is not correct  
        cout << "What options are not correct? 
        << endl
        Note: Only use whole numbers <= 1 
        Use the spacebar to seperate options!"
        << endl;
        cin >> q_modifybet;
        cout << endl;
        // go to the "Input new values" option
        
        
    
          // Allow user to input new values for each option selected 
          cout << "Input new values for options selected! 
          << endl
          Note: Use the spacebar to seperate the values modified"
          << endl;
          cin >> q_currentbets;
          cout << endl;
          // Print new summary and go to the "Confirm bet" option
           
    
      // Spin wheel
      cout << "Would you like the croupier to spin the wheel? 
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_spinwheel;
      cout << endl; 
      // Depending on user input goto the "Spin", or "Don't spin" option
           
    
        // Spin wheel and collect data and print to user
        cout << "Printed Data" 
        << endl
         
        // Don't spin wheel and display message
        cout << "What are you waiting for is something else wrong? 
        << endl
        Note: Confirm your bet again!"
        // Return to the "Confirm bet" option
    
    
      // After data is printed choose to repeat the bets
      cout << "Would you like to repeat the bets? 
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_repeatbet;
      cout << endl;
      // Depending on user input goto the
      // "Yes", or "No" option
     
    
        // If yes is choosen go to the
        // "Current bankroll" option
        
    
        // If no is choosen save current bankroll, 
        // and return to the "Pick a wheel" option with current bankroll
     
    
      // Update bankroll
      cout << "Would you like to repeat your previous bets with or without your 
      current bankroll? 
      << endl
      Note: Only type Y, N, Yes, No!"
      << endl;
      cin >> q_updatebankroll;
      cout << endl; 
      // Depending on user input goto the 
      // "Yes", or "No" option
          
        
        // If yes spin wheel again with the current bankroll
        cin >> q_currentbankroll;  
          
        // If no spin wheel again without the current bankroll 
        // (Good for repeating tests)
        cin >> q_oldbankroll;
    
      
    
    
      return 0;
    }

  10. #10
    MFC killed my cat! manutd's Avatar
    Join Date
    Sep 2006
    Location
    Boston, Massachusetts
    Posts
    870
    Oh dear... All sorts of errors, you obviously haven't tried compiling, you need to write you're code in small bits, and you're indentation is terrible...But other than that, it's great
    Silence is better than unmeaning words.
    - Pythagoras
    My blog

  11. #11
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    You need to learn about functions and classes. Please read about those before trying to code anything more complicated than adding two variables.

    Get a good book from the books sticky thread or read several tutorials on the web. You are obviously too limited in your knowledge to try this type of program.

    I'm not trying to discourage you. I'm trying to be realistic. Adopt another posture towards the learning process of a programming language. Try to learn about it first; what does it offer you, how to use what it offers. Then and only then should you try to apply that knowledge.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  12. #12
    Registered User
    Join Date
    Nov 2006
    Posts
    13

    Smile

    manutd - I just used 2 spaces for indenting and I set it up that way, so I can read options easer. Didn't want to back everything up to the right corner and have less room to work with. Thats why I limited indenting. The loops and brackets were throwing me off so bad that I had to resort to writing it like this for now till I revise some code.

    Mario F. - I'll look into that, but I just wanted to post what I had so far. Thats why I needed to post my program I'm only comfortable with small programs involving a few veriables to get sums and averages and things. Mainly thats why I need help so much.

    I'll try to look into all of this and get back with my code as I develop it. I'll check back for more comments later.

  13. #13
    Its hard... But im here swgh's Avatar
    Join Date
    Apr 2005
    Location
    England
    Posts
    1,688
    >manutd - I just used 2 spaces for indenting and I set it up that way, so I can read options >easer. Didn't want to back everything up to the right corner and have less room to work with.

    Having good indentation in a program can greatly improve two things.

    1 Program readability. It is very hard to read a large program that is all to one side or mixed
    spaced at every indent. Dependant on the IDE your are using, set the indent margin to three
    spaces, or manaually do it as you write the code. At every if statement, indent the code that
    defines the condtion. A every function opening brace ( like main ) ijndent the entire section.

    2 Debugging. When you create a big program, and have to debug it ( find errors ) it can also
    be frustrating to debug with poor indentation. Epecially when one of the errors is a missing
    brace. If they are not aligned in the first place, finding it can be time comsuming.

    >You need to learn about functions and classes. Please read about those before trying to code >anything more complicated than adding two variables.

    Mario is right. Did you check brains post a little further up? Your program will be much more
    neater and layed out better if you did use clasees and functions. Look how he has implemented
    his version and adapt the same procedure to yours.

    These are not in anyway naggings, but it is vitally important to learn good program format
    and claraity when you attempt a project as large as this
    Double Helix STL

  14. #14
    Registered User
    Join Date
    Nov 2006
    Posts
    13

    Smile

    swgh - "Having good indentation in a program can greatly improve two things."

    I'll try to use better indenting, but I'm not sure how to determine which areas to indent more and which ones don't need to as much. Can anyone help me on this?

    "You need to learn about functions and classes."

    Functions are what we are going over in class, so I'll try to learn what I can on that. Classes I'm sure will come after that.

    For now I guess I just need help with my indenting...that would be a huge help.

  15. #15
    MFC killed my cat! manutd's Avatar
    Join Date
    Sep 2006
    Location
    Boston, Massachusetts
    Posts
    870
    Indenting:
    Code:
    for (int i = 0; i <= 10; i++)
    {
         if (i %2 == 0)
         {
              cout << "It's even!" << endl;
         }
         else
         {
              cout << "It's odd!" << endl;
         }
    }
    Note that that's only my style. There are several others, but the main idea is to be able to follow what's in what part.
    Quote Originally Posted by mfm1983
    I just need help with my indenting
    No, you don't. Check your cout statements, for example.
    Silence is better than unmeaning words.
    - Pythagoras
    My blog

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Text based game
    By wipeout4wh in forum C Programming
    Replies: 12
    Last Post: 03-26-2009, 04:39 PM
  2. text based mmo type game.....
    By SONAR in forum Game Programming
    Replies: 0
    Last Post: 12-09-2008, 05:17 AM
  3. Text based game
    By beene in forum Game Programming
    Replies: 10
    Last Post: 05-12-2008, 07:52 PM
  4. easiest way to make text based game?
    By oceanrats in forum C++ Programming
    Replies: 7
    Last Post: 08-13-2005, 02:17 PM
  5. Saving a text game
    By Unregistered in forum C++ Programming
    Replies: 4
    Last Post: 03-27-2002, 01:33 PM