Source main.CPP:

Code:
#include <iostream>
#include "cat.h"
using namespace std;

void MenuFunction(int*, int*, int*);

Cat Frisky;

int main()
{
    int itsAGE;
    int lovePLUS = 0;
    int hatePLUS = 0;
    int MAXPET;

    cout << "Meet Frisky. He is " << Frisky.GetAge() << " years old." << endl << endl;
    Frisky.Purr(++lovePLUS);
    Frisky.SetLOVEHATE(lovePLUS, hatePLUS);

    cin.get();

    MenuFunction(&MAXPET, &lovePLUS, &hatePLUS);


    return 0;
}

void MenuFunction(int *MAXPET, int *lovePLUS, int *hatePLUS) {
    int choice;

    for (choice =0; choice < 4; choice = 0) {
// These prints are for testing purposes to see the values change in runtime.
    cout << "MAXPET: " << *MAXPET << " lovePLUS: " << *lovePLUS << " hatePLUS: " << *hatePLUS << endl << endl;

    cout << "***** Interact with Frisky! *****" << endl << endl;
    cout << "[1] - Pet Frisky!\n[2] - Play with Frisky!\n[3] - Feed Frisky!" << endl << endl;
    cin  >> choice;

        switch(choice) {
            case 1:
            Frisky.Pet(++*MAXPET, ++*lovePLUS, *hatePLUS);
            break;
        }
    }
}
Source cat.h:

Code:
#ifndef CAT_H_INCLUDED
#define CAT_H_INCLUDED
using namespace std;

class Cat {
public:
// Constructor and Destructor
     Cat();
    ~Cat() {}
// Public Functions
    void Meow()const { cout << "Meow!" << endl; }
    void Play();
    void Pet(int MAXPET, int lovePLUS, int hatePLUS);
    int  Scratch(int *hatePLUS);
    void Purr(int lovePLUS);
    void Eat();
    void Drink();
// Accessor Functions
    int  GetAge()const                             { return AGE; }
    void SetAge(int itsAGE)                        { AGE = itsAGE; }
    void SetLOVEHATE(int lovePLUS, int hatePLUS)   { LOVE = lovePLUS; HATE = hatePLUS; };
    void SetREPUTATION()                           { REPUTATION = LOVE - HATE + 5; }
    int  GetREPUTATION()                           { return REPUTATION; }
    int  GetLOVE()                                 { return LOVE; }
    int  GetHATE()                                 { return HATE; }

private:
// Member variables (private)
    int AGE;
    int LOVE;
    int HATE;
    int REPUTATION;
    int MAXPET;
};

// Constructor definition
Cat::Cat() {
    AGE  = 1;
}

void Cat::Purr(int lovePLUS) {

        cout << "Frisky purrs!" << endl << endl;
}

void Cat::Pet(int MAXPET, int lovePLUS, int hatePLUS) {
    for (MAXPET; MAXPET < 10; ++MAXPET){
        Cat::Purr(++lovePLUS);
        break;
    }
    if (MAXPET > 10) {
        Cat::Scratch(++&hatePLUS;
    }

}

int Cat::Scratch(int *hatePLUS) {
    cout << "Frisky is mad! You've been scratched." << endl;
    return *hatePLUS;
}

#endif // CAT_H_INCLUDED

lovePLUS and MAXPET increment fine, but hatePLUS doesn't. I've tried referencing, pointers, and nothing. I'm a beginner, so I'm lost now.

Basically I need Pet(), when called, to increment MAXPET and lovePLUS so long as MAXPET < 10. At 11, it starts calling Scratch() which "Scratches" the user and increases hatePLUS (which is later added to HATE and used in an algorithm for REPUTATION which determines the end of game if it reaches 0).

If possible I'd also like MAXPET to reset to 0 after a certain timeframe or upon selection of another interaction.

Sorry if this is in any way disorganized, but I appreciate all the help in advance!

Also, feel free to suggest any changes, as I'm sure I've done something that might compile and run, but could surely be done in a more efficient manner.


b1nary