Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,360 --> 00:00:03,270
In part three, the challenge was to write code that determines the winner.
2
00:00:05,340 --> 00:00:10,080
Right now, the app lets the player choose a spot on the board, but we need to write logic that stops
3
00:00:10,080 --> 00:00:14,490
the game as soon as one of the player gets three straight access or three straight O's.
4
00:00:16,520 --> 00:00:19,100
This is not easy to implement, so I'll go through it slowly.
5
00:00:25,670 --> 00:00:30,950
Here in TASC six, we can say with the usual public static, the function returns an integer.
6
00:00:33,440 --> 00:00:34,670
It's called Chegwidden.
7
00:00:36,440 --> 00:00:39,050
And it receives the tic tac toe board as a parameter.
8
00:00:46,560 --> 00:00:51,830
Now, inside the function, the first step is to make a count variable that starts at zero in count
9
00:00:51,840 --> 00:00:52,820
is equal to zero.
10
00:00:54,860 --> 00:00:58,280
And we can silence this error by returning the count right now.
11
00:01:01,080 --> 00:01:03,660
That was easy, but task sex is not over yet.
12
00:01:04,620 --> 00:01:07,440
If you scroll all the way up, I left you some instructions.
13
00:01:09,310 --> 00:01:11,590
So here I need to call the function check when.
14
00:01:19,090 --> 00:01:24,430
And I hope it's clear to you that every time the loop runs during every single turn, we're using check
15
00:01:24,430 --> 00:01:26,140
when to check if anybody one.
16
00:01:27,940 --> 00:01:32,680
Quinn returns an integer, and I'm going to store this return value in an integer called Count.
17
00:01:33,820 --> 00:01:39,550
All right, if that injury happens to be three, that means X got three in a row, so we need to print
18
00:01:39,550 --> 00:01:40,300
X wins.
19
00:01:40,720 --> 00:01:44,020
I'm going to manifest this in the code F count equals three.
20
00:01:53,930 --> 00:01:55,460
Print X wins.
21
00:01:59,790 --> 00:02:05,610
And break the loop if it's the opposite, if the energy return from calling the check, one function
22
00:02:05,610 --> 00:02:06,960
is equal to negative three.
23
00:02:14,920 --> 00:02:16,750
Then we can print Erwin's.
24
00:02:21,230 --> 00:02:22,340
And break the loop.
25
00:02:28,860 --> 00:02:31,530
In essence, we're checking for a winner after every single turn.
26
00:02:34,770 --> 00:02:37,830
So right now, our function doesn't do anything, it just return zero.
27
00:02:38,100 --> 00:02:40,030
So we need to start with task seven.
28
00:02:40,200 --> 00:02:43,460
We need to check every single row for straight Xs or straight oaks.
29
00:02:43,860 --> 00:02:47,460
Now, running through every character in a 2D array requires a nested loop.
30
00:02:48,060 --> 00:02:50,560
The outer loop is going to start with a row index of zero.
31
00:02:51,180 --> 00:02:55,650
It's going to keep running as long as the row index is less than the length of our board, which is
32
00:02:55,650 --> 00:02:57,030
three, the number of rows.
33
00:03:00,490 --> 00:03:05,050
And then as we hit the inner loop, Jay is going to start by indexing the first element in the current
34
00:03:05,050 --> 00:03:11,020
row, Jake will zero and the loop keeps running until Jay indexes every element in that row.
35
00:03:13,700 --> 00:03:14,810
J plus plus.
36
00:03:22,600 --> 00:03:28,210
And remember that the first bracket gets Dr�, the road that we're interested in, we will use the Arrow
37
00:03:28,210 --> 00:03:32,890
Index to index each arrow and the second bracket gets the element in that row.
38
00:03:33,340 --> 00:03:36,990
We're going to use the counter j to index every element in the current row.
39
00:03:37,660 --> 00:03:44,170
So as the outer loop counterspy is fixed to a row, the inner loop countered J indexes every value in
40
00:03:44,170 --> 00:03:47,520
that row as a reminder of how nested loops work.
41
00:03:47,530 --> 00:03:49,090
Here's an animation that I made for you.
42
00:03:49,720 --> 00:03:53,680
If you'd like to skip it, then you can fast forward to the following timestamp.
43
00:04:43,450 --> 00:04:48,160
OK, as the inner loop runs through every character and a fixed arrow, we're going to check if that
44
00:04:48,160 --> 00:04:49,330
character is inducts.
45
00:04:56,890 --> 00:04:59,200
If so, we're going to add one to the counts.
46
00:05:05,210 --> 00:05:07,970
If the character is, oh, we're going to subtract one.
47
00:05:21,460 --> 00:05:25,810
So after the inner loop, we just went through an entire row of characters and we're going to check
48
00:05:25,810 --> 00:05:29,500
if the row count resulted in a value of three or negative three.
49
00:05:41,340 --> 00:05:45,330
If so, we're going to break the whole function prematurely by returning the counts.
50
00:05:47,830 --> 00:05:50,020
Otherwise, we have to reset the count.
51
00:05:50,530 --> 00:05:52,150
This is a really important.
52
00:05:54,190 --> 00:05:57,790
Because you want your next inner loop to start counting again from zero.
53
00:06:00,060 --> 00:06:05,060
And with that being said, our code is now able to check every row for a straight X or a straight O.
54
00:06:06,500 --> 00:06:07,490
That's around the code.
55
00:06:15,460 --> 00:06:17,650
I'm going to keep playing put x.
56
00:06:19,590 --> 00:06:20,100
Oh.
57
00:06:24,710 --> 00:06:30,890
Oh, and before I put my last text, let's make sure we understand what's really going on here, after
58
00:06:30,890 --> 00:06:34,160
I played the latest video, it printed the board, obviously.
59
00:06:36,290 --> 00:06:37,820
And then check when was called.
60
00:06:41,930 --> 00:06:46,910
First, the Roman Dukas fixed that zero in the inner loop, countered Jay's indexing every value in
61
00:06:46,910 --> 00:06:47,340
that road.
62
00:06:47,990 --> 00:06:50,120
There are two X's, so that counts to.
63
00:06:52,550 --> 00:06:54,650
Nothing happens, so the count resets to.
64
00:06:57,660 --> 00:07:02,970
Now we're indexing every value in a row, one, there are two O's, so that counts negative to.
65
00:07:05,690 --> 00:07:11,150
Again, nothing happens, it resets the count to zero, and now we're indexing every value in a row
66
00:07:11,150 --> 00:07:13,970
to there's nothing here, so the count is zero.
67
00:07:18,090 --> 00:07:20,280
So our function returns a count of zero.
68
00:07:24,900 --> 00:07:26,930
And that's not going to do anything for us.
69
00:07:29,600 --> 00:07:33,640
But in our next turn, if I put X X twins Nahar.
70
00:07:38,640 --> 00:07:41,580
Now, as we're checking the first rule, that counts three.
71
00:07:46,680 --> 00:07:50,490
The return key word breaks the function prematurely and returns the count.
72
00:07:54,610 --> 00:08:00,310
And since the return value is three X wins, breaks the loop and the game is done.
73
00:08:34,789 --> 00:08:35,179
Cool.
74
00:08:36,020 --> 00:08:38,870
Now, before moving on, we need to test for Stratos.
75
00:08:51,950 --> 00:08:54,080
I'll keep playing till I get all those.
76
00:09:06,640 --> 00:09:07,920
And perfect.
77
00:09:16,910 --> 00:09:21,560
This time, once the ROE index is fixed, that ROE one, it counts three values.
78
00:09:23,520 --> 00:09:25,560
Which results in a count of negative three.
79
00:09:27,760 --> 00:09:33,340
And after we're done checking that specific row, the return keyword breaks the function prematurely
80
00:09:33,340 --> 00:09:34,540
and returns the count.
81
00:09:38,140 --> 00:09:45,040
And negative three means a witness that is all for task six and seven in the next video, we're going
82
00:09:45,040 --> 00:09:46,370
to implement Task eight.
83
00:09:46,420 --> 00:09:47,140
See you there.
8026
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.