|
| 1 | +# Bombly - Keep Talking and Nobody Explodes Robot |
| 2 | + |
| 3 | +## Product |
| 4 | + |
| 5 | +[Hardcore Bomb1](https://www.youtube.com/watch?v=ydQEb6zyAuE) |
| 6 | + |
| 7 | +This is a "expert" robot written in Python to assist in playing Keep Talking and Nobody Explodes. |
| 8 | + |
| 9 | +In its traditional form, the bomb defuse talks with an expert who holds the [Bomb Manual](http://www.bombmanual.com). Based on the information given by the defuser, the expert scrambles through the manual give information back to the defuser to correctly secure the bomb. |
| 10 | + |
| 11 | +This is just a problem waiting to be solved with Python. Below is my attempt to solve this problem. |
| 12 | + |
| 13 | +WARNING: This does ruin the fun of the game. You have been warned! |
| 14 | + |
| 15 | +## Installation |
| 16 | + |
| 17 | +### Windows only |
| 18 | + |
| 19 | +Install dragonfly |
| 20 | + |
| 21 | +``` |
| 22 | +git clone https://github.com/t4ngo/dragonfly |
| 23 | +cd dragonfly |
| 24 | +python setup.py install |
| 25 | +``` |
| 26 | + |
| 27 | +Start the bot |
| 28 | + |
| 29 | +``` |
| 30 | +python dfly-loader-wsr.py |
| 31 | +``` |
| 32 | + |
| 33 | +I believe dragonfly should work with Dragon NaturrallySpeaking, however, I did not use it. |
| 34 | + |
| 35 | +## Commands available |
| 36 | + |
| 37 | +The general idea is to speak a `command` then a series of words about that command. |
| 38 | + |
| 39 | +### Bomb variables |
| 40 | + |
| 41 | +``` |
| 42 | +batteries <#> - Number of batteries on bomb |
| 43 | +serial <#> - Last digit of serial |
| 44 | +vowel <true/false> - Vowel in serial number |
| 45 | +car <true/false> - CAR indicator on bomb |
| 46 | +freak <true/false> - FRK indicator on bomb |
| 47 | +parallel <true/false> - Parallel port on bomb |
| 48 | +``` |
| 49 | + |
| 50 | +### Metabomb |
| 51 | + |
| 52 | +``` |
| 53 | +bomb reset - Reset global bomb variables |
| 54 | +bomb status - Print current values of global attributes |
| 55 | +``` |
| 56 | + |
| 57 | +### Simple Wires |
| 58 | + |
| 59 | +``` |
| 60 | +simple wires <wires> - Where wires is in (red, blue, yellow, black, white, yellow) |
| 61 | +``` |
| 62 | + |
| 63 | +Example: |
| 64 | + |
| 65 | +``` |
| 66 | +simple wires red red blue blue yellow black |
| 67 | +``` |
| 68 | + |
| 69 | +### Complex Wires |
| 70 | + |
| 71 | +``` |
| 72 | +complex wires <wires> - Where wires is in (light, red, blue, star, blank, next) |
| 73 | +``` |
| 74 | + |
| 75 | +Seperate each wire from left to right with `next`. `blank` is the reserved word for no attributes |
| 76 | + |
| 77 | +Example: |
| 78 | + |
| 79 | +``` |
| 80 | +complex wires red next blue star next light red blue star next blank |
| 81 | +
|
| 82 | +4 Wires: |
| 83 | +Red |
| 84 | +Blue with Star |
| 85 | +Red/Blue with Light/Star |
| 86 | +No attributes |
| 87 | +``` |
| 88 | + |
| 89 | +### Maze |
| 90 | + |
| 91 | +``` |
| 92 | +maze <coords> - Where coords are 3 pairs of numbers for indicator, start, stop |
| 93 | +``` |
| 94 | +Note: Coords start at upper left (1, 1) and go horizontally then vertically. |
| 95 | + |
| 96 | + |
| 97 | +Example maze and command: |
| 98 | + |
| 99 | +``` |
| 100 | +X O X X |
| 101 | +X X X X |
| 102 | +S X X X |
| 103 | +X X X F |
| 104 | +``` |
| 105 | + |
| 106 | +``` |
| 107 | +maze 2 1 1 3 4 4 |
| 108 | +``` |
| 109 | + |
| 110 | +### Simon |
| 111 | + |
| 112 | +``` |
| 113 | +simon <colors> - Where colors are in (red, blue, yellow, green) |
| 114 | +``` |
| 115 | + |
| 116 | +Example: |
| 117 | + |
| 118 | +``` |
| 119 | +simon red blue blue red |
| 120 | +``` |
| 121 | + |
| 122 | +### Wire sequence |
| 123 | + |
| 124 | +Say each wire in increasing order. |
| 125 | + |
| 126 | +``` |
| 127 | +wire sequence <color destination> - where color in (red, blue, black) and destination in (apple, bravo, charlie) |
| 128 | +``` |
| 129 | + |
| 130 | +Example: |
| 131 | + |
| 132 | +``` |
| 133 | +1 -blue-- A |
| 134 | +
|
| 135 | +2 -red--- B |
| 136 | +
|
| 137 | +3 -black- C |
| 138 | +``` |
| 139 | + |
| 140 | +``` |
| 141 | +wire sequence blue apple red blue black charlie |
| 142 | +``` |
| 143 | + |
| 144 | +If two wire sequences in the same bomb, be sure to reset the wire sequence state between sequences. |
| 145 | + |
| 146 | +``` |
| 147 | +wire sequence reset |
| 148 | +``` |
| 149 | + |
| 150 | +### Button |
| 151 | + |
| 152 | +Step 1: |
| 153 | +``` |
| 154 | +button <color of button> <word> |
| 155 | +``` |
| 156 | + |
| 157 | +If press and hold: |
| 158 | + |
| 159 | +``` |
| 160 | +button color <color of strip> |
| 161 | +``` |
| 162 | + |
| 163 | +### Memory |
| 164 | + |
| 165 | +``` |
| 166 | +memory <display> <numbers from left to right> |
| 167 | +``` |
| 168 | + |
| 169 | +Example: |
| 170 | + |
| 171 | +``` |
| 172 | + 4 |
| 173 | + 2 3 4 1 |
| 174 | +``` |
| 175 | + |
| 176 | +``` |
| 177 | +memory 4 2 3 4 1 |
| 178 | +``` |
| 179 | + |
| 180 | +If two memory modules in the same bomb, be sure to reset the memory state: |
| 181 | + |
| 182 | +``` |
| 183 | +memory reset |
| 184 | +``` |
| 185 | + |
| 186 | +### Morse |
| 187 | + |
| 188 | +``` |
| 189 | +morse <0/1 for one letter> - Where 0 is short and 1 is long |
| 190 | +``` |
| 191 | + |
| 192 | +Rules for morse: |
| 193 | +* Give the morse module one morse letter at a time. |
| 194 | +* Be sure the letters are in succession of each other. |
| 195 | +* Only three letters are necessary. |
| 196 | + |
| 197 | +Example: |
| 198 | + |
| 199 | +``` |
| 200 | +-... ... -.-. |
| 201 | +``` |
| 202 | + |
| 203 | +``` |
| 204 | +morse 1 0 0 0 |
| 205 | +morse 0 0 0 |
| 206 | +morse 1 0 1 0 |
| 207 | +``` |
| 208 | + |
| 209 | +If two morse modules in the same bomb, be sure to reset the morse state: |
| 210 | + |
| 211 | +``` |
| 212 | +morse reset |
| 213 | +``` |
| 214 | + |
| 215 | +### Symbols |
| 216 | + |
| 217 | +``` |
| 218 | +symbols <symbols> |
| 219 | +``` |
| 220 | + |
| 221 | + |
| 222 | + |
| 223 | +``` |
| 224 | +tennis, a, l, lightning, kitty, h, c |
| 225 | +``` |
| 226 | + |
| 227 | + |
| 228 | + |
| 229 | +``` |
| 230 | +e, tennis, c, o, star, h, question |
| 231 | +``` |
| 232 | + |
| 233 | + |
| 234 | + |
| 235 | +``` |
| 236 | +copyright, butt, o, k, r, l, star |
| 237 | +``` |
| 238 | + |
| 239 | + |
| 240 | + |
| 241 | +``` |
| 242 | +six, paragraph, b, kitty, k, question, smile |
| 243 | +``` |
| 244 | + |
| 245 | + |
| 246 | + |
| 247 | +``` |
| 248 | +goblet, smile, b, c, paragraph, three, star |
| 249 | +``` |
| 250 | + |
| 251 | + |
| 252 | + |
| 253 | +``` |
| 254 | +six, e, equals, smash, goblet, n, omega |
| 255 | +``` |
| 256 | + |
| 257 | +### Who's on First |
| 258 | + |
| 259 | +Now for the fun module. This was is still a work in progress (check out the code for all of the cases) |
| 260 | + |
| 261 | +``` |
| 262 | +words one <words> - Step 1 of Who's on First, lookup position |
| 263 | +``` |
| 264 | + |
| 265 | +``` |
| 266 | +words two <words> - Step 2 of Who's on First, start giving words from lookup table |
| 267 | +``` |
| 268 | + |
| 269 | +Below is the table of what spoken words coorelate to the words necessary to complete the challenge. |
| 270 | + |
| 271 | +``` |
| 272 | +you are words: you are |
| 273 | +your words: you are |
| 274 | +done: done |
| 275 | +don: done |
| 276 | +you are letters: ur |
| 277 | +sure: sure |
| 278 | +shore: sure |
| 279 | +you word: you |
| 280 | +hold: hold |
| 281 | +you letter: u |
| 282 | +yes: yes |
| 283 | +first: first |
| 284 | +display: display |
| 285 | +okay: okay |
| 286 | +OK: okay |
| 287 | +says: says |
| 288 | +nothing: nothing |
| 289 | +literally blank: |
| 290 | +blank: blank |
| 291 | +no: no |
| 292 | +L. E. D.: led |
| 293 | +lead: lead |
| 294 | +mead: lead |
| 295 | +read: read |
| 296 | +red short: red |
| 297 | +read too: reed |
| 298 | +hold on two: hold on |
| 299 | +you're word: your |
| 300 | +your word: your |
| 301 | +your mark: you're |
| 302 | +you are marked: you're |
| 303 | +you are mark: you're |
| 304 | +c s: see |
| 305 | +they are words: they are |
| 306 | +e i r: their |
| 307 | +e r e: there |
| 308 | +they are marked: they're |
| 309 | +they mark: they're |
| 310 | +c s : see |
| 311 | +c letter: c |
| 312 | +see letter: c |
| 313 | +c c : cee |
| 314 | +ready: ready |
| 315 | +yes: yes |
| 316 | +what no mark: what |
| 317 | +three h: uhhh |
| 318 | +left: left |
| 319 | +right: right |
| 320 | +write: right |
| 321 | +middle: middle |
| 322 | +metal: middle |
| 323 | +wait: wait |
| 324 | +press: press |
| 325 | +five letters: uh huh |
| 326 | +four letters: uh uh |
| 327 | +what mark: what? |
| 328 | +done: done |
| 329 | +next: next |
| 330 | +hold: hold |
| 331 | +sure: sure |
| 332 | +like: like |
| 333 | +mike: like |
| 334 | +might: like |
| 335 | +white: like |
| 336 | +light: like |
| 337 | +``` |
| 338 | + |
| 339 | +### Needy knobs |
| 340 | + |
| 341 | +``` |
| 342 | +knobs <0/1 of LEDs> - LEDs of bottom left 3 then upper right 3 |
| 343 | +``` |
| 344 | + |
| 345 | +Example: |
| 346 | + |
| 347 | +``` |
| 348 | + Up |
| 349 | +
|
| 350 | +< . > |
| 351 | +
|
| 352 | + v |
| 353 | +
|
| 354 | +0 1 0 1 0 1 |
| 355 | +1 1 1 0 0 1 |
| 356 | +``` |
| 357 | + |
| 358 | +``` |
| 359 | +knobs 1 1 1 1 0 1 |
| 360 | +``` |
| 361 | + |
| 362 | +### Password |
| 363 | + |
| 364 | +Not implemented...yet. |
0 commit comments