I have a question about pet critter program

  • (4 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »

53 Replies - 2445 Views - Last Post: 15 October 2019 - 07:20 PM Rate Topic: -----

#1 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

I have a question about pet critter program

Posted 16 September 2019 - 08:28 PM

I wanted to recreate that little game kids had back in the 90's with the little pet critter. I originally wanted to use class for the program but I need more practice with structs so I am using them instead. I am having problems with two features I want the program to do. Here are my questions...

1. I have a while loop in main which will have the user select options (feed, play, groom, leave alone) and every time the while loop completes a loop it subtracts from the pets happiness and food, making it hungrier and less amiable (That part was easy). What I can't figure out how to put in the program so that each loop subtracts from the critters total of happiness and how hungry it is and then will tell the owner its current mood. I tried to put those features in the same while loop but it doesn't seem right to me.

I have a feeling I am missing something obvious.

This is what I have so far.

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <windows.h>


struct Critter{
    std::string name;//your pets name
    std::vector<std::string>mood = {"Happy","Sad","Hungry",
    "Bored","I'm very happy","I'm doing well",
    "I need some attention","I'm sleepy"};
    int food = 6;
    int happiness = 10;

};
void GiveName(Critter &c);
void Hunger(Critter& c);
int main()
{
    Critter critter;
    srand(time(NULL));
    Start(critter);
    std::string options[5] = {"Choices:","Feed","Play","Leave pet alone",
    "Groom"};
    while(true)
    {
        std::cout <<"I am feeling "<< critter.mood[rand()%8] << "\n" << std::endl;
        std::string choice;
        std::cout << std::endl;
        for(auto x: options)
        {
            std::cout << x << std::endl;
        }
        std::cout << "\nWhat would you like to do?\n" << std::endl;
        std::cin >> choice;
        if(critter.food <5)
        {
            std::cout << "I'm hungry" << std::endl;
        }
        else if(critter.food <= 2)
            std::cout << "I'm starving" << std::endl;
        else if(critter.happiness < 6)
            std::cout << "I am a bored" << std::endl;
        else if(critter.food == 0)
        {
            std::cout << "You starved to death\nGame over" << std::endl;
            break;
        }
        else if(critter.happiness == 0)
        {
            std::cout << "You died of boredom.\nGame over" << std::endl;
            break;
        }
        else if(choice == "play" || choice == "Play")
        {
            critter.happiness++;
        }
        else if(choice == "feed" || choice == "Feed")
        {
            critter.food++;
        }
        critter.food--;
        critter.happiness--;
    }
}
void GiveName(Critter &c)
{
    std::cout << "What do you want to call your critter?" << std::endl;
    std::getline(std::cin,c.name);
    c.name[0] = toupper(c.name[0]);
    std::cout << "Your ctitter's name is " << c.name << std::endl;
}
void Hunger(Critter& c)
{
    if(critter.hungry == 10)
        std::cout << "Not hungry" << std::endl;
    else if(critter.hungry <=5)
        std::cout << "I'm hungry" << std::endl;
    else if(critter.hungry <=3)
        std::cout << "I'm starving" << std::endl;
    else if (critter.hungry <=0)
        std::cout << "Pet critter died" << std::endl;
}



Is This A Good Question/Topic? 0
  • +

Replies To: I have a question about pet critter program

#2 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 16 September 2019 - 09:33 PM

How is line 77 compiling and not throwing an error?

75	void Hunger(Critter& c)
76	{
77	    if(critter.hungry == 10)


81	    else if(critter.hungry <=3)


This doesn't exist.
24	    Start(critter);


Lines 38 - 63.. why? Why are you mashing a whole mess of disparate things in if-elses?

Food based responses.. you have a function called 'hunger' for those. Why are you not using those?

Why is checking if a creature is bored (line 44) an alternative to the hunger?

Why is happiness chucked in there too?

Why are they not their own functions like 'hunger' method?

Why are the user input choices chucked in that if-else chain?
Was This Post Helpful? 0
  • +
  • -

#3 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

Re: I have a question about pet critter program

Posted 17 September 2019 - 12:33 AM

How is line 77 compiling and not throwing an error?
Line 77 to 84 was the part I wasn't sure how to implement in my program. I had an idea to use a function but I wasn't sure how to put it all together. It doesn't compile, I had that there so I could show I was actually doing the work and I wasn't just asking for an answer.

This doesn't exist.
I changed the name to GetName(). I forgot to change the name of the function before I posted my question here.

Lines 38 - 63.. why? Why are you mashing a whole mess of disparate things in if-elses?
I mashed them all together because I was trying to figure out the logic of the program and I just couldn't figure it out. That was the part of the program I couldn't figure out.

Food based responses.. you have a function called 'hunger' for those. Why are you not using those?
Why is checking if a creature is bored (line 44) an alternative to the hunger?
Why are they not their own functions like 'hunger' method?
I had an idea to use a function within the loop in main. I just couldn't figure out how to do it.

Why are the user input choices chucked in that if-else chain?
I wanted to have choices the input the user uses to make a choice of what theyll do during the game. I had it there because I tried different ways to make my program work and couldn't figure it out. So, I thought when I post it here I could get an idea whether I was close to the answer.

I see I was close and I need to use function for happiness and hunger. I will work on it and try to figure it out.
Was This Post Helpful? 0
  • +
  • -

#4 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 17 September 2019 - 07:13 AM

Quote

It doesn't compile, I had that there so I could show I was actually doing the work and I wasn't just asking for an answer.

That's why the good lord provided comments. Dumping out an intentionally broken program immediately pivots the discussion from what the issue at hand was about to ground level issues like scope, variables, IF groupings, etc. Muddies the water substantially.
Was This Post Helpful? 0
  • +
  • -

#5 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

Re: I have a question about pet critter program

Posted 17 September 2019 - 02:02 PM

That was an oversight.

I have a few questions but for now, I'll just post one question at a time so I can fix the problems one at a time and not lose track or forget something suggested to me in an earlier post.

I made the changes you suggested, I can't believe I made so many stupid mistakes in my program. The while loop in main does subtract both every time it loops, but I can't figure out a way for the program to add food and happiness to the pet critter when the player selects feed, play or groom.

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <windows.h>


struct Critter{
    std::string name;//your pets name
    std::vector<std::string>mood = {"Sad",
    "Bored","I'm doing well",
    "I need some attention","I'm sleepy"};
    int food = 10;
    int happiness = 10;

};
void GiveName(Critter &c);
void Hunger(Critter& c);
void Mood(Critter& c);
int main()
{
    Critter critter;
    srand(time(NULL));
    GiveName(critter);
    std::string options[4] = {".Feed",".Play",".Leave pet alone",
    ".Groom"};
    while(true)
    {
        std::cout << "\nYour pets current mood" << std::endl;
        //std::cout <<"I am feeling "<< critter.mood[rand()%8] << "\n" << std::endl;
        Mood(critter);
        Hunger(critter);
        int choice;
        std::cout << std::endl;
        std::cout << "Choices:\n" << std::endl;
        for(int x = 0; x < 4; x++)
        {
            std::cout << x + 1<< options[x] << std::endl;
        }
        std::cout << "\nWhat would you like to do?\n" << std::endl;
        std::cin >> choice;
        if(choice == 1)
        {
            Hunger(critter);
            //critter.food++;
        }
        else if(choice == 2)
        {
            Mood(critter);
            //critter.happiness++;
        }
        else if(choice == 3)
        {
            //Mood(critter);
            //havent decided what to put here
        }
        else if(choice == 4)
        {
            Mood(critter);
            //critter.happiness++;
        }
        else
            std::cout << "Choose one of the options\n" << std::endl;

        critter.food--;
        critter.happiness--;
    }
}
void GiveName(Critter&c)
{
    std::cout << "What do you want to call your critter?" << std::endl;
    std::getline(std::cin,c.name);
    c.name[0] = toupper(c.name[0]);
    std::cout << "Your ctitter's name is " << c.name << std::endl;
}
void Mood(Critter&c)
{
    if(c.happiness >=5)
    {
        std::cout << "I'm very happy" << std::endl;
        //std::cout <<"I am feeling "<< c.mood[rand()%8] << "\n" << std::endl;
    }
    else if(c.happiness <=4)
        std::cout << "I'm not happy" << std::endl;
    else if(c.happiness <= 0)
        std::cout << "I'm in a terrible mood" << std::endl;
    //c.happiness++;
}
void Hunger(Critter&c)
{
    if(c.food >=5)
        std::cout << "Not hungry" << std::endl;
    else if(c.food <=4)
        std::cout << "I'm hungry" << std::endl;
    else if (c.food <= 0)
    {
        std::cout << "Pet critter died" << std::endl;
        std::cout << "Game over" << std::endl;
        //exit(0);
    }

}


This post has been edited by albert003: 17 September 2019 - 02:02 PM

Was This Post Helpful? 0
  • +
  • -

#6 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 17 September 2019 - 02:04 PM

In your struct have a method 'add food' or 'add what ever'.. that, when called, increments that property.

Reasonably speaking the 'add what ever' should be more than the constant decrease value.
Was This Post Helpful? 0
  • +
  • -

#7 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

Re: I have a question about pet critter program

Posted 20 September 2019 - 11:38 AM

I realise that structs are the same thing as class, only difference is that everything is public. I followed your advice and I added functions to the struct in the program. I ran it and it still won't add food or happiness to my pet. Could you give me a hint?

This is the program so far...


#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <windows.h>


struct Critter
{
    std::string name;//your pets name
    std::vector<std::string>mood = {"Sad",
    "Bored","I'm doing well",
    "I need some attention","I'm sleepy"};
    int food = 10;
    int happiness = 10;
    int addfood;
    int addhappiness;
    int getfood()
    {
        addfood++;
        return addfood;
    }
    int gethappy()
    {
        addhappiness++;
        return addhappiness;
    }

};

void GiveName(Critter &c);
void Hunger(Critter& c);
void Mood(Critter& c);
int main()
{
    Critter critter;
    srand(time(NULL));
    GiveName(critter);
    std::string options[4] = {".Feed",".Play",".Leave pet alone",
    ".Groom"};
    while(true)
    {
        std::cout << "\nYour pets current mood" << std::endl;
        //std::cout <<"I am feeling "<< critter.mood[rand()%8] << "\n" << std::endl;
        Mood(critter);
        Hunger(critter);
        int choice;
        std::cout << std::endl;
        std::cout << "Choices:\n" << std::endl;
        for(int x = 0; x < 4; x++)
        {
            std::cout << x + 1<< options[x] << std::endl;
        }
        std::cout << "\nWhat would you like to do?\n" << std::endl;
        std::cin >> choice;
        if(choice == 1)
        {

            Hunger(critter);
            critter.getfood();
        }
        else if(choice == 2)
        {
            //critter.addhappiness();
            Mood(critter);
            critter.gethappy();
        }
        else if(choice == 3)
        {
            Mood(critter);
            //havent decided what to put here
        }
        else if(choice == 4)
        {
            Mood(critter);
            critter.gethappy();
        }
        else
            std::cout << "Choose one of the options\n" << std::endl;

        critter.food--;
        critter.happiness--;
    }
}
void GiveName(Critter&c)
{
    std::cout << "What do you want to call your critter?" << std::endl;
    std::getline(std::cin,c.name);
    c.name[0] = toupper(c.name[0]);
    std::cout << "Your ctitter's name is " << c.name << std::endl;
}
void Mood(Critter&c)
{
    if(c.happiness >=5)
    {
        std::cout << "I'm very happy" << std::endl;
        //std::cout <<"I am feeling "<< c.mood[rand()%8] << "\n" << std::endl;
    }
    else if(c.happiness <=4)
        std::cout << "I'm not happy" << std::endl;
    else if(c.happiness <= 0)
        std::cout << "I'm in a terrible mood" << std::endl;
    //c.happiness++;
}
void Hunger(Critter&c)
{
    if(c.food >=5)
        std::cout << "Not hungry" << std::endl;
    else if(c.food <=4)
        std::cout << "I'm hungry" << std::endl;
    else if (c.food <= 0)
    {
        std::cout << "Pet critter died" << std::endl;
        std::cout << "Game over" << std::endl;
        //exit(0);
    }
}


Was This Post Helpful? 0
  • +
  • -

#8 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 20 September 2019 - 12:33 PM

Why does your function 'get happiness' add happiness? In fact why is there a new variable call 'add happiness'?! It doesn't make sense. 'get happiness' should return , like a property, the happiness value.

If you want a function to 'add happiness' then make one that solely does adding some value to the happiness thing.

Separation of duties and responsibilities. Getting of something doesn't make sense to have it add to it first then get the value.

Same goes for your 'food' stuff too.

You need to stop and think before you go about implmenting stuff. Say it outloud if it makes sense.

That also being why do you have functions about 'hunger' and what not OUTSIDE of the struct/class? If you were to take the class and use it elsewhere those methods would not be there. It breaks basic object oriented design.
Was This Post Helpful? 0
  • +
  • -

#9 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 20 September 2019 - 12:49 PM

Example.. See how all the things needed for the 'foo' class are with it. I can plunk that class down and get all the same information where I use it.\

I highly recommend rereading on OOP.


#include<iostream> 
#include<string>
#include <stdio.h>
using namespace std;


class Foo
{
private:
	string Name;
	int Bar;

public:
	// constructors
	Foo()
	{
		Name = "test";
		Bar = 0;
	};

	Foo(string name, int bar)
	{
		Name = name;
		Bar = bar;
	};

	// properties
	string GetName()
	{
		return Name;
	}

	int GetBar()
	{
		return Bar;
	}

	string GetBarText()
	{
		string temp = "";

		if (Bar == 0)
			temp = "zero";
		else
			temp = "not zero";

		return temp;
	}

	// functions/methods

	string Print()
	{
		return ("Name: " + Name + ", Bar: " + to_string(Bar) + "\n");
	}

	void AddBar()
	{
		Bar += 1;
	}
};



int main()
{
	Foo a;
	cout << a.Print();
	cout << a.GetBarText() << endl;



	Foo b = Foo("poo", 43);
	cout << b.Print();

	b.AddBar();
	cout << b.GetBar() << endl;
	b.AddBar();
	b.AddBar();
	b.AddBar();
	cout << b.Print();

	cout << b.GetBarText() << endl;


	return 0;
}

Was This Post Helpful? 0
  • +
  • -

#10 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

Re: I have a question about pet critter program

Posted 23 September 2019 - 11:39 AM

You're right it was a lot easier using class than using structs. I made a lot of progress, but I couldn't figure out how to use the increment or decrement in the while loop. I went through my C++ book as well as used my googlefu, youtube and couldn't figure it out. I know when I used a struct I figured it out by using
        critter.food--;
        critter.happiness--;


I just can't figure out how to do that same thing using a class. Adding food, happiness to the pet as well as reducing their happiness and making them hungry.

This is what I have so far. Could you give me a hint or direct me in the right direction?

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <windows.h>

class Critters{
private://variable types neeeded for pet
    std::string Name;
    int Food;
    int Happiness;
    int Lessfood;
    int Lesshappy;
public:
    Critters()//constructor with the type variable values
    {
        Name = "";
        Happiness = 10;
        Food = 10;
        Lessfood = 0;
        Lesshappy = 0;
    }
    Critters(std::string name, int happiness, int food, int lessfood, int lesshappy)
    {
        Name = name;
        Happiness = happiness;
        Food = food;
        Lesshappy = lesshappy;
        Lessfood = lessfood;
    }
    std::string GetName()
    {
        return Name;
    }
    std::string GetHappy()//pets current mood
    {
        std::string happymetre;
        if(Happiness <=0)
            happymetre = "Terrible mood";
        else if(Happiness <=5)
            happymetre = "Not happy";
        else
            happymetre = "I'm in a good mood";

        return happymetre;
    }
    std::string GetFood()//how hungry is your pet
    {
        std::string foodmetre;
        if(Food <=0)
            foodmetre = "Your pet critter dies";
        else if(Food <=5)
            foodmetre = "I'm hungry";
        else
            foodmetre = "I'm not hungry";

        return foodmetre;
    }
    void AddHappy(int happy)
    {
        happy++;
    }
    void AddFood(int food)
    {
        food++;
    }
    void ReduceHappy(int lesshappy)
    {
        lesshappy--;
    }
    void ReduceFood(int lessfood)
    {
        lessfood--;
    }
    std::string SetName()
    {
        std::cout << "What do you want to call your critter?" << std::endl;
        std::getline(std::cin,Name);
        Name[0] = toupper(Name[0]);
        std::cout << "Your ctitter's name is " << Name << std::endl;
    }
};
int main()
{
    Critters critters;
    critters.SetName();
    std::string options[4] = {".Feed",".Play",".Leave pet alone",".Groom"};
    while(true)
    {
        for(int x = 0; x < 4; x++)
        {
            std::cout << x + 1<< options[x] << std::endl;
        }
        std::cout << "What would you like to do?\n" << std::endl;
        int choice;
        std::cin >> choice;
        std::cout << std::endl;
        std::string gfood = critters.GetFood();
        std::cout << gfood << std::endl;
        std::string ghappy = critters.GetHappy();
        std::cout << ghappy << std::endl;
        if(choice == 1 || choice == 4)
        {
            critters.AddFood();
        }
        else if(choice == 2)
        {
            critters.AddHappy();
        }
        else if(choice == 3)
        {

        }
        else
            std::cout << "Choose one of the options.\n" << std::endl;

        ReduceHappy();
        ReduceFood();
    }
}


Was This Post Helpful? 0
  • +
  • -

#11 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 23 September 2019 - 11:44 AM

Stop and really think what you are doing.

You have methods like this. Where it takes in a variable as a parameter, and increments it.
... it increments the variable coming in.

WHY?

060    void AddHappy(int happy)
061    {
062        happy++;
063    }



You have perfectly good variables to increment IN THE SCOPE OF THE CLASS. Why not increment one of those?

008class Critters{
009private://variable types neeeded for pet
010    std::string Name;
011    int Food;
012    int Happiness;
013    int Lessfood;
014    int Lesshappy;

Was This Post Helpful? 0
  • +
  • -

#12 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

Re: I have a question about pet critter program

Posted 28 September 2019 - 12:55 PM

I worked out the logic and simplified it to just using int main. I am in the process of putting it all together using oop and I think I figured it out. But before I do something stupid, I have a question for you. Is it possible to have non member functions together with member functions? I looked through my book and online and couldn't find the answer.
Was This Post Helpful? 0
  • +
  • -

#13 modi123_1   User is online

  • Suitor #2
  • member icon



Reputation: 15360
  • View blog
  • Posts: 61,602
  • Joined: 12-June 08

Re: I have a question about pet critter program

Posted 28 September 2019 - 01:22 PM

Together on what way?
Was This Post Helpful? 0
  • +
  • -

#14 albert003   User is offline

  • D.I.C Addict

Reputation: 37
  • View blog
  • Posts: 791
  • Joined: 15-December 14

Re: I have a question about pet critter program

Posted 29 September 2019 - 01:00 AM

This is what I had in mind. The non member function Game would have the loop and do exactly what the string print function did in your example back in post 9. But, it would be a non member function. As far as I can tell and please correct me if I'm wrong, but non member functions seem to be return functions and non member functions seem to be non return functions.


I'm still working on the logic as well as the error messages I am getting. I didn't want to make progress in the program in case I was putting it together incorrectly.

I also figured out a way more or less to feed and make the pet critter happy. Its not perfect and I still need to work on that logic.

This is what I have so far.

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <windows.h>

class Critters{
private:
    std::string Name;
    int Food = 1;
    int Happiness = 1;
    int Lessfood;
    int Lesshappiness;
public:
    //constructors
    void Game(int food, int happiness);
    Critters()
    {
        Name = "";
        Happiness++;
        Food++;
    }
    Critters(std::string name,int happiness,int food)
    {
        Name = name;
        Happiness = happiness;
        Food = food;
    }
    //properties
    std::string GetName(int food,int happiness)
    {
        return Name;
    }
    std::string PrintName()
    {
        std::cout << "What do you want to call your critter?" << std::endl;
        std::getline(std::cin,Name);
        Name[0] = toupper(Name[0]);
        std::cout << "Your ctitter's name is " << Name<< std::endl;

        return Name;
    }
    std::string GetHappyText(int happiness)//pets current mood
    {
        std::string happymetre;

        if(Happiness <=0)
            happymetre = "Terrible mood";
        else if(Happiness <=5)
            happymetre = "Not happy";
        else
            happymetre = "I'm in a good mood";

        return happymetre;
    }
    std::string GetFoodText(int food)//how hungry is your pet
    {
        std::string foodmetre;
        if(Food <=0)
            foodmetre = "Your pet critter dies";
        else if(Food <=5)
            foodmetre = "I'm hungry";
        else
            foodmetre = "I'm not hungry";

        return foodmetre;
    }
};
void Critters::Game(int food, int happiness)
{
    std::string options[4] = {".Feed",".Play",".Leave pet alone",".Groom"};
    while(happiness || food <=10)
    {
        for(int x = 0; x < 4; x++)
        {
            std::cout << x + 1<< options[x] << std::endl;
        }
        std::cout << "What would you like to do?\n" << std::endl;
        int choice;
        std::cin >> choice;
        std::cout << std::endl;
        happiness;
        food;
        std::cout << Name << "'s mood" << std::endl;
        std::cout << happiness << std::endl;
        std::cout << happiness << std::endl;
        if(choice == 1 || choice == 4)
        {
            food = food - 2;
        }
        else if(choice == 2 || choice == 4)
        {
            happiness = happiness - 2;
        }
        else if(choice == 3)
        {

        }
        else
            std::cout << "\nChoose one of the options.\n" << std::endl;
        happiness++;
        food++;
    }
}
int main()
{
    Critters critters;
    std::cout << critters.PrintName();
    critters.Game();
}



Was This Post Helpful? 0
  • +
  • -

#15 jimblumberg   User is online

  • member icon

Reputation: 5771
  • View blog
  • Posts: 17,672
  • Joined: 25-December 09

Re: I have a question about pet critter program

Posted 29 September 2019 - 06:29 AM

Quote

The non member function Game would have the loop and do exactly what the string print function did in your example back in post 9. But, it would be a non member function.

What? There is no non-member function named Game(), Game() is a member function. Do you really understand what it means to be a member function of a class?

What do you think lines 83 and 84 are actually doing?

Why are you passing parameters into Game() that have the same names as class member variables? You should be getting a warning about this, if your compiler is properly set to display error/warning messages.


Jim
Was This Post Helpful? 1
  • +
  • -

  • (4 Pages)
  • +
  • 1
  • 2
  • 3
  • Last »