1
00:00:01,390 --> 00:00:04,650
<v Narrator>Welcome back to project number three</v>

2
00:00:04,650 --> 00:00:06,590
of this section,

3
00:00:06,590 --> 00:00:09,730
and this project is going to be the most exciting one

4
00:00:09,730 --> 00:00:12,570
because now we will take everything that we learned

5
00:00:12,570 --> 00:00:15,950
in the first two projects to a whole new level

6
00:00:15,950 --> 00:00:19,163
and build a really cool and amazing game.

7
00:00:20,840 --> 00:00:23,610
And this is the game that I was talking about

8
00:00:23,610 --> 00:00:25,730
and it's called the pick game.

9
00:00:25,730 --> 00:00:27,160
Now this project here

10
00:00:27,160 --> 00:00:30,260
is really going to be a practice project.

11
00:00:30,260 --> 00:00:32,170
So a project where you and me

12
00:00:32,170 --> 00:00:36,200
will together reinforce all the skills that you have learned

13
00:00:36,200 --> 00:00:37,990
up until this point,

14
00:00:37,990 --> 00:00:40,750
because remember from the last section,

15
00:00:40,750 --> 00:00:44,510
reinforcing knowledge is one of the most important things

16
00:00:44,510 --> 00:00:47,170
that you can do to learn, right?

17
00:00:47,170 --> 00:00:48,730
So in this project,

18
00:00:48,730 --> 00:00:52,450
I will do a little bit less explaining than before,

19
00:00:52,450 --> 00:00:55,180
at least about the stuff that we already learned,

20
00:00:55,180 --> 00:00:59,030
because we are really just practicing here. Okay.

21
00:00:59,030 --> 00:01:02,030
Now, if you're in a hurry and just want to learn the basics,

22
00:01:02,030 --> 00:01:04,340
please feel free to skip this project.

23
00:01:04,340 --> 00:01:06,950
But of course, I would still really advise you

24
00:01:06,950 --> 00:01:08,853
to code along with me here,

25
00:01:09,700 --> 00:01:13,270
but now let's see how this game actually works.

26
00:01:13,270 --> 00:01:15,810
And in fact, you can try that along with me

27
00:01:16,773 --> 00:01:20,860
because this time I hosted this demo, on a live website.

28
00:01:20,860 --> 00:01:25,623
So you can access that by pickgamev2.netlify.app

29
00:01:26,620 --> 00:01:28,990
And the link is also in the read me file

30
00:01:28,990 --> 00:01:33,790
of the repository for this course on github.com.

31
00:01:33,790 --> 00:01:36,970
But anyway, this is more of a real game now

32
00:01:36,970 --> 00:01:39,630
because we actually have two players.

33
00:01:39,630 --> 00:01:42,740
So you can play this with a friend or something

34
00:01:42,740 --> 00:01:44,970
or just against yourself.

35
00:01:44,970 --> 00:01:47,630
So the idea is that we roll a dice.

36
00:01:47,630 --> 00:01:49,830
And so now I'm playing number one.

37
00:01:49,830 --> 00:01:52,320
So this one is now the active player.

38
00:01:52,320 --> 00:01:54,220
So I roll a dice,

39
00:01:54,220 --> 00:01:56,050
And so you see that I rolled a two.

40
00:01:56,050 --> 00:02:00,750
And so this number gets added to my current score down here.

41
00:02:00,750 --> 00:02:04,090
Okay. So this is my current score for the current round.

42
00:02:04,090 --> 00:02:06,000
And this year is my total score.

43
00:02:06,000 --> 00:02:08,350
And so let's see how that's going to work

44
00:02:08,350 --> 00:02:11,570
so I can roll the dice again now if I want to,

45
00:02:11,570 --> 00:02:12,850
and now I rolled a four

46
00:02:14,167 --> 00:02:16,720
and that four got added to the two that it had previously.

47
00:02:16,720 --> 00:02:21,120
So now that's six and now I can choose to hold this score.

