Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Java Objects!
You have completed Java Objects!
Preview
We will prompt for a guess from the user and use our game logic to store the value. We will complete the story: As a guesser, I should be able to submit a guess, so that I can play the game.
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
All right, so now we have the ability to
apply a guess and keep track of hits and
0:00
misses, the time has come to actually
take some input from the user.
0:05
Now this is probably going to look
a little strange in our current state,
0:09
until we get some of the more detailed
stories like the ones that shows
0:12
the current progress for example.
0:16
This is gonna be fairly useless except for
a cool trick at the command line.
0:17
What I mean is this we haven't even
shown users of our hang man app
0:22
what they are attempting to guess but
here we are asking them for their guests.
0:25
Now this half baked app is definitely
part of the development process.
0:29
Once we get some things working.
0:33
We can iterate on the concepts until
we get to our working product.
0:34
But development isn't always Is linear and
we have to start somewhere right
0:37
now as long as we complete all
the stories on our test board.
0:42
We know we'll get there and we do that,
because we've looked at them.
0:45
Okay, so let's get our prompter
able to accept guesses.
0:48
Okay, so we currently don't have anything
at all in our prompter class, and
0:53
I wanna get back to a statement
that I made earlier.
0:57
About how someone else
will be using your code.
1:01
So the problem here that we're
gonna be writing is going to
1:05
use the game code that we just wrote.
1:08
Now, it's possible but we're on a team and
we've made a team responsible for
1:10
prompting.
1:14
The front in portion of our app.
1:15
The prompter is going to need
to know about our game object.
1:17
So let's do that.
1:20
Lets store a private variable
that is an instance of our game.
1:22
So we'll say game game, and
again we wanted to make that private.
1:27
We always want to start private, What
1:31
good is one of these prompters
without a reference to our game.
1:36
So let's require one for instantiation
by defining it in our constructor.
1:40
So again, let's make a constructor.
1:46
So I'll say, public and
it's the same name as the class prompter.
1:48
And we're going to require a game.
1:54
So the game is the type game and
we'll call it game.
1:56
And of course we have our little
naming collision problem again.
2:00
So we wanna talk about
the private variable game.
2:03
And set that equal to
the argument that came in.
2:07
Wanted to show you another little
trick really quick here in jshel.
2:11
So, if we have a string, so
we have string example equals hello.
2:16
If I wanted to get a specific
character out of that,
2:22
there is a Method on
strings called charAt.
2:25
So, I can say charAt.
2:29
So, let's say that I wanted
to get the first character.
2:30
So that's one, right?
2:33
No, zero is the first, I [LAUGH] forgot.
2:36
Baby years right?
2:38
So zero will get me a.
2:39
So the very first character that, awesome.
2:41
Okay, now, in our prompter object,
2:45
let's add a method that will prompt for
2:50
a guess, and it will return whether or
not the guess was correct.
2:53
That sounds pretty boolean to me, right?
2:57
So, we want this to be public.
3:00
We wanna allow this to be called, so we'll
say boolean, and that's gonna, again,
3:01
be whether or not the guess was
correct Say promptForGuess.
3:06
[SOUND] Okay, now you've probably used
the console object before which happens
3:10
to be one of many ways that's used
to get input and output from a user.
3:16
But for the sake of learning new tricks,
let's use a handy object called scanner.
3:21
Now a scanner lives in
the different package.
3:27
Than where all the other things
we've been importing are.
3:30
It lives in the Java util package,
3:32
and what that means is
that we need to import it.
3:34
So let's do that.
3:37
Let's go up here, and
we'll say import java.util.scanner.
3:38
And what this does is it allows us to
have access to this class name, right?
3:44
So now,
we can create a new one of these types.
3:50
So scanner, when we create it.
3:54
So let's make a new one.
3:56
So we'll say Scanner, which is the type.
3:58
And we'll name it scanner,
our instance variable.
3:59
And we'll make a brand new one of those.
4:02
So we'll say new Scanner.
4:04
So scanner expects us to define
where the input is coming from so
4:08
much like there's a system.out,
there is also a system.in.
4:12
Okay, so now we need to prompt them,
we need to write out to the screen so
4:19
we know how to do that already.
4:23
So we'll say system .out.print and
I want to keep things on the same line and
4:25
I don't really need to
format anything here.
4:30
So let's just go ahead and we'll just
use the print command off of out.
4:32
It's just another one of these commands.
4:35
So as they enter a letter.
4:37
And we'll do a couple spaces there so
that they have a space to enter it in,
4:39
Scanner has a bunch of helper
methods that help Parse input.
4:45
Parse meaning read and
figure out what it means there.
4:50
So, much like how console
had the read line method.
4:52
Scanner uses one called next line
4:56
which allows us to read a line that
again happens when they press enter.
4:59
So, let's do that.
5:03
So we'll store it.
5:04
We'll do string.
5:05
Guess input and
5:06
we'll do equals scanner.nextline and
note case there.
5:09
Since our applied guess
method only takes a char
5:16
we need to go get one of those using
that method that we saw, right?
5:20
That char at.
5:24
So let's pull from this guess
him put right we have a string.
5:25
So let's get the first
character off of it.
5:29
I guessInput.charAt... that first character
again is zero not one right, okay.
5:31
So now, we have the guess.
5:39
We need to see if that guess matches or
not but
5:42
that's not the prompter's job right.
5:46
That's the game's job.
5:48
Now it's a good thing that we
passed in our game object, right.
5:49
It's a good thing.
5:53
Why don't we just return what
comes out of applied guess, right?
5:56
So apply guess is going to come and
see if it exists and
6:00
it's going to return a true or a false.
6:03
So here we can do the same thing we
could just return game.applyGuess.
6:04
And play that Guess where that finally
6:11
let's add some code to hang man dot
java over here and let's use it.
6:15
So, let's make a new prompter.
6:20
So we know how to do that.
6:21
It's a type prompter.
6:22
It's a named prompter it's a new prompter.
6:24
And remember the way that we're getting
the game in there is we're passing it
6:26
through the constructor through prompter
constructor because what good is
6:30
a prompter without the game.
6:33
There we go game.
6:35
Okay, so let's just write some simple
code just walk through what we just did.
6:36
So we'll say boolean is hit
6:41
prompter dot prompt for guess, and
again that's how we run our code.
6:46
It's going to come in here.
6:52
It's gonna create a new scanner
is going to print this line and
6:53
then it's going to wait here.
6:54
It's going to wait until we finish and
then it will go and go on through.
6:56
So it's let's see.
6:59
So once we get back that result from
whatever that we type then we'll say
7:01
if is hits and
I'm gonna close that if right away.
7:05
And then we'll say system.out.println.
7:11
We got a hit.
7:15
And obviously this is not something we
would ever say to the user because hit,
7:18
what does it mean to them but
this is just for us to look at, all right.
7:22
So this is something that you
might not have seen before.
7:25
Now we want to say what happens if
they don't remember we need to do that
7:28
branching that we saw else.
7:31
We're gonna say
7:33
system.out.printline, okay.
7:36
So, look at this, I want to show this
is a common problem that happened.
7:45
So, I forgot to put my
closing brace there,
7:48
which I letting you in on the secret
o what I'm trying to do here.
7:53
So look, this one close but this else
I didn't close it but it's grabbing.
7:55
The methods it's actually the methods,
but see it's not highlighting the method.
8:00
It should be and if I come here to
the class one, the class calls or
8:03
it's highlighting there so
it's unbalanced.
8:06
So, we wanna balance that there we go.
8:09
So, now we look at this.
8:11
All right now,
8:13
let's pop over to our hangman Java here in
a press controlled lead jump at jShell.
8:14
And let's do clear.
8:20
And javac hangman dot java and
8:21
java Hangman.
8:27
Here we go.
So we've compiled it.
8:31
We're gonna run it and we should see
our prompt Cool so enter a letter.
8:32
Let's go ahead and
8:39
guess what that's there will say t cuz
right it passed in the game treehouse.
8:39
Okay, cool we got a hit and
then let's do it again.
8:43
And let's put in z here and
we missed awesome it's working.
8:46
So let's go take a look at
our story over here and
8:52
see as a guesser I should be able to
submit a guess so I can play a game.
8:55
I think we just did that I'm going
to go ahead and call that done.
8:59
We completed our first story.
9:05
Nothing quite like that feeling of
moving something to the done column.
9:07
Now it might not be much.
9:10
But now we can start into the other
stories that were blocked by this one,
9:12
progress.
9:15
Let's pick up the next one right
after we do this quick exercise.
9:17
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up