Link to home
Start Free TrialLog in
Avatar of tomtom9898
tomtom9898

asked on

Powershell scripting help

I am trying to make a fortune game decide answers at random, but be mad if someone asks something about the lottery.  I am very close, but just can't seem to finish this up.  What am I missing?

#Clear the Windows command console screen
Clear-Host

#Define the variables used in this script to collect player inputs
$question = ""   #This variables will store the player's question
$status = "Play"  #This variable will be used to control game termination
$randomNo = New-Object System.Random  #This variable stores a random object
$answer = 0  #This variable stores a randomly genrated number
$time = (Get-Date).Hour  #This variable stores the current hour of the day


#Display the game's opening screen
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host "               W E L C O M E   T O   T H E   W I N D O W S"
Write-Host
Write-Host
Write-Host
Write-Host "            P O W E R S H E L L   F O R T U N E   T E L L E R"
Write-Host
Write-Host
Write-Host   
Write-Host "                         
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host " Press Enter to continue."

#Pause script execution and wait for the player to press the Enter key
Read-Host


#Clear the Windows command console screen
Clear-Host  

#Provide the player with instructions
Write-Host
Write-Host " The fortune teller is a very busy and impatient mystic. Make"
Write-Host 
Write-Host " your questions brief and simple and only expect to receive"
Write-Host
Write-host " Yes / No styled answers. Also do not ask me if you will win"   
Write-Host 
Write-Host " the lottery or not.  I am tired of that one"
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host " Press Enter to continue."

#Pause script execution and wait for the player to press the Enter key
Read-Host

#Continue game play until the player decides to stop
while ($status -ne "Stop") {

  #Ask the player the first question
  while ($question -eq ""){

    Clear-Host  #Clear the Windows command console screen

    Write-Host

    $question = read-host " What is your question? I hate questions about the lottery! "
 
  }
  $question = ""  #Reset variable to a empty string


  #Using the Random object, get a random number between 1 and 4
  If ($answer = "lottery") { "What the heck are you doing?!?!?! I told you I hate lottery questions! Please restate the question."}
  else { 
  $answer = $randomNo.Next(1, 5)}
  
  #Select an answer based on the time and random number
  #If it is the afternoon the fortune teller will be a little cranky
  if ($time -gt 12) {
    Write-Host
    if ($answer -eq 1) { " Grrrr. The answer is no!" }
    if ($answer -eq 2) { " Grrrr. The answer is never" }
    if ($answer -eq 3) { " Grrrr. The answer is unclear!" }
    if ($answer -eq 4) { " Grrrr. The answer is yes!" }
  }
  #If it is morning the fortune teller will be in a good mood
  else {
    Write-Host
    if ($answer -eq 1) { " Ah. The answer is yes!" }
    if ($answer -eq 2) { " Ah. The answer is Always" }
    if ($answer -eq 3) { " Ah. The answer is uncertain!" }
    if ($answer -eq 4) { " Ah. The answer is no!" }
  }}


  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host
  Write-Host " Press Enter to continue."

  #Pause script execution and wait for the player to press the Enter key
  Read-Host

  #Clear the Windows command console screen
  Clear-host

  Write-Host

  #Prompt the player to continue or quit
  $reply = read-host " Press Enter to ask another question or type Q to quit."
  if ($reply -eq "q") { $status = "Stop" }



#Clear the Windows command console screen
Clear-Host

#Provide the player with instructions
Write-Host 
Write-Host " Very well then. Please return again to get all your questions"
Write-Host " answered." 
Write-Host
Write-Host 
Write-Host
Write-Host
Write-Host
Write-Host 
Write-Host
Write-Host
Write-Host  
Write-Host 
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host 
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host
Write-Host " Press Enter to continue."

#Pause script execution and wait for the player to press the Enter key
Read-Host

#Clear the Windows command console screen
Clear-Host  

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Dale Harris
Dale Harris
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Qlemo
Gosh. The answer is never!
May I suggest some improvements? For example, I  would do the mood stuff more like this:
    #If it is morning the fortune teller will be in a good mood
    #If it is the afternoon the fortune teller will be a little cranky
    $mood =  if ($time -gt 12) { ' Grrrr.' } else { ' Ah.' }
    $text = @('no!', 'never', 'unclear!', 'yes!')[$answer-1]
    Write-Host "$mood The answer is $text"

Open in new window

And instead of writing several lines with Write-Host, I would do
Write-Host @"

This is a line

Another line
"@

Open in new window

Avatar of tomtom9898
tomtom9898

ASKER

Fantastic, knew I was missing something!  Thanks again for the help!