48
00:02:21,120 --> 00:02:22,730
So if I click this button,

49
00:02:22,730 --> 00:02:24,950
this score of the current round

50
00:02:24,950 --> 00:02:26,940
will get added to my total score,

51
00:02:26,940 --> 00:02:28,900
which right now is zero.

52
00:02:28,900 --> 00:02:33,007
And so when I hold a den, my score will be zero now.

53
00:02:33,007 --> 00:02:36,640
And we switched to player number two,

54
00:02:36,640 --> 00:02:39,340
and now I can click roll dice again.

55
00:02:39,340 --> 00:02:42,800
So we rolled a two and I can hold again.

56
00:02:42,800 --> 00:02:45,650
And so now play it two as two points.

57
00:02:45,650 --> 00:02:49,260
Now, the thing here is that whenever we roll a one,

58
00:02:49,260 --> 00:02:51,320
we lose all our current score

59
00:02:51,320 --> 00:02:53,630
and it's then the next players turn.

60
00:02:53,630 --> 00:02:57,260
And so that's why sometimes we need to hold or points.

61
00:02:57,260 --> 00:02:58,803
So let me show that to you.

62
00:02:59,670 --> 00:03:02,580
And indeed, I rolled a one right away.

63
00:03:02,580 --> 00:03:04,313
And so now it's player two again.

64
00:03:05,710 --> 00:03:07,820
So let's keep rolling the dice.

65
00:03:07,820 --> 00:03:09,930
And I will now again, wait for one

66
00:03:09,930 --> 00:03:13,463
so that you can see that all my current score will be lost.

67
00:03:21,290 --> 00:03:24,180
So that's a lot of points already there.

68
00:03:24,180 --> 00:03:28,480
And now I rolled a one and a player lost all the points.

69
00:03:28,480 --> 00:03:30,650
Okay. So I could have hold the points

70
00:03:30,650 --> 00:03:33,020
and then I would have added all these points

71
00:03:33,020 --> 00:03:34,623
here to my score.

72
00:03:35,650 --> 00:03:36,770
So let's do that here

73
00:03:37,640 --> 00:03:39,650
and again, a one.

74
00:03:39,650 --> 00:03:42,890
And so yeah, now here I hold

75
00:03:42,890 --> 00:03:45,230
and I edit them to these points.

76
00:03:45,230 --> 00:03:49,200
And I think by now you get how the game works, right?

77
00:03:49,200 --> 00:03:53,450
So the first player to reach 100 points then wins the game.

78
00:03:53,450 --> 00:03:55,490
But I will now not demonstrate that

79
00:03:55,490 --> 00:03:58,090
because that's going to take too long.

80
00:03:58,090 --> 00:03:59,620
So we have these two buttons here,

81
00:03:59,620 --> 00:04:02,490
and then we also have just like in the previous game,

82
00:04:02,490 --> 00:04:04,350
a way of resetting the game.

83
00:04:04,350 --> 00:04:07,460
So when I click here, as you might expect,

84
00:04:07,460 --> 00:04:09,510
this dice will disappear

85
00:04:09,510 --> 00:04:12,940
and all the scores are set back to zero.

86
00:04:12,940 --> 00:04:15,360
And to understand this game a little bit better

87
00:04:15,360 --> 00:04:16,440
for this application,

88
00:04:16,440 --> 00:04:19,260
I designed something called a flow chart.

89
00:04:19,260 --> 00:04:20,710
So let's take a look at that.

90
00:04:21,970 --> 00:04:24,880
And this is what a flow chart looks like.

91
00:04:24,880 --> 00:04:27,060
So basically it's a representation

92
00:04:27,060 --> 00:04:30,650
of everything that can happen in the application.

93
00:04:30,650 --> 00:04:33,640
So on the left side, we have in yellow,

94
00:04:33,640 --> 00:04:36,310
the possible actions that the user can take.

95
00:04:36,310 --> 00:04:40,040
And then from there we see what happens in the application.

