|
Ok looks like I have a problem.
error
No overload for method'ShowAbilities' takes 0 arguments
I'm getting that in the function I am trying to call the ShowAbilities
public void Character()
{
string N;
N = base.Name();
Console.Write("\n");
Console.Write("Your Name is: {0} \n", N);
abilities.ShowAbilities();
}
Does that mean it wants me to put all the int's into it like I did for the actual function?
Which is
public void ShowAbilities(int Str, int Dex, int Con, int Int, int Wis, int Cha)
{
Console.WriteLine("Strength: {0}\n", Str);
Console.WriteLine("Dexterity: {0}\n", Dex);
Console.WriteLine("Constitution: {0}\n", Con);
Console.WriteLine("Intelligence: {0}\n", Int);
Console.WriteLine("Wisdom: {0}\n", Wis);
Console.WriteLine("Charisma: {0}\n", Cha);
}
|
|
|
|
|
Yes you have to pass all of the variables.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Ok I must be passing them wrong or something.
the error Im getting is showing them as int, int, int, int instead of Str, Dex, etc etc.
I tried them as int Str and ref Str neither worked. Either I am missing something or did something wrong here lol.
|
|
|
|
|
Just pass them as Str , no int, no ref. That's the default. There are situations when you need to pass them as ref Str or out Str , but not here.
Ciao,
luker
|
|
|
|
|
You would call your function by
abilities.ShowAbilities(Str, Int, Wis, Dex, etc....);
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
I tried that but it says "it doesn't exist in the current context"
public class Fighter : attributes
{
Abilities abilities = new Abilities();
public void Character()
{
string N;
N = base.Name();
Console.Write("\n");
Console.Write("Your Name is: {0} \n", N);
abilities.ShowAbilities(Str, Dex, Con, Int, Wis, Cha);
}
So am I missing something?
public void ShowAbilities(int Str, int Dex, int Con, int Int, int Wis, int Cha)
{
Console.WriteLine("Strength: {0}\n", Str);
Console.WriteLine("Dexterity: {0}\n", Dex);
Console.WriteLine("Constitution: {0}\n", Con);
Console.WriteLine("Intelligence: {0}\n", Int);
Console.WriteLine("Wisdom: {0}\n", Wis);
Console.WriteLine("Charisma: {0}\n", Cha);
}
This block below is repeated 5 more times once for each ability.
public void RollStr()
{
Abilities BaseClass = new Abilities();
int Str;
Str = dice.Roll5D6();
Console.Write("Str: {0} \n", Str);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollStr();
}
}
They are in 2 different classes if that makes a difference.
|
|
|
|
|
So, if they don't exist int that context, do they exist at all?
Means: Do you have a int Dex = 42; anywhere in your code?
And if so, where in your code does that appear?
Edit
There is a int Str; in method RollStr() .
Do you also have a mehtod RollDex() that includes int Dex; ?
Ciao,
luker
|
|
|
|
|
yes I have one for each int
|
|
|
|
|
In that case, they shouldn't be declared as local variables within their respective methods but as private variables of the containing class Fighter .
Then just don't declare them again in each method, use the class variable instead and every method of the class can access the variables (even without passing them explicitly).
Ciao,
luker
|
|
|
|
|
drgsldr69 wrote: abilities.ShowAbilities(Str, Dex, Con, Int, Wis, Cha);
This is not going to do anything since you have not defined what Str, Dex, Con and the rest are.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
But I have, they are the dice.Roll5D6 which works perfectly and gives me the scores I am looking for. I just don't want to call the dice.Roll5D6 again because that will just reroll them.
|
|
|
|
|
drgsldr69 wrote: But I have
public void Character()
{
string N;
N = base.Name();
Console.Write("\n");
Console.Write("Your Name is: {0} \n", N);
abilities.ShowAbilities(Str, Dex, Con, Int, Wis, Cha);
}
You have? Where are they defined in this method? You have a scoping issue.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
They are set in RollStr,
public void RollStr()
{
Abilities BaseClass = new Abilities();
int Str;
Str = dice.Roll5D6();
Console.Write("Str: {0} \n", Str);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollStr();
}
}
used in RollAbilities()
public void ShowAbilities(int Str, int Dex, int Con, int Int, int Wis, int Cha)
{
Console.WriteLine("Strength: {0}\n", Str);
Console.WriteLine("Dexterity: {0}\n", Dex);
Console.WriteLine("Constitution: {0}\n", Con);
Console.WriteLine("Intelligence: {0}\n", Int);
Console.WriteLine("Wisdom: {0}\n", Wis);
Console.WriteLine("Charisma: {0}\n", Cha);
}
which i was informed I could pass them from there to ShowAbilities which I use in
Abilities abilities = new Abilities();
public void Character()
{
string N;
N = base.Name();
Console.Write("\n");
Console.Write("Your Name is: {0} \n", N);
abilities.ShowAbilities(Str, Dex, Con, Int, Wis, Cha);
}
All I want ShowAbilities to do is output the scores saved from RollAbilities. That way I can call it in Character()
|
|
|
|
|
drgsldr69 wrote: int Str;
First of all, you are only defining a local variable Str of type int. That has nothing at all to do with your ShowAbilites method. You have not defined Int, Dex, or any of the other variables that you want to display. Your problem is that you do not understand variable scope.
If you are looking for a way to display them, in the limited view of your architecture that we have, you would need to pass Str, Int and the rest to your Character method so that they could in turn be passed to your ShowAbilites method. Or declare Str, Int and the rest as class level variables.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Ok I think you have it backwords. I have it going from rollstr to rollabilities to showabilities then to character. Character is the final stage of it which should do nothing but call the function ShowAbilities()Which is supposed to have the variables and values stored in it.Which obviously I am having a problem figuring out how to do.I have it all working great up till showabilities being called in character. Once I try to do that it doesn't want to display anything.
|
|
|
|
|
drgsldr69 wrote: want to display anything
Because you are not giving it anyting to display. You are declaring your variables, apparently, as local variables which your other methods do not know anything about. Your ShowAbilites method cannot display data that it does not have access to. It's called "variable scope".
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Ok then can you please explain what I would have to do to make that work? Or at least give me an example code that I could use to figure it out? Cause as it sits right now I am lost. Below is the entire ability class
class Abilities
{
Dice dice = new Dice();
public void ShowAbilities(int Str, int Dex, int Con, int Int, int Wis, int Cha)
{
Console.WriteLine("Strength: {0}\n", Str);
Console.WriteLine("Dexterity: {0}\n", Dex);
Console.WriteLine("Constitution: {0}\n", Con);
Console.WriteLine("Intelligence: {0}\n", Int);
Console.WriteLine("Wisdom: {0}\n", Wis);
Console.WriteLine("Charisma: {0}\n", Cha);
}
public void RollAbilities()
{
Abilities BaseClass = new Abilities();
BaseClass.RollStr();
BaseClass.RollDex();
BaseClass.RollCon();
BaseClass.RollInt();
BaseClass.RollWis();
BaseClass.RollCha();
}
public void RollStr()
{
Abilities BaseClass = new Abilities();
int Str;
Str = dice.Roll5D6();
Console.Write("Str: {0} \n", Str);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollStr();
}
}
public void RollDex()
{
Abilities BaseClass = new Abilities();
int Dex;
Dex = dice.Roll5D6();
Console.Write("Dex: {0} \n", Dex);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollDex();
}
}
public void RollCon()
{
Abilities BaseClass = new Abilities();
int Con;
Con = dice.Roll5D6();
Console.Write("Con: {0} \n", Con);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollCon();
}
}
public void RollInt()
{
Abilities BaseClass = new Abilities();
int Int;
Int = dice.Roll5D6();
Console.Write("Int: {0} \n", Int);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollInt();
}
}
public void RollWis()
{
Abilities BaseClass = new Abilities();
int Wis;
Wis = dice.Roll5D6();
Console.Write("Wis: {0} \n", Wis);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollWis();
}
}
public void RollCha()
{
Abilities BaseClass = new Abilities();
int Cha;
Cha = dice.Roll5D6();
Console.Write("Cha: {0} \n", Cha);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollCha();
}
}
I was trying to pass Showabilities over to the class that holds the actual character generator which is below.
public class Fighter : attributes
{
Abilities abilities = new Abilities();
public void Character()
{
string N;
N = base.Name();
Console.Write("\n");
Console.Write("Your Name is: {0} \n", N);
abilities.ShowAbilities(Str, Dex, Con, Int, Wis, Cha);
}
|
|
|
|
|
drgsldr69 wrote: I would have to do to make that work
Sorry, I do not know what else I could do. I have explained what you need to do over and over. You either need to declare your variable at the class level so your other methods have access to them (fields or properties) or you need to pass the variables around to the methods that need them.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
And that is the problem I am having. I don't know how to do either of what you said since nothing I have tried so far has worked. Could you give me an example so I have something to look at to help me?
|
|
|
|
|
drgsldr69 wrote: an example
First, your textbook should show you all of this. Second I cannot fix your code because it does not make any sense. I do not know what "dice" is or "BaseClass". But
public void Character(int Str)
{
string N;
Console.Write("\n");
Console.Write("Your Name is: {0} \n", N);
ShowAbilities(Str);
}
public void ShowAbilities(int Str)
{
Console.WriteLine("Strength: {0}\n", Str);
}
public void RollStr()
{
int Str;
Str = dice.Roll5D6();
Console.Write("Str: {0} \n", Str);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollStr();
}
Character(Str);
}
should be enough to show you how to pass a variable from you RollStr method to your Character method and then to your ShowAbilites method. How you think you will do this in your real application is beyond me as you have not defined what your classes are or how they relate to each other.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Wes Aday wrote: ShowAbilities(Str);
On this part here in bold it doesn't want to accept that because it doesn't see ShowAbilities in that function. Which is why i have the Abilities abilities = new Abilities(); in and abilities.ShowAbilities(Str, etc) which it doesn't want to read right. I did edit my second or third post above this one with the ENTIRE ability class. The only class I didn't paste in this thread now is my dice class which is just to give random numbers between 1 and 6 to the ability score. but I also have other dice in there which ain't being used as of yet.
|
|
|
|
|
See if this makes any more sense. I did not compile this as I cannot. But should get you closer. Pay attention to the comments.
class Abilities
{
private int Str;
private int Intelligence;
private int Dexterity;
Dice dice = new Dice();
public void ShowAbilities()
{
Console.WriteLine("Strength: {0}\n", Str);
Console.WriteLine(string.Format("Dexterity: {0}\n", Dexterity));
Console.WriteLine("Intelligence: {0}\n", Intelligence);
}
public void RollAbilities()
{
Abilities BaseClass = new Abilities();
BaseClass.RollStr();
BaseClass.RollDex();
BaseClass.RollCon();
BaseClass.RollInt();
BaseClass.RollWis();
BaseClass.RollCha();
}
public void RollStr()
{
Abilities BaseClass = new Abilities();
Str = dice.Roll5D6();
Console.Write("Str: {0} \n", Str);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollStr();
}
}
public void RollDex()
{
Abilities BaseClass = new Abilities();
Dexterity = dice.Roll5D6();
Console.Write("Dex: {0} \n", Dex);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollDex();
}
}
public void RollCon()
{
Abilities BaseClass = new Abilities();
int Con;
Con = dice.Roll5D6();
Console.Write("Con: {0} \n", Con);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollCon();
}
}
public void RollInt()
{
Abilities BaseClass = new Abilities();
Intelligence = dice.Roll5D6();
Console.Write("Int: {0} \n", Int);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollInt();
}
}
public void RollWis()
{
Abilities BaseClass = new Abilities();
int Wis;
Wis = dice.Roll5D6();
Console.Write("Wis: {0} \n", Wis);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollWis();
}
}
public void RollCha()
{
Abilities BaseClass = new Abilities();
int Cha;
Cha = dice.Roll5D6();
Console.Write("Cha: {0} \n", Cha);
char MyChoice;
string MyInput;
char ReRoll = Convert.ToChar("y");
Console.Write("Would you like to reroll this score?");
MyInput = Console.ReadLine();
MyChoice = Convert.ToChar(MyInput);
if (MyInput == Convert.ToString(ReRoll))
{
BaseClass.RollCha();
}
}
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Thanks that basically worked I just need to call the function to roll the ability scores first I guess since right now it is showing them as all 0 lol but at least it is printing them.
|
|
|
|
|
Ok I take that back even running RollAbility() first didn't populate the ability scores. Or should I say didn't save them and pass them.It rolls the dice perfectly re-rolls, them great,but still shows each score at 0 when you run the ShowAbilities()
|
|
|
|
|
Your additional problem is probably:
public void RollAbilities()
{
Abilities BaseClass = new Abilities();
BaseClass.RollStr();
BaseClass.RollDex();
BaseClass.RollCon();
BaseClass.RollInt();
BaseClass.RollWis();
BaseClass.RollCha();
}
You are creating a new instance of Abilities, rolling your dice and then your instance goes out of scope so you get nothing. Change that to
public void RollAbilities()
{
RollStr();
RollDex();
RollCon();
RollInt();
RollWis();
RollCha();
}
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|