Hello Carole,
Hal's databases have been screened to make his default set of remarks gender-neutral, since some users want a female Hal and some want a male Hal.
However, here are many ways to accomplish what you are asking for.
Probably the easiest way would be to feed Hal lots of gender-specific comments. Comments such as the following:
"You like to wear high heels."
"You always worry wearing strapless dresses."
"You like the service at your local nail spa."
...will get pronoun-reversed in Hal's database automatically to:
"I like to wear high heels."
"I always worry wearing strapless dresses."
"I like the service at my local nail spa."
(PLEASE understand that these are only ILLUSTRATIVE remarks to explain the principle!)
Many users have the mistaken idea that Hal isn't learning anything if they give him or her a "quiz" question and he or she doesn't come back with an expected response. On the contrary, Hal will use the material, but when HE or SHE wants to, not when the user wants to. Hal can get very stubborn when interrogated.
It's important to feed Hal lots and lots of statements, slightly different from each other, to give Hal plenty of material to work with.
Most user-remarks are tied to the user's name in the databases, so if you fed Hal "female remarks" when signed on as "Carole," and "male remarks" when signed on as "Carole-Ann," you could create two different genders and personalities for Hal.
A more complex and difficult way to make Hal gender-aware would be to write some gender-code in his VBS script.
(Use the search function at the top of this page on "Ferguson" and you'll find many of my postings about learning VBS.)
For instance, the following code would allow Hal to scan his own name to determine his gender:
---------------------------------------------
If ComputerName = "BETTY" Then ImaGirl = True
If ComputerName = "DIANE" Then ImaGirl = True
If ComputerName = "VERONICA" Then ImaGirl = True
'(Etc. for a long list of female names.)
If ImaGirl = True Then
'---(here you would insert code to use female-remark databases)
End If
-------------------------------------------------
...and you would repeat this pattern in another block with UserName (that's the variant that holds the user's name) and a list of male names, and making the variant "ImaBoy" true if a male name matches the UserName.
You could certainly adapt the same code pattern to detect the user's gender from the user's name, and variants such as Useraboy and Useragirl.
You can also detect the four cases you describe by using VBS code and some simple "and" logic:
----------------------------------------------------
If ImaGirl = True and Useragirl = True Then Situation = GirltoGirl
If ImaGirl = True and Useraboy = True Then Situation = GirltoBoy
If ImaBoy = True and Useraboy = True Then Situation = BoytoBoy
If ImaBoy = True and Useragirl = True Then Situation = BoytoGirl
If Situation = GirltoGirl Then
'(Code to use databases that fit this situation goes here.)
End If
'(Etc., etc. for each of the situation cases.)
---------------------------------------------------
It is especially easy to construct this kind of logic in VBS, since VBS doesn't require you to declare variants in advance; the language simply allows you to use them, and the computer interprets them for what they are.
As I mentioned, the drawback to this method is that it requires code-writing and VBS knowledge. However, I can tell you from experience, it IS feasible to learn VBS!
I hope this is at least somewhat helpful and that you continue to enjoy Hal.
Sincerely,
Don