96
00:04:40,040 --> 00:04:43,020
As one of these options is basically chosen.

97
00:04:43,020 --> 00:04:46,770
So as one of the actions is executed.

98
00:04:46,770 --> 00:04:49,370
So whenever the user rolls to dice,

99
00:04:49,370 --> 00:04:52,160
so clicks that roll dice button,

100
00:04:52,160 --> 00:04:55,030
then we need to generate a random dice roll.

101
00:04:55,030 --> 00:04:57,260
Then we displayed at dice roll,

102
00:04:57,260 --> 00:04:59,650
and then we check whether it is a one.

103
00:04:59,650 --> 00:05:00,940
If it's not one,

104
00:05:00,940 --> 00:05:03,920
then add the dice roll to the current score.

105
00:05:03,920 --> 00:05:06,440
And of course this play it, right?

106
00:05:06,440 --> 00:05:09,010
So that is exactly the behavior that we saw

107
00:05:09,010 --> 00:05:12,140
when we tested out the game earlier. Right?

108
00:05:12,140 --> 00:05:14,530
Now, if the dice roll is actually a one,

109
00:05:14,530 --> 00:05:16,730
then simply switch the player.

110
00:05:16,730 --> 00:05:19,400
And so in this case, the dice roll will not get added

111
00:05:19,400 --> 00:05:21,070
to the current score.

112
00:05:21,070 --> 00:05:22,700
Next, the other option is that

113
00:05:22,700 --> 00:05:25,020
the user wants to hold his score.

114
00:05:25,020 --> 00:05:28,330
And then we add the current score to the total score.

115
00:05:28,330 --> 00:05:29,490
Once that is done,

116
00:05:29,490 --> 00:05:33,390
we must check if the score is above or equal 100,

117
00:05:33,390 --> 00:05:36,810
because as I said, the player wins whenever the score

118
00:05:36,810 --> 00:05:39,980
is at least 100 points, right?

119
00:05:39,980 --> 00:05:42,410
And if it's not, then we just switch the player

120
00:05:42,410 --> 00:05:44,950
and the game keeps on running.

121
00:05:44,950 --> 00:05:47,540
Finally, when the user chooses to reset the game ,

122
00:05:47,540 --> 00:05:49,810
we simply set all scores to zero

123
00:05:49,810 --> 00:05:51,830
and set the player number one,

124
00:05:51,830 --> 00:05:54,040
back to being the starting player.

125
00:05:54,040 --> 00:05:57,000
All right. So this is a very nice way again,

126
00:05:57,000 --> 00:05:59,790
to visualize what happens in the application.

127
00:05:59,790 --> 00:06:02,120
And it's also a very good guide for us

128
00:06:02,120 --> 00:06:05,330
to actually implement the application in coat.

129
00:06:05,330 --> 00:06:08,640
So usually whenever I built a project like this one,

130
00:06:08,640 --> 00:06:11,660
I like to draw a flow chart like this,

131
00:06:11,660 --> 00:06:14,020
and it doesn't need to have all this precision

132
00:06:14,020 --> 00:06:15,470
right from the start.

133
00:06:15,470 --> 00:06:18,320
So we can just start out with a rough sketch

134
00:06:18,320 --> 00:06:21,900
without the complete plan of what we're going to build.

135
00:06:21,900 --> 00:06:24,170
But anyway, this is very helpful

136
00:06:24,170 --> 00:06:26,320
before we actually start writing code

137
00:06:26,320 --> 00:06:29,380
to have a good idea of what we will have to do.

138
00:06:29,380 --> 00:06:31,780
And if you want to build your own flow charts

139
00:06:31,780 --> 00:06:33,340
that look like this,

140
00:06:33,340 --> 00:06:36,210
you can do so on diagrams.net.

141
00:06:36,210 --> 00:06:38,700
So that's where I designed this flow chart,

142
00:06:38,700 --> 00:06:41,900
and it's a very nice online drawing application

