-
-
Notifications
You must be signed in to change notification settings - Fork 142
/
pacgo.slide
191 lines (108 loc) · 3.69 KB
/
pacgo.slide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Pac Man from Scratch
😃👻👻👻👻
21 Jun 2019
Tags: golang, tutorial, pacman
Daniela Petruzalek
Software Engineer, GoCardless
https://github.com/danicat
@danicat83
* A Bit of History
- First version built in 2017
- Designed to be a WWG tutorial
- Hackaton project at Globo.com
- Only in Portuguese :(
.image GOPHER_LEARN.png _ 400
* Terminal Modes
- Cooked Mode
- Cbreak Mode
- Raw Mode
* Terminal Magic
ANSI Escape Sequences:
- A way to send special "commands" to the terminal
- Hex code for ESC (\x1b)
Usually a escape sequence looks like:
- ESC + ] + n number of bytes
https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
* Let's work!
https://github.com/danicat/pacgo
* Step 00: Hello world
.play main.go /^func main/,/^}/
* Step 01: Draw the Maze
.code step01/main.go /^func loadMaze/,/^}/
.code step01/main.go /^var maze/,/^}/
* Step 01: Draw the Maze
.play step01/main.go /^func main/,/process input/
* Step 02: Handle Input
.code step02/main.go /^func clearScreen/,/^}/
.code step02/main.go /^func moveCursor/,/^}/
.code step02/main.go /^func printScreen/,/^}/
* Step 02: Handle Input
.code step02/main.go /^func readInput/,/^}/
* Step 02: Handle Input
.code step02/main.go /^func init/,/^}/
.code step02/main.go /^func cleanup/,/^}/
* Step 02: Handle Input
.code step02/main.go /^func main/,/load resources/
* Step 02: Handle Input
.code step02/main.go /game loop/,/^}/
* Step 03: Add the Player Character
.code step03/main.go /^type Player/,/^var player/
* Step 03: Add the Player Character
.code step03/main.go /^func loadMaze/,/^}/
* Step 03: Add the Player Character
.code step03/main.go /^func readInput/,/^}/
* Step 03: Add the Player Character
.code step03/main.go /^func makeMove/,/^}/
* Step 03: Add the Player Character
.code step03/main.go /case "LEFT"/,/^}/
.code step03/main.go /^func movePlayer/,/^}/
* Step 03: Add the Player Character
.code step03/main.go /^func printScreen/,/^}/
* Step 03: Add the Player Character
.code step03/main.go /process input/,/repeat/
* Step 04: Add the Ghosts
.code step04/main.go /^type Ghost/,/^var ghosts/
* Step 04: Add the Ghosts
- `loadMaze`:
.code step04/main.go /for row, line/,/^}/
* Step 04: Add the Ghosts
.code step04/main.go /^func drawDirection/,/^}/
.code step04/main.go /^func moveGhosts/,/^}/
* Step 04: Add the Ghosts
.code step04/main.go /^func printScreen/,/^}/
* Step 04: Add the Ghosts
.code step04/main.go /process input/,/repeat/
* Step 05: Game Win and Game Over
.code step05/main.go /^var maze/,/^var lives/
* Step 05: Game Win and Game Over
- `loadMaze`:
.code step05/main.go /for row, line/,/^}/
* Step 05: Game Win and Game Over
.code step05/main.go /^func printScreen/,/^}/
* Step 05: Game Win and Game Over
.code step05/main.go /^func movePlayer/,/^}/
* Step 05: Game Win and Game Over
.code step05/main.go /process collisions/,/repeat/
* Step 06: Realtime!
.code step06/main.go /process input/,/game loop/
* Step 06: Realtime!
.code step06/main.go /process movement/,/repeat/
* Step 07: Finally, emojis!
.code step07/config.json
* Step 07: Finally, emojis!
.code step07/main.go /^type Config/,/var cfg/
.code step07/main.go /^func moveCursor/,/^}/
* Step 07: Finally, emojis!
.code step07/main.go /^func loadConfig/,/^}/
* Step 07: Finally, emojis!
.code step07/main.go /^func printScreen/,/^}/
* Step 07: Finally, emojis!
.code step07/main.go /^func main/,/process input/
* Final Words
- The tutorial is still growing beyond step 07
- e.g.: Step 08 deals with command line flags
- Next steps will include tests, interfaces and new game features
- It works both for self paced study and workshops
- Please submit your PRs! :)
- https://github.com/danicat/pacgo