From 86f3aef7973770b9290997f4099d8710fe6eb63f Mon Sep 17 00:00:00 2001 From: Frank DeMarco Date: Wed, 21 Nov 2018 01:19:29 -0500 Subject: [PATCH] barf --- NS.py | 88 +++++++++++---- OPEN-GAME | 4 +- lib/pgfw | 2 +- resource/Title_border.png | Bin 1924 -> 383 bytes resource/Title_text.png | Bin 4251 -> 2491 bytes resource/scores | 22 +--- resource/scrapeIcons/scrapeIcons_01.png | Bin 0 -> 172 bytes resource/scrapeIcons/scrapeIcons_02.png | Bin 0 -> 174 bytes resource/scrapeIcons/scrapeIcons_03.png | Bin 0 -> 165 bytes resource/scrapeIcons/scrapeIcons_04.png | Bin 0 -> 141 bytes resource/scrapeIcons/scrapeIcons_05.png | Bin 0 -> 147 bytes resource/scrapeIcons/scrapeIcons_06.png | Bin 0 -> 166 bytes resource/scrapeIcons/scrapeIcons_07.png | Bin 0 -> 168 bytes resource/scrapeIcons/scrapeIcons_08.png | Bin 0 -> 161 bytes resource/scrapeIcons/scrapeIcons_09.png | Bin 0 -> 168 bytes resource/scrapeIcons/scrapeIcons_10.png | Bin 0 -> 165 bytes resource/scrapeIcons/scrapeIcons_11.png | Bin 0 -> 157 bytes resource/scrapeIcons/scrapeIcons_12.png | Bin 0 -> 129 bytes resource/scrapeIcons/scrapeIcons_13.png | Bin 0 -> 137 bytes resource/scrapeIcons/scrapeIcons_14.png | Bin 0 -> 168 bytes resource/scrapeIcons/scrapeIcons_15.png | Bin 0 -> 162 bytes resource/scrapeIcons/scrapeIcons_16.png | Bin 0 -> 166 bytes resource/scrapeIcons/scrapeIcons_17.png | Bin 0 -> 169 bytes resource/scrapeIcons/scrapeIcons_18.png | Bin 0 -> 172 bytes resource/scrapeIcons/scrapeIcons_19.png | Bin 0 -> 176 bytes resource/scrapeIcons/scrapeIcons_20.png | Bin 0 -> 145 bytes resource/scrapeIcons/scrapeIcons_21.png | Bin 0 -> 4468 bytes resource/scrapeIcons/scrapeIcons_22.png | Bin 0 -> 5176 bytes serial/serial.ino | 137 ++++++++++++++++++++++++ 29 files changed, 208 insertions(+), 45 deletions(-) create mode 100644 resource/scrapeIcons/scrapeIcons_01.png create mode 100644 resource/scrapeIcons/scrapeIcons_02.png create mode 100644 resource/scrapeIcons/scrapeIcons_03.png create mode 100644 resource/scrapeIcons/scrapeIcons_04.png create mode 100644 resource/scrapeIcons/scrapeIcons_05.png create mode 100644 resource/scrapeIcons/scrapeIcons_06.png create mode 100644 resource/scrapeIcons/scrapeIcons_07.png create mode 100644 resource/scrapeIcons/scrapeIcons_08.png create mode 100644 resource/scrapeIcons/scrapeIcons_09.png create mode 100644 resource/scrapeIcons/scrapeIcons_10.png create mode 100644 resource/scrapeIcons/scrapeIcons_11.png create mode 100644 resource/scrapeIcons/scrapeIcons_12.png create mode 100644 resource/scrapeIcons/scrapeIcons_13.png create mode 100644 resource/scrapeIcons/scrapeIcons_14.png create mode 100644 resource/scrapeIcons/scrapeIcons_15.png create mode 100644 resource/scrapeIcons/scrapeIcons_16.png create mode 100644 resource/scrapeIcons/scrapeIcons_17.png create mode 100644 resource/scrapeIcons/scrapeIcons_18.png create mode 100644 resource/scrapeIcons/scrapeIcons_19.png create mode 100644 resource/scrapeIcons/scrapeIcons_20.png create mode 100644 resource/scrapeIcons/scrapeIcons_21.png create mode 100644 resource/scrapeIcons/scrapeIcons_22.png create mode 100644 serial/serial.ino diff --git a/NS.py b/NS.py index f0421ef..29e4ba4 100644 --- a/NS.py +++ b/NS.py @@ -10,7 +10,7 @@ from serial import Serial, SerialException from serial.tools import list_ports from time import sleep -from pygame import Surface, Color +from pygame import Surface, Color, mixer from pygame.event import clear from pygame.mixer import Sound from pygame.image import load, fromstring @@ -43,6 +43,7 @@ class NS(Game, Animation): FRONT = 300 STEP = .4 IDLE_TIMEOUT = 60000 * 5 + CHANNEL_COUNT = 8 def __init__(self): Game.__init__(self) @@ -58,6 +59,7 @@ class NS(Game, Animation): } }) Animation.__init__(self, self) + mixer.init(44100, -16, self.CHANNEL_COUNT, 4096) self.load_sfx() self.subscribe(self.respond, KEYDOWN) self.subscribe(self.respond, KEYUP) @@ -107,6 +109,7 @@ class NS(Game, Animation): name = self.get_configuration("input", "arduino-port") try: transmission = self.serial_reader.readline().strip() + print transmission except SerialException: print "Serial not ready... passing..." transmission = "" @@ -114,6 +117,7 @@ class NS(Game, Animation): try: self.serial_data = int(transmission, 2) except ValueError: + print "Value error checking four digit serial transmission" self.handle_garbage(transmission) self.reset_arduino() self.idle_elapsed = 0 @@ -121,6 +125,7 @@ class NS(Game, Animation): try: int(transmission, 2) except ValueError: + print "Received a non-four digit serial transmission" self.handle_garbage(transmission) else: self.serial_data = 0 @@ -265,13 +270,13 @@ class Meter(GameChild): def __init__(self, parent): GameChild.__init__(self, parent) - def setup(self, background, rect, indent, color, units): + def setup(self, background, rect, indent, color, units, path): self.background = background self.rect = rect self.icons = [] x = rect.left + indent base = get_color_swapped_surface( - load(self.get_resource("HUD_circle.png")).convert_alpha(), + load(self.get_resource(path)).convert_alpha(), (0, 0, 0), color) while x <= self.rect.right - base.get_width() - self.SPACING: icon = Sprite(self) @@ -416,7 +421,7 @@ class Title(GameChild): # self.first_pressed = False # self.first_pressed_elapsed = 0 # self.buttons[0].unhide() - self.border.update() + self.border.update() self.text.update() self.draw_scores() for button in self.buttons: @@ -539,6 +544,11 @@ class Introduction(Animation): def __init__(self, parent): Animation.__init__(self, parent) + self.words = [] + for word in "hey you lizard slime bag show me you can scrape".split(" "): + font = Font(self.get_resource(Dialogue.FONT_PATH), 96) + sprite = RainbowSprite(self, font.render(word, True, (255, 0, 0)), 30) + self.words.append(sprite) self.tony = load(self.get_resource("Big_Tony.png")).convert() self.skateboard = Sprite(self) self.skateboard.load_from_path(self.get_resource("Introduction_skateboard.png"), True) @@ -551,7 +561,7 @@ class Introduction(Animation): self.tony_avatar = load(self.get_resource("Introduction_tony_avatar.png")).convert() self.advance_prompt = AdvancePrompt(self) self.skip_prompt = SkipPrompt(self, self.start_wipe) - self.register(self.start, self.move_board, self.take_board) + self.register(self.start, self.move_board, self.take_board, self.speak) def reset(self): self.deactivate() @@ -561,8 +571,12 @@ class Introduction(Animation): self.skateboard.hide() self.text_index = 0 self.tutorial_index = 0 + self.words_index = 0 self.advance_prompt.reset() self.skip_prompt.reset() + for word in self.words: + word.location.center = self.get_display_surface().get_rect().centerx, 100 + word.hide() def deactivate(self): self.active = False @@ -570,8 +584,18 @@ class Introduction(Animation): def activate(self): self.active = True self.play(self.start, delay=3000, play_once=True) + self.words[0].unhide() + self.play(self.speak) # self.get_game().platform.unpress() + def speak(self): + for ii in xrange(self.words_index + 1): + self.words[ii].move(0, 12) + if ii == self.words_index and self.words[ii].location.bottom > self.get_display_surface().get_rect().bottom - 40: + if self.words_index < len(self.words) - 1: + self.words_index += 1 + self.words[self.words_index].unhide() + def start(self): self.advance_prompt.cancel_first_press() dialogue = self.get_game().dialogue @@ -620,7 +644,7 @@ class Introduction(Animation): def update(self): if self.active: Animation.update(self) - dialogue = self.get_game().dialogue + # dialogue = self.get_game().dialogue wipe = self.get_game().wipe if not wipe.is_playing() and not self.is_playing(self.start) and not self.text_index == 2: if self.advance_prompt.check_first_press(): @@ -648,27 +672,30 @@ class Introduction(Animation): self.start_wipe() # self.get_game().platform.unpress() self.advance_prompt.cancel_first_press() - elif self.text_index == 2: + elif not wipe.is_playing() and self.text_index == 2: platform = self.get_game().platform if platform.get_edge_pressed() == self.TUTORIAL_MOVES[self.tutorial_index]: self.tutorial_index += 1 self.get_game().sfx["land_0"].play() if self.tutorial_index == len(self.TUTORIAL_MOVES): - self.text_index += 1 - self.advance_prompt.cancel_first_press() + # self.text_index += 1 + # self.advance_prompt.cancel_first_press() platform.set_glowing([]) - dialogue.show_text(self.TEXT[self.text_index]) + self.start_wipe() + # dialogue.show_text(self.TEXT[self.text_index]) else: platform.set_glowing(platform.get_buttons_from_edges( [self.TUTORIAL_MOVES[self.tutorial_index]])) self.get_display_surface().blit(self.tony, (0, 0)) self.slime_bag.update() self.skateboard.update() + for word in self.words: + word.update() self.get_game().platform.update() - self.get_game().dialogue.update() - if not wipe.is_playing() and not self.is_playing(self.start) and \ - not self.text_index == 2: - self.advance_prompt.update() + # self.get_game().dialogue.update() + # if not wipe.is_playing() and not self.is_playing(self.start) and \ + # not self.text_index == 2: + # self.advance_prompt.update() if not wipe.is_playing() and not self.text_index == 2: self.skip_prompt.update() @@ -1146,7 +1173,7 @@ class Chemtrails(Sprite): if not boss.is_playing(boss.show_introduction_dialogue): self.timer.update() self.life.update() - self.boys.update() + # self.boys.update() def attack(self): boss = self.get_game().boss @@ -1216,7 +1243,7 @@ class Timer(Meter): rect = background.get_rect() rect.bottomright = dsr.right - 6, dsr.bottom - 4 self.setup(background, rect, 53, (0, 0, 255), - self.get_configuration("time", "timer-start-time")) + self.get_configuration("time", "timer-start-time"), "scrapeIcons/scrapeIcons_07.png") def add_time(self, amount): self.change(amount) @@ -1233,7 +1260,7 @@ class Life(Meter): background = load(self.get_resource("HUD_health.png")).convert() rect = background.get_rect() rect.bottomleft = 172, dsr.bottom - 4 - self.setup(background, rect, 70, (255, 0, 0), 3) + self.setup(background, rect, 70, (255, 0, 0), 3, "scrapeIcons/scrapeIcons_03.png") def decrease(self): self.get_game().sfx["hurt"].play() @@ -1252,7 +1279,7 @@ class Boys(Meter): background = load(self.get_resource("HUD_lives.png")).convert() rect = background.get_rect() rect.bottomleft = 6, dsr.bottom - 4 - self.setup(background, rect, 60, (0, 255, 0), 3) + self.setup(background, rect, 60, (0, 255, 0), 3, "scrapeIcons/scrapeIcons_01.png") class Boss(Animation): @@ -1355,7 +1382,8 @@ class Boss(Animation): def combo(self): self.queue = None - self.get_game().reset_arduino() + if self.get_game().serial_enabled(): + self.get_game().reset_arduino() self.play(self.brandish, delay=2500, play_once=True) def brandish(self): @@ -1798,10 +1826,24 @@ class Health(Meter): def __init__(self, parent): Meter.__init__(self, parent) dsr = self.get_display_surface().get_rect() - background = load(self.get_resource("HUD_boss.png")).convert() - rect = background.get_rect() - rect.midtop = dsr.centerx, self.OFFSET - self.setup(background, rect, 52, (255, 0, 255), 100) + self.background = load(self.get_resource("HUD_boss.png")).convert() + self.rect = self.background.get_rect() + self.rect.midtop = dsr.centerx, self.OFFSET + + def setup(self): + level_index = self.get_game().boss.level_index + if level_index == 0: + icon_index = 22 + elif level_index == 1: + icon_index = 17 + elif level_index == 2: + icon_index = 19 + Meter.setup(self, self.background, self.rect, 52, (255, 0, 255), 100, + "scrapeIcons/scrapeIcons_%i.png" % icon_index) + + def reset(self): + self.setup() + Meter.reset(self) def decrease(self, damage): self.change(-damage) diff --git a/OPEN-GAME b/OPEN-GAME index add93e7..39f0315 100755 --- a/OPEN-GAME +++ b/OPEN-GAME @@ -32,8 +32,8 @@ def move_to_executable(): if is_python_3(): launch_alternative(["python2", "python2.7", "python2.6"]) -if maxint >> 33: - launch_alternative(["python-32", "python2-32", "python2.7-32", "python2.6-32"]) +# if maxint >> 33: +# launch_alternative(["python-32", "python2-32", "python2.7-32", "python2.6-32"]) if not can_import("pygame"): launch_alternative(["python2.7", "python2.6"]) diff --git a/lib/pgfw b/lib/pgfw index 41b4df6..498755e 160000 --- a/lib/pgfw +++ b/lib/pgfw @@ -1 +1 @@ -Subproject commit 41b4df6326afbad64aa5dc00ac5d3dc854e8096f +Subproject commit 498755ef0e4cadfe3784363e5eb0ec1aff016631 diff --git a/resource/Title_border.png b/resource/Title_border.png index 7ba251c5837b815d4ba0d1f37821b32c9bf350fa..3721aeb42a408a138b80eba83036c33c1ec99c64 100644 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0y~yU@Ql+-8k5Qr1``vPC$yYz$3Dlfq`2Xgc%uT&5;1A zGW2wD45_&F_J$$fAqO5;$Mx^)(}P{PHn2E~MjJm}R{ZhHR8c`u>D%rMd8x5`rmtW= z(^bP|?NI+UbLVybV)=&Otbgyk6%`C!#AlGTb@^7l3%A$Zera!gV2|qjFd+GLo*$Dz z{|@F3YlcUB4Lg_>-Z6Ao!)S<5$8KSu7;b4~DWEE_32@a2L!pKtt46g4s1ZqZ{jt4w zm=`R)UiZ96xFIksr|xvbdxpK?zXgBn`o-a}eue$fyIJfn-rAhF9K=3D^xO8Q|8n0k e7rb8~FE_hgvVK+KQdwY#GI+ZBxvXaB^>EX>4U6ba`-PAZ2)I zW&i+q+O1bxmgFi9{AU%j1cVTRtDT(^KJaT zPV*t|IAi3+gEfw7r;=ipsuOmz6@R*K#9+^ zf>ZG)xYu*Ki5h#Hl;ess4xE!3CE{q5X$9(Jv}xfwX~M^xc2ZnZnu*U?Wlb$jj!c~W zBumPT7gtU^(|=~>95_9Ep<}lldy^_GFT$&duoz*=w`cg>3x9H&%?ON$986G87r`kx z59Bbi|Kc?eLU!X#4#4;GafA=VG8mKtb47qXj%$e_^wbs~0WjVZTrYi*E@v$rm1Ni! zI718yVj&hP6g4F!%A6_)>hL^qP6G^(NLp|*W#$5IDt~kY+nA$t-c6FOaij|P5iYFY zrf~;ZIScfoxk5u-Sh9!|QK{0Thr%TnDWz!foa@S(RkWyT)uz32%~fitT5D~!x6~LZ zDXlbZwYAneZ1xpk33|Qp`(sA`h%ULbW9^7`;6wWVSjDp0HZeIstti6T>(g0F;B#T1W`7D zljaHAV(HEAFlN@`QbVaSuwt_+JW|w8_7{4rea^nMOYY=gV^1lo^J-H!8%b8ru_g&9 z)mb=|mh$R&O-sOUF2~XY?Y(1tgRzZ7!(e9vp>YYWy5U-)?(bHRBP6~8p&g+G^JX)Oyq{jY38n3jQAU$N5h8nxfTI}A`^?`Drtcj6E=kTM_u z9NQK#>{V7E>Hx!P2LseQ1X~>WSGdPtk$-nl!R|pm0Jjml*z9BP_!)QaAYkLd{dMpU z)Wa9L-(v2pT|6G#Z>T?m4&W4Q&JK;36HI?eDUa1G#(u+!LJ8RlWgtiJ}Geb3AzEP&! zfM%NAtGAJ2YC$tg+=6eiqn9?yDwyne0QsGwOJK{qJch4m#lX3Aef=!>!y)m2vxu<4 zft+nihD}X2K_)>l(i>Xa?Dyy!UVmJ}y9YnLUJJ>JAQ2K|-*U|pFyP01QKZe6c%fG=qK2g6# z&sSCT=)(p2Tf1*iciKPW9$t#=rOj^;2j0O+{Wr87J|g`$+78c@{C_)bhj%uAs_pPq zVEjVc_G22W#KUcUJ@s;QkL)?>rnZMhnvb008_+L_t(|+U?je z4#OZ2MZsO)|IV9=2uCHvN(t+k&d^ajeK{kdVqtj*z*h3+yhI(KSL82Y2RL8-TJH7d z)CXYisK4W0q7Kj|@);k$WdP_QYYM*A4$x!0TkZf2iIK}3e}K4q0swIbK->WkcL2m4 z0C5KpcL2m40C5LE+yM}G0C5LE+yM}G0K^>taR)%$0mK~uaR)%$0T6cp#2rA~0T6cp z#2o-}2SD5b5O;v5#672v@*V(3n){uWJ3vo4f?taZ0M1$LbGviC^IHbs?6p2z);d71 kuzxN0yQvSr82(WoUP5;mS_@;UCjbBd07*qoM6N<$f`K8LUjP6A diff --git a/resource/Title_text.png b/resource/Title_text.png index 676bd3fd2b960783a58873d8fa058fd44ed43fd2..23a6def8fd10a267278cfd325c6c607a486b44b7 100644 GIT binary patch literal 2491 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 BpM3xT delta 4245 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 diff --git a/resource/scores b/resource/scores index d86a992..d25ae8f 100644 --- a/resource/scores +++ b/resource/scores @@ -15,22 +15,6 @@ 171204 256769 312561 -242763 -230604 -234298 -335281 -156682 -234931 -184682 -237113 -254185 -209634 -150791 -200320 -148060 -159544 -193185 -246109 -171802 -150366 -248085 +137266 +125811 +127948 diff --git a/resource/scrapeIcons/scrapeIcons_01.png b/resource/scrapeIcons/scrapeIcons_01.png new file mode 100644 index 0000000000000000000000000000000000000000..a8efad2cddcbb4d88e07ad7eaceace047ab0bd57 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!3-Qg7DL=Mp8z10=;`7Z zqA_vrL_@v<1{}=&TFn3Jb(7m&Se#Z~SvqgRMxE1QtOp_j%=n6Yybecyez;x6FE8w* zV`CUs!|I3sCueCaJ)H9(xuHB+zhYxn4#wOW!e%!% R=4=O9>gnp|vd$@?2>>{>Iw=4E literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_02.png b/resource/scrapeIcons/scrapeIcons_02.png new file mode 100644 index 0000000000000000000000000000000000000000..ed39faf06134e909836ca106638a6287d11c09a9 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP+0(@_ zL}TLAiH<@C6gZft`~Cm_^h?0n1rIOGnUTWo$i(7cpfati(%)M%EPv6HTS>M{vu-Bw zOjv5UXxjr9-Y>5<<+W$&N$~wp`up1JzD3ZMG~1Vl0{xwqZe3bf(`&oN{iWXrhTHda U*>6c0tpnNX>FVdQ&MBb@05GjTMF0Q* literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_03.png b/resource/scrapeIcons/scrapeIcons_03.png new file mode 100644 index 0000000000000000000000000000000000000000..d030ab13f09af9f452ec27e60026e02d9a2c5df4 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP%G1R$ zL}TL8iH>{?1{^Hy$Ntw>?(GQhGIjGi`=(4WL4l!XwaXP2es`};-vm@|*)0mqi`r`B zp!r&1@zVOWKO(A3Yy4_C_AT|ey5}=n-`ov#ag%Qy{ucI!W$OH8-_`$o6FYGaWSyt0 KpUXO@geCxEw>wJ! literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_04.png b/resource/scrapeIcons/scrapeIcons_04.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9776e0181d556c2c4e74cc764401f99f887ed8 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxNF$PC68SxyJX}{4Mu3Y>T?x lwYv4~g}9@&_wqHrHgL8v2>tb_YB~cl*3;F`Wt~$(69DP^F)aW9 literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_05.png b/resource/scrapeIcons/scrapeIcons_05.png new file mode 100644 index 0000000000000000000000000000000000000000..4d49d08f43a3f555c060ce050567d86bceb8d42d GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxNF!_&nv zL}TLCNrrq33LMPQ|NcL>>QZv@NogulG#3Y$ZW{!9bdU;lJ~e7cxLP+SA1` zL}TL8iPn4v6nLE9cKwdOIXCK4p~|YN1P?hrLzWiZMOo$HZC5UYTrV!uySCM7YV+!@ z`X@KU1P+|${rao>)KaruvrP8cK8U@~!@G9M>ZPH251%Ag-&*{dH-Dq7&^hT_t|0q7 MUHx3vIVCg!0B!a>#3Y$ZW{!9bdU;lJ~e7cxLP*3-o? zL}TL8i3j-(C~!D;Km1?6(^^-o>*SfL4*~NuR2h=AFKk^MsVEgyvu}CvE90ZR&f(ks zooeNEP`LKx#TsrC^~sZN2~4|eZ?_?(CSG(&NRe#jHt!#sBK&{f_{vx>BqwU|SM5E> NMo(8imvv4FO#rynJK_KU literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_08.png b/resource/scrapeIcons/scrapeIcons_08.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6af00b76f2a87b1134e3df4aef81025075c1e5 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP%+tj& zL}TL8i3j-@1bCdIKmOkzqiz`8>B7(Vb&4osV&{pd-L>r@7tUUf(H5`$`ry-qRa4|G zr!lf@*y+8uE^z0yeZhMrj_sdv^vdemMVA!!)a2y;o?*qH6eKICJYmslkX4?pelF{r G5}E+Ut~gi# literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_09.png b/resource/scrapeIcons/scrapeIcons_09.png new file mode 100644 index 0000000000000000000000000000000000000000..e57f4bd173c927c64329fc3c2d62e66a2e5c05bb GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP*3-o? zL}TLAKu5j<3LM$I|Nj@2-&)de@=3y$DO{}$8=6;a-270*bk)PE^XE?QP+DlSV%3Yy zrn>u!ednJmbmXnCOXF1*dzEphmRY;^et7E?qj>jiUV{I0wprJQ)H0L{$%-+a=inI)MNH literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_10.png b/resource/scrapeIcons/scrapeIcons_10.png new file mode 100644 index 0000000000000000000000000000000000000000..771e0da4484a1149f2af5073e30308f5ed596831 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP%G1R$ zL}TLANeB53C~!ERKJ@>8QTZ*M0O7X>oqwxvusP_k?h2bF`pBXC{QEg`e)$w82TxtQ z@9C7jbYbbG#-)5|OdB@7TGVL$rT$-xsEStcR+HPRb9Btk?LW<}-6bP-?$|d0kaeD} KelF{r5}E)HW;#v) literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_11.png b/resource/scrapeIcons/scrapeIcons_11.png new file mode 100644 index 0000000000000000000000000000000000000000..2eadc21c40e42674e3471381363fd5cfb6290aa6 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP$kW9! zL}TLAiJp813^oxO~)T(ofb!8WY zeX*IVt@>qI%PFzd-#%)-jl8niFJ?pCo&=Bhq;9z?TVeil&qX~!)_A)5xvX#3Y$ZW{!9bdU;lJ~e7cxNF%+tj& zL}Oxdf`XKRkpU3=QIAr+xa?p1M3yOr6SK6K^W2q>TwLRJtzq5FX?zRHI3_S;2ybK% WlNaQ)xEOl{WR$0?pUXO@geCx$A0wIo literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_13.png b/resource/scrapeIcons/scrapeIcons_13.png new file mode 100644 index 0000000000000000000000000000000000000000..e246dbe21be2a8e3fad82d017e991a928a6164a8 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxNF&eO#) zL}Oxd!UEQWl!PDr%A6X>N>@WTni*%`#3Y$ZW{!9bdU;lJ~e7cxLP*3-o? zL}Oy#3Y$ZW{!9bdU;lJ~e7cxLP+|$J| zL}TLIiPn4#20YI30?yU{52w8iSmE_ls%5!H<+e|p8Vo9aq87S^j#3Y$ZW{!9bdU;lJ~e7cxLP+SA1` zL}TLIiQZfch8)iEr|$eeb?z9W{njZbom4s<0~0Kc$mLZuon%|RIz3n_qH@=p3o~bB zS+^ZE{TIPMeW%KX^>PXu_BBKazuCF4_K0d})`?X`XIA&mne^fh_jMmBfnCSvSc2^H MboFyt=akR{03zZ%F#rGn literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_17.png b/resource/scrapeIcons/scrapeIcons_17.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0bc489494cbc9b69ecef5849538f20b1fad9ed GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP&eO#) zL}TLIiGh3v6nLBtR{YoA++TXE?1s*3^?gbjjEZd^gb&cHtI-Ph}@RgsoaV zr>XJ$XZGA#nG3VzUyE^OL^1ESl>7Q6G%<2h)U4CgTe~DWM4fGDto1 literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_18.png b/resource/scrapeIcons/scrapeIcons_18.png new file mode 100644 index 0000000000000000000000000000000000000000..86b92c6311778d2a02742be298e6dafaf6bcc44d GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP(bL5- zL}Oy>L{A|GMGj`+tbhMgpFKFVswgm7IH05aMZ^pK_6H0s7p5NIJH)0U=2a44bL!H` zFp&i=P0xJ`_TFeec0cL$E%z$1Y4LCGam6k(Xk721)Ah4@QPu2u|CXM+mRIlMBQ3K3 RgU2qAt)8xaF6*2UngDlmKMDW< literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_19.png b/resource/scrapeIcons/scrapeIcons_19.png new file mode 100644 index 0000000000000000000000000000000000000000..bad2e920fc0dc624532bb2e60e8ac6a96c219570 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxLP)zif> zL}OxY&}}{kMUJLx|Nk33f2k2CmYvI`8OhSZa&h9DwMx91&p2P)mse2GH{um*_H^}gS?83{1OTl|Jahm6 literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_20.png b/resource/scrapeIcons/scrapeIcons_20.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7f0a1e4529973102d6b655e2638f229149da45 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3Y$ZW{!9bdU;lJ~e7cxNF&C|s( zL}TLA37&im1{_Qa|Nq~-H;H*;RiX4njyG!?Ze1}y6#sRmb)(tFMYob8k^+kRL+4Iy q6SF>Uw^;M*AC)uD4jp(eAGiD9Ws%>9qdi^yT-G@yGywptDl)nN literal 0 HcmV?d00001 diff --git a/resource/scrapeIcons/scrapeIcons_21.png b/resource/scrapeIcons/scrapeIcons_21.png new file mode 100644 index 0000000000000000000000000000000000000000..3000e7da34dfed6eabc8c5a4c0008eccf2134067 GIT binary patch literal 4468 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 madtp1rz7S#Ch+#`T=WB)8Z8Z=4=5r40000= 0; kk--) + { + if (kk == ii || kk == jj) + { + Serial.print(1); + } + else + { + Serial.print(0); + } + } + Serial.print("\n"); + received_input = true; + break; + } + } + + + // if (received_input) + // { + // break; + // } + } + */