143
00:06:41,900 --> 00:06:45,873
that is completely free and really easy and fast to use.

144
00:06:47,230 --> 00:06:50,770
Now. Okay. And so now as always let's open up

145
00:06:50,770 --> 00:06:55,003
or project folder. So I have to start a files here already,

146
00:06:55,990 --> 00:06:58,453
and now I need a new vs code window.

147
00:07:00,830 --> 00:07:02,823
And then I just opened a Pitt game.

148
00:07:05,400 --> 00:07:09,510
And this time, since the application needs this whole space,

149
00:07:09,510 --> 00:07:12,543
let's actually put it here on a separate desktop.

150
00:07:14,770 --> 00:07:16,390
And then as we attest out,

151
00:07:16,390 --> 00:07:19,263
I will just move here from one desktop to the other.

152
00:07:20,340 --> 00:07:22,923
So let's make this bigger this time.

153
00:07:23,880 --> 00:07:28,330
And so like always, we already have all our files here,

154
00:07:28,330 --> 00:07:32,620
so let's take a look at them and JavaScript.

155
00:07:32,620 --> 00:07:35,383
So here as always just the use strict,

156
00:07:36,520 --> 00:07:38,390
then here we have all the styles

157
00:07:38,390 --> 00:07:40,650
that we need for the application.

158
00:07:40,650 --> 00:07:42,860
And we will take a look at them as we go

159
00:07:42,860 --> 00:07:44,350
through the project.

160
00:07:44,350 --> 00:07:46,833
And then finally the HTML file.

161
00:07:49,610 --> 00:07:52,170
Okay, and they also actually included

162
00:07:52,170 --> 00:07:54,660
the image of this flow chart here for you,

163
00:07:54,660 --> 00:07:57,200
so that you can maybe take a look at it yourself

164
00:07:57,200 --> 00:08:00,073
to make sure that you really understand how it works.

165
00:08:01,000 --> 00:08:05,110
Okay. So take a minute or two to maybe test the app again

166
00:08:05,110 --> 00:08:09,113
and check out this flow chart before we actually start.

167
00:08:11,200 --> 00:08:15,440
Alright. Also, I wanted to show you that I have one image

168
00:08:15,440 --> 00:08:17,550
here for each of the dices.

169
00:08:17,550 --> 00:08:19,390
So dice one looks like this,

170
00:08:19,390 --> 00:08:22,120
like two, it looks like this

171
00:08:22,120 --> 00:08:23,730
and so on and so forth.

172
00:08:23,730 --> 00:08:28,730
So we have one image for each of the possible six numbers.

173
00:08:28,880 --> 00:08:31,660
So that's going to be important later,

174
00:08:31,660 --> 00:08:35,000
but now let's just start to,

175
00:08:35,000 --> 00:08:36,603
write a little bit of code here.

176
00:08:37,670 --> 00:08:40,370
Let's get ourselves a new terminal here

177
00:08:41,620 --> 00:08:45,120
so that we can take a look at the application

178
00:08:45,120 --> 00:08:47,280
as it looks right now.

179
00:08:47,280 --> 00:08:52,280
Interior. I like to minimize it a little bit life server.

180
00:08:56,350 --> 00:09:01,350
Okay. And so this is our life version of the pic game.

181
00:09:02,528 --> 00:09:05,960
So again, we are here at this local host at port 8080.

182
00:09:05,960 --> 00:09:07,930
And if you are seeing some other ports,

183
00:09:07,930 --> 00:09:11,080
that's no problem at all, as long as it works.

184
00:09:11,080 --> 00:09:14,470
So maybe you still have something running on this port,

185
00:09:14,470 --> 00:09:16,450
maybe from the previous project.

186
00:09:16,450 --> 00:09:19,140
And then this project will run on another port.

187
00:09:19,140 --> 00:09:20,840
That doesn't really matter.

188
00:09:20,840 --> 00:09:22,920
So right now in the starting point,

189
00:09:22,920 --> 00:09:25,820
this is what our application looks like.

190
00:09:25,820 --> 00:09:27,830
But of course in the demo,

191
00:09:27,830 --> 00:09:30,110
we don't see the dice in the beginning

192
00:09:30,110 --> 00:09:33,070
and we don't see any scores here.

193
00:09:33,070 --> 00:09:36,380
Okay. And so the first thing that we're going to do

194
00:09:36,380 --> 00:09:39,040
is to basically put these scores to zero

195
00:09:39,040 --> 00:09:40,930
and make this dice disappear.

196
00:09:40,930 --> 00:09:42,590
And so that's going to be basically

197
00:09:42,590 --> 00:09:44,780
the starting condition here.

198
00:09:44,780 --> 00:09:47,690
So let's go back here to the coat.

199
00:09:47,690 --> 00:09:48,840
And let me just tell you where

200
00:09:48,840 --> 00:09:51,500
these initial values come from.

201
00:09:51,500 --> 00:09:54,070
So this is the 43 score that we just saw,

202
00:09:54,070 --> 00:09:56,170
and this is the 24.

203
00:09:56,170 --> 00:09:58,950
And so let's take a moment to inspect the code

204
00:09:58,950 --> 00:10:00,800
because as you already know,

205
00:10:00,800 --> 00:10:02,310
we need the class names.

206
00:10:02,310 --> 00:10:05,640
And in this case also the IDs to then identify

207
00:10:05,640 --> 00:10:07,860
and select the elements.

208
00:10:07,860 --> 00:10:11,550
So basically here we have one of these sections here

209
00:10:11,550 --> 00:10:13,500
for each of the players

210
00:10:13,500 --> 00:10:16,920
and you see that the first one is player zero.

211
00:10:16,920 --> 00:10:19,830
And the second one is player one.

212
00:10:19,830 --> 00:10:21,700
And I will explain you why

213
00:10:21,700 --> 00:10:23,830
the players are called zero and one

214
00:10:23,830 --> 00:10:25,350
instead of one and two,

215
00:10:25,350 --> 00:10:27,090
probably in the next lecture.

216
00:10:27,090 --> 00:10:29,090
So it will make sense by then.

217
00:10:29,090 --> 00:10:31,720
okay. But now about the scores,

218
00:10:31,720 --> 00:10:34,130
they are stored in this element

219
00:10:34,130 --> 00:10:35,850
and in this one here.

220
00:10:35,850 --> 00:10:39,160
And so you'll see both of them have to score class,

221
00:10:39,160 --> 00:10:42,040
but then each of them has a different ID.

222
00:10:42,040 --> 00:10:44,840
And so this time we need to select these two elements

223
00:10:44,840 --> 00:10:48,373
using their unique ID instead of a class name.

224
00:10:49,290 --> 00:10:52,730
So that's the idea of score dash dash zero

225
00:10:52,730 --> 00:10:54,950
and score dash dash one.

226
00:10:54,950 --> 00:10:56,783
So let's do that.

227
00:10:59,080 --> 00:11:04,080
So const score one and then document query selector.

228
00:11:08,560 --> 00:11:11,130
So this is the way that we learned it before.

229
00:11:11,130 --> 00:11:15,360
And now here, we actually need the hash symbol.

230
00:11:15,360 --> 00:11:20,253
So score zero. So actually I'm interested in zero here.

231
00:11:21,390 --> 00:11:24,250
Okay. And so again, now we used the,

232
00:11:24,250 --> 00:11:27,890
this hash because that is the selector for the ID

233
00:11:29,212 --> 00:11:33,880
and a dot that we used to use is only four classes. Okay.

234
00:11:33,880 --> 00:11:36,900
Now, when we're selecting using an ID.

235
00:11:36,900 --> 00:11:40,970
Then there's actually another way of selecting an element.

236
00:11:40,970 --> 00:11:43,330
And right now that's exactly what we're doing.

237
00:11:43,330 --> 00:11:46,377
So we're interested in IDs, not in classes.

238
00:11:46,377 --> 00:11:49,730
And so let me show you that other way of selecting elements

239
00:11:49,730 --> 00:11:51,283
that only works by ID.

240
00:11:52,390 --> 00:11:55,363
So let's call this one, score one,

241
00:11:56,230 --> 00:11:58,360
and then again, we use document,

242
00:11:58,360 --> 00:12:01,210
but then we're not calling query selector.

243
00:12:01,210 --> 00:12:05,783
Instead we call get element by ID.

244
00:12:08,780 --> 00:12:11,540
And then here, we just pass in the name of the ID.

245
00:12:11,540 --> 00:12:14,080
So just score one.

246
00:12:14,080 --> 00:12:16,040
So without the hash here,

247
00:12:16,040 --> 00:12:18,490
because now we're not writing a selector,

248
00:12:18,490 --> 00:12:21,310
we are only passing in the name of the ID

249
00:12:21,310 --> 00:12:23,500
that we're looking for. Okay?

250
00:12:23,500 --> 00:12:27,490
So this works exactly the same as this,

251
00:12:27,490 --> 00:12:29,900
but the get element by ID

252
00:12:29,900 --> 00:12:33,830
is supposed to be a little bit faster than query selector,

253
00:12:33,830 --> 00:12:35,900
but I guess that's only relevant

254
00:12:35,900 --> 00:12:40,140
if you're selecting like thousands of elements at once.

255
00:12:40,140 --> 00:12:43,100
So usually I like to always use query selector,

256
00:12:43,100 --> 00:12:46,210
but I still wanted to show you that there also exists

257
00:12:46,210 --> 00:12:50,263
get element by ID. Alright?

258
00:12:51,130 --> 00:12:55,680
And actually let's call these two here, score zero L,

259
00:12:56,540 --> 00:12:58,590
which stands for element

260
00:12:58,590 --> 00:13:01,790
because you might then confuse maybe this variable

261
00:13:01,790 --> 00:13:06,620
here for simply the score value of players zero. Right?

262
00:13:06,620 --> 00:13:07,560
And so in this case,

263
00:13:07,560 --> 00:13:11,330
we are making it really clear that this is a dumb element.

264
00:13:11,330 --> 00:13:16,000
So score is zero L all right. Okay.

265
00:13:16,000 --> 00:13:18,000
So we're selecting these here

266
00:13:18,000 --> 00:13:22,020
and now we can use the variables to do something on them.

267
00:13:22,020 --> 00:13:23,270
And again, we do that

268
00:13:23,270 --> 00:13:26,750
because probably we will need to do something with

269
00:13:26,750 --> 00:13:29,220
these selected elements multiple times

270
00:13:29,220 --> 00:13:30,780
throughout the application.

271
00:13:30,780 --> 00:13:32,680
And so we just defined them once at the

272
00:13:32,680 --> 00:13:35,500
top of our file instead of having to select

273
00:13:35,500 --> 00:13:38,300
the same elements over and over again.

274
00:13:38,300 --> 00:13:40,530
So let's just add a comment here.

275
00:13:40,530 --> 00:13:43,940
And comments are also a good way of structuring the code

276
00:13:43,940 --> 00:13:47,273
and also of planning how we will build some features.

277
00:13:49,620 --> 00:13:53,120
So selecting elements.

278
00:13:53,120 --> 00:13:55,036
And so in this project,

279
00:13:55,036 --> 00:13:57,330
we will try to get a little bit more used

280
00:13:57,330 --> 00:13:59,703
to actually write in comments. Alright?

281
00:14:01,300 --> 00:14:04,240
Anyway, let's now set these initial conditions

282
00:14:04,240 --> 00:14:06,460
of score zero element.

283
00:14:06,460 --> 00:14:09,600
And then as you know, we use text content

284
00:14:09,600 --> 00:14:13,830
and then we set it to zero. Alright?

285
00:14:13,830 --> 00:14:17,790
And now the same four score one score,

286
00:14:17,790 --> 00:14:22,440
one element.textcontent to zero.

287
00:14:23,580 --> 00:14:27,150
And here we are specifying numbers, not strings,

288
00:14:27,150 --> 00:14:29,470
but JavaScript will then automatically convert them

289
00:14:29,470 --> 00:14:33,140
to strings to actually display them on the page.

290
00:14:33,140 --> 00:14:35,920
So if we go now to the application

291
00:14:35,920 --> 00:14:38,500
that should already be in effect,

292
00:14:38,500 --> 00:14:43,240
and indeed you see that now the scores are actually at zero.

293
00:14:43,240 --> 00:14:47,780
Great. Now all we have to do is to hide this dice here.

294
00:14:47,780 --> 00:14:50,090
And so let's do that using the technique

295
00:14:50,090 --> 00:14:52,620
that we learned in the previous project,

296
00:14:52,620 --> 00:14:55,420
which is basically creating a hidden class

297
00:14:55,420 --> 00:14:58,663
and then add that hidden class here at the beginning. Okay.

298
00:14:59,910 --> 00:15:01,890
So let's go to our style.

299
00:15:01,890 --> 00:15:04,550
And right now I don't have that class yet.

300
00:15:04,550 --> 00:15:05,780
So that's just created

301
00:15:06,880 --> 00:15:08,753
and I can close the terminal here.

302
00:15:10,240 --> 00:15:12,023
Let's just do that at the very end.

303
00:15:15,110 --> 00:15:19,580
So we create a class like this

304
00:15:19,580 --> 00:15:23,750
and then we just set the display to none.

305
00:15:23,750 --> 00:15:26,510
So that's exactly the class that we had in the

306
00:15:26,510 --> 00:15:29,293
previous project as well. Okay.

307
00:15:30,780 --> 00:15:32,240
And so now we can just add that class

308
00:15:32,240 --> 00:15:34,653
to the dice at the beginning of the game.

309
00:15:35,850 --> 00:15:38,110
So that's easy enough,

310
00:15:38,110 --> 00:15:39,660
but first we need to select it.

311
00:15:42,220 --> 00:15:46,560
So let's call it dice L for the dice element.

312
00:15:46,560 --> 00:15:51,560
Let's check out what the ID or the class of it is.

313
00:15:52,240 --> 00:15:56,370
And here we see that it's actually just this dice class.

314
00:15:56,370 --> 00:15:58,793
So this image with his class of a dice,

315
00:16:00,950 --> 00:16:04,600
so document not query selector dice.

316
00:16:09,120 --> 00:16:11,050
And so here we have to start in conditions

317
00:16:14,940 --> 00:16:19,940
and now let's simply do dice element.classlist.add.

318
00:16:23,100 --> 00:16:24,720
And now simply this string,

319
00:16:24,720 --> 00:16:27,710
which contains the name of the class

320
00:16:27,710 --> 00:16:31,700
and that's the hidden class, give it a safe,

321
00:16:31,700 --> 00:16:32,923
let's check it out.

322
00:16:33,872 --> 00:16:35,640
And indeed, now the dice has gone

323
00:16:35,640 --> 00:16:39,550
and let's see the HTML here, actually,

324
00:16:39,550 --> 00:16:42,910
you now indeed we have the hidden class here,

325
00:16:42,910 --> 00:16:45,750
besides the dice class. Great.

326
00:16:45,750 --> 00:16:49,220
And then as we implement the roll dice functionality,

327
00:16:49,220 --> 00:16:52,340
of course, we will want the dyes to be visible.

328
00:16:52,340 --> 00:16:56,380
And then we can simply remove that class

329
00:16:56,380 --> 00:16:59,410
again from the dice. Okay.

330
00:16:59,410 --> 00:17:02,526
And actually that's exactly what we're going to do

331
00:17:02,526 --> 00:17:03,426
in the next video.

