From ad56d514301eea3228728b3f56e9d23a785e6cf7 Mon Sep 17 00:00:00 2001 From: lloan Date: Sun, 4 Aug 2019 15:04:30 -0700 Subject: [PATCH 01/26] august 2019 hack day initial instructions and resources added --- README.md | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8f831f5..907f74b 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,49 @@

- Welcome to the official repository for the IESD Hack Day event. + August 2019 IESD Hack Day event.

## **Getting Started** -Look under branches and find the appropriate month and year for the Hack Day you're participating in. Each branch has its own documentation for getting started. +This repository will have resources to get you prepared for the Hack Day event. + + On the day of the event, this repository will be updated to have the final starter code for the project that will be worked on. If you have any questions, please ask on our [Slack](https://ie-sd.slack.com). We welcome everyone to our Slack, so don't be afraid to join! Have fun coding! **Join our Slack!** + +## **Concepts to Review** +Resources section below has links for these concepts. +- Canvas +- RequestAnimationFrame (JS Method) +- Object Oriented JavaScript +- Prototypal Inheritance +- Sprites +- Keyboard Events + +## **Resources** +List will be updated up until the day of the Hack Day event. +- Making Sprite Based Games with Canvas (2013 article - still relevant) +- HTML5 Canvas Game: 2D Collision Detection +- Adding collision detection to images drawn on canvas on StackOverflow +- Modals in Pure ES6 JavaScript +- KeyboardEvent Value (keyCodes, metaKey, etc) via CSS-Tricks + +### **RequestAnimationFrame** + +The `window.requestAnimationFrame()` method tells the browser that you wish to perform an animation and requests that the browser call a specified function to update an animation before the next repaint. The method takes a callback as an argument to be invoked before the repaint. Read more about this here. + +### **Object-Oriented JavaScript** +Make sure you are comfortable with Object-Oriented JavaScript: + +- What is an object? +- How is an object different from a primitive in JavaScript (e.g., can a primitive have methods?) +- What are some ways to create or instantiate a new object? +- How do you modify properties, or add/remove properties from an object? +- What is a constructor function (or class)? +- What is `this`? What does it refer to and how is it used in different contexts (i.e., in a constructor function, a method, etc.)? +- How do you add a property or method to a constructor's prototype? +- What is prototypal inheritance and how is it implemented? From b45f9dd183c541bce2d467bdb6d6a51db90b6876 Mon Sep 17 00:00:00 2001 From: lloan Date: Sun, 4 Aug 2019 15:06:44 -0700 Subject: [PATCH 02/26] updated wording in getting started section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 907f74b..f8c0050 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ This repository will have resources to get you prepared for the Hack Day event. - On the day of the event, this repository will be updated to have the final starter code for the project that will be worked on. +```On the day of the event, this repository will be updated to have the final starter code.``` If you have any questions, please ask on our [Slack](https://ie-sd.slack.com). We welcome everyone to our Slack, so don't be afraid to join! Have fun coding! From 7668d6dff5ce5bcacf5277f72b8d0a3127ecf3cc Mon Sep 17 00:00:00 2001 From: lloan Date: Sat, 31 Aug 2019 13:46:03 -0700 Subject: [PATCH 03/26] pushing project files --- css/style.css | 3 + engine.js | 185 -------------------------------- images/Gem Blue.png | Bin 0 -> 20160 bytes images/Gem Green.png | Bin 0 -> 24029 bytes images/Gem Orange.png | Bin 0 -> 17342 bytes images/Heart.png | Bin 0 -> 6419 bytes images/Key.png | Bin 0 -> 7455 bytes images/Rock.png | Bin 0 -> 9434 bytes images/Selector.png | Bin 0 -> 22430 bytes images/Star.png | Bin 0 -> 13735 bytes images/char-boy.png | Bin 0 -> 7790 bytes images/char-cat-girl.png | Bin 0 -> 8553 bytes images/char-horn-girl.png | Bin 0 -> 8724 bytes images/char-pink-girl.png | Bin 0 -> 8868 bytes images/char-princess-girl.png | Bin 0 -> 9735 bytes images/enemy-bug.png | Bin 0 -> 12635 bytes images/grass-block.png | Bin 0 -> 8587 bytes images/stone-block.png | Bin 0 -> 6085 bytes images/water-block.png | Bin 0 -> 9210 bytes index.html | 13 +++ js/app.js | 110 +++++++++++++++++++ js/engine.js | 149 +++++++++++++++++++++++++ resources.js => js/resources.js | 6 +- 23 files changed, 279 insertions(+), 187 deletions(-) create mode 100644 css/style.css delete mode 100644 engine.js create mode 100644 images/Gem Blue.png create mode 100644 images/Gem Green.png create mode 100644 images/Gem Orange.png create mode 100644 images/Heart.png create mode 100644 images/Key.png create mode 100644 images/Rock.png create mode 100644 images/Selector.png create mode 100644 images/Star.png create mode 100644 images/char-boy.png create mode 100644 images/char-cat-girl.png create mode 100644 images/char-horn-girl.png create mode 100644 images/char-pink-girl.png create mode 100644 images/char-princess-girl.png create mode 100644 images/enemy-bug.png create mode 100644 images/grass-block.png create mode 100644 images/stone-block.png create mode 100644 images/water-block.png create mode 100644 index.html create mode 100644 js/app.js create mode 100644 js/engine.js rename resources.js => js/resources.js (98%) diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..e28c912 --- /dev/null +++ b/css/style.css @@ -0,0 +1,3 @@ +body { + text-align: center; +} diff --git a/engine.js b/engine.js deleted file mode 100644 index 7fb7b09..0000000 --- a/engine.js +++ /dev/null @@ -1,185 +0,0 @@ -/* Engine.js - * This file provides the game loop functionality (update entities and render), - * draws the initial game board on the screen, and then calls the update and - * render methods on your player and enemy objects (defined in your app.js). - * - * A game engine works by drawing the entire game screen over and over, kind of - * like a flipbook you may have created as a kid. When your player moves across - * the screen, it may look like just that image/character is moving or being - * drawn but that is not the case. What's really happening is the entire "scene" - * is being drawn over and over, presenting the illusion of animation. - * - * This engine makes the canvas' context (ctx) object globally available to make - * writing app.js a little simpler to work with. - */ - -var Engine = (function(global) { - /* Predefine the variables we'll be using within this scope, - * create the canvas element, grab the 2D context for that canvas - * set the canvas element's height/width and add it to the DOM. - */ - var doc = global.document, - win = global.window, - canvas = doc.createElement('canvas'), - ctx = canvas.getContext('2d'), - lastTime; - - canvas.width = 505; - canvas.height = 606; - doc.body.appendChild(canvas); - - /* This function serves as the kickoff point for the game loop itself - * and handles properly calling the update and render methods. - */ - function main() { - /* Get our time delta information which is required if your game - * requires smooth animation. Because everyone's computer processes - * instructions at different speeds we need a constant value that - * would be the same for everyone (regardless of how fast their - * computer is) - hurray time! - */ - var now = Date.now(), - dt = (now - lastTime) / 1000.0; - - /* Call our update/render functions, pass along the time delta to - * our update function since it may be used for smooth animation. - */ - update(dt); - render(); - - /* Set our lastTime variable which is used to determine the time delta - * for the next time this function is called. - */ - lastTime = now; - - /* Use the browser's requestAnimationFrame function to call this - * function again as soon as the browser is able to draw another frame. - */ - win.requestAnimationFrame(main); - } - - /* This function does some initial setup that should only occur once, - * particularly setting the lastTime variable that is required for the - * game loop. - */ - function init() { - reset(); - lastTime = Date.now(); - main(); - } - - /* This function is called by main (our game loop) and itself calls all - * of the functions which may need to update entity's data. Based on how - * you implement your collision detection (when two entities occupy the - * same space, for instance when your character should die), you may find - * the need to add an additional function call here. For now, we've left - * it commented out - you may or may not want to implement this - * functionality this way (you could just implement collision detection - * on the entities themselves within your app.js file). - */ - function update(dt) { - updateEntities(dt); - // checkCollisions(); - } - - /* This is called by the update function and loops through all of the - * objects within your allEnemies array as defined in app.js and calls - * their update() methods. It will then call the update function for your - * player object. These update methods should focus purely on updating - * the data/properties related to the object. Do your drawing in your - * render methods. - */ - function updateEntities(dt) { - allEnemies.forEach(function(enemy) { - enemy.update(dt); - }); - player.update(); - } - - /* This function initially draws the "game level", it will then call - * the renderEntities function. Remember, this function is called every - * game tick (or loop of the game engine) because that's how games work - - * they are flipbooks creating the illusion of animation but in reality - * they are just drawing the entire screen over and over. - */ - function render() { - /* This array holds the relative URL to the image used - * for that particular row of the game level. - */ - var rowImages = [ - 'images/water-block.png', // Top row is water - 'images/stone-block.png', // Row 1 of 3 of stone - 'images/stone-block.png', // Row 2 of 3 of stone - 'images/stone-block.png', // Row 3 of 3 of stone - 'images/grass-block.png', // Row 1 of 2 of grass - 'images/grass-block.png' // Row 2 of 2 of grass - ], - numRows = 6, - numCols = 5, - row, col; - - // Before drawing, clear existing canvas - ctx.clearRect(0,0,canvas.width,canvas.height); - - /* Loop through the number of rows and columns we've defined above - * and, using the rowImages array, draw the correct image for that - * portion of the "grid" - */ - for (row = 0; row < numRows; row++) { - for (col = 0; col < numCols; col++) { - /* The drawImage function of the canvas' context element - * requires 3 parameters: the image to draw, the x coordinate - * to start drawing and the y coordinate to start drawing. - * We're using our Resources helpers to refer to our images - * so that we get the benefits of caching these images, since - * we're using them over and over. - */ - ctx.drawImage(Resources.get(rowImages[row]), col * 101, row * 83); - } - } - - renderEntities(); - } - - /* This function is called by the render function and is called on each game - * tick. Its purpose is to then call the render functions you have defined - * on your enemy and player entities within app.js - */ - function renderEntities() { - /* Loop through all of the objects within the allEnemies array and call - * the render function you have defined. - */ - allEnemies.forEach(function(enemy) { - enemy.render(); - }); - - player.render(); - } - - /* This function does nothing but it could have been a good place to - * handle game reset states - maybe a new game menu or a game over screen - * those sorts of things. It's only called once by the init() method. - */ - function reset() { - // noop - } - - /* Go ahead and load all of the images we know we're going to need to - * draw our game level. Then set init as the callback method, so that when - * all of these images are properly loaded our game will start. - */ - Resources.load([ - 'images/stone-block.png', - 'images/water-block.png', - 'images/grass-block.png', - 'images/enemy-bug.png', - 'images/char-boy.png' - ]); - Resources.onReady(init); - - /* Assign the canvas' context object to the global variable (the window - * object when run in a browser) so that developers can use it more easily - * from within their app.js files. - */ - global.ctx = ctx; -})(this); diff --git a/images/Gem Blue.png b/images/Gem Blue.png new file mode 100644 index 0000000000000000000000000000000000000000..5808a7def6a38f89d78215afa468a6fc70829be9 GIT binary patch literal 20160 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 U0+G1OP5=M^07*qoM6N<$f+S~y=Kufz literal 0 HcmV?d00001 diff --git a/images/Gem Green.png b/images/Gem Green.png new file mode 100644 index 0000000000000000000000000000000000000000..e971d14d799d211f88ec86b53c53e3b49554bbb1 GIT binary patch literal 24029 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 z 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 Qz8q+Za;mbG(x$=x1MPP$9{>OV literal 0 HcmV?d00001 diff --git a/images/Key.png b/images/Key.png new file mode 100644 index 0000000000000000000000000000000000000000..7602326ab2603aad3df85b404c0a8f515b21f7e6 GIT binary patch literal 7455 zcmd5>RZ|-bu*F@17AIHp-JuN<+@UzdrAU!Nk;47% zKe&(g;p~}x*x8-4GrJEbK}SoK5RV2A1qFpr4Wgv?AHV+()i_xH#jpZB{Qn5o9b)2z zfmSY!TMWAD>i~}9d6q13C(ThC3(+z$Z0Z~D zKCp2XFL%FAq%V1W>nbduGXKP_OD@9Mh|f7Uem%Lq(ao(n!&(rwp5=8A-k=c>>Nh4O z|J!jSy9+@Tdnf)!3xfrIGskMRI#qK)XX$|;n^$<7g8-}X=y3L z&R!uf`MKlg^CHQ&dHHX^?tbjk=+O98x5K#2BZh#8}sccyv1lO zRmJM{*`+-sXfCSel?h|1^qIzzw)4N^e<;$sVb#MaMM#%k;ACp$ zU&0HEoHUr*&mq#%A=2nUFNmgO%EI6-B>Cm@;Jfhj3L)WJ7s<4eau$w2nzRCJ=8uC~ z!2&s(pOil-Ybx(FS3v>=DMnL{|FJY-LsNsp1k;$=nU6R9S+}U8_GDF=?{9Tjx9FnN zrQX&vYcKd~53djPGoo%ctypdSO6b^%Wx35NqInF!*_k3#S=au;a(fCKET9fwzIbH1 z)pr{#I89i#*#HEUa#<7K?=D8%`nT2-nxFkC4hv%1j$49=&(l3Vmedj*9*%HPoGDH$jsuZA)iwH7Z`C>pGd++UNt_d&GeoDt~H$p zPn}}2x>tGt18w8z0#doZOoSdfsLjt@)R&ZOx{r1@ZaUpY`e0fj%J@y0@f*J)mO~04 zUCZ*=Dtz1jwY;gm5{$Sn!k_EANNRyTLnLNNMpf6Cj&+<_&+in#36$;K9M=7=(MD^( zSnS}m=B}Pg%XY7N)^`%KYhB}44zvu31)j1Su;N!{0Rm5X`N@C60qJz%gLBh~(ldCt z6>H3zzeJRxdWS4Gg>_u*um@GKS*`d`nMiE>(mJeOfT?amf$?~(=iy>IL~}##b-h=Q z)C}qUI3wD&r%V;2idt!LbS%KQHQ*)6P#`^^YmOQxU_f?uFGGM;^h#qo)$<5-c3$U8cT3CU_cmOpP}%y+$aehES1{+1r6Fn#iU)X=a>>ZWwMv`=vk5rd4*ZvF)bIX!QQ=m>vXw4J)W z)LY&%eUAmNfvucI&=!}sS#1r|Fa8*AY2YPNii#nfyo*#sO*#l@^y)`sh9fHF!Kv)J z)}e}xZ5&qSu>>nE@KXOXt=XRpR2;@VUtOXVc_#Q2ZSXVIoCgRPx)&y&#PYFvUU} zt8Xdqukzy7pD*26$s}IoMKp^|`jU@Y0M#c>*!PVWwXLcpW7PD#du&f|AMlvBJ#>i} zgpMPBf@2i_)3+n*k5GLvLSZiI_Bun$PPHt$X?ffTCBo- z@9=HAaBbn-S1#B9XgqjU$j8R+dDS`4?)g-gKnFcKNo5Y#Uf7E3vceVeR93MqKMJc0 z^)3@K)bvHD8oXJ|)HpbIFKr?r6HznysknoAmANPhT7{9j+S!F}nwT@{y%O_8OS=iO zK#xuvFGg3q_po6xE4f8RXcjEDmCG1Agg_6Tdi?0Z@F0IPd`Box3QxD@aL&N6CNO&l zT&4N2%s*bVk-Z`AX`PIK^?puHG5YFZk}L$IUFWTMGC)V!7ohQCko`KE1HMhu7`D8I z=Jk4U%7;_kdwW)Vo&G~%`%GnD6j%K=uwC@Yw})bh zXD_Bdul;u3At1^tzAuhdAeAfXBdN?fN|Ei#C}B)WdPb&sHzi|@$fJ3NN6cJp%6zsyhs8>DoBrHU^AQoX!Lj*o!@p2FZzR&{ z=dSLOJs_PTBvoNra;v>+SlDcWrob)X3i_>@H8|gtx6+)5Y~po`i@b)X%V<_rf`5ld zj@TLX^%UiWYXAqOMtH&eVKJY#iaG{0%=&9)aEtdQMdO zh-K-M2yxZjA@kYyH&IbdQ9r^3xyScWSl0{+e@rayYR`d{q{tE~M9R42Z&-NDTT)x7R9Ba%xp|YQdTv`F2oSq9H&4Q}I{IQR@% zM4Z@s-A?OoH=Zjnf{gm#>?L$gt@_M`p+L0gEht7_2!VV>xoPJZO#9o+T`)I}7@o*W zPqqyfHMwG=x!zRx_K{^l7SW&Xxug6SIlf3j2i+l+vJ0O`Pd`yT2JQt`pQ|K&7(=I@qoicJ(K*3X?b*vzOyCdMRMYE^Q6Y5h z`C31_N((UKiDCH;cg-#1o-31!KE2#TCWkU5sf+k(c&YNrnbx?vTbHaCB)dPcJgoNLObVa{r=^8QfGW>8K`~WhCiHg*J3V4 zy;nakHr*3azn6@{2YyUzQTo}Bn~v0_#P?nqe<+vWIPvAApzAT-|?@ai?SjgbYL zHno1%9bwD#Wl^WX@m4R^lT?TGA4KL&WS-Ex#e&xwjSH@0Goi|Xyu^@4 zh@F*Lu3eHdG`V3$TLPdCa)WRhfuO2VEbe9+>(8~cwZxiBLAuitH-b>sNhvCpB>YY%R z2u$d@fOAt8mU_8CQODL>W<66Y<%#ETFsp1GDIk1cQ5-sAL(%grtG4l0aS4W1WsNqP90a!w3^tQw*tBpMYzyZZyK6&l_mr z5WbGX8Nr4+#F{RKQ5?<3*glsS2j2QfF(M>M&Vb{KYzjDYha-$uSpthhrGo-8S3v~P zJ$tJ+kvQyfKRA*$vQ0@zuGOtZ?XOs0DBlR{kOS4n2TdGv8sflfZ+JdwYQ?Yae(2b8 z^w{zHtp2RRoBq5uvp(f z4wR<>iYcn^W>Sv8{%c08N=3j@`$bYT2Vz441LZ#j8g<#_d$K0$2} zj58D2%eLgrzlT?CT#g3^E9K6xL~7#3Q@ipseLG__{Ocu=Z(2#**7F7P3jgxVMaoKY z_zgLuD@)=HMR9oaCoM%rtT2~1S+1{Q5pv>TAlMxtK`H0?yxPBWYc9?J4M)xzxn4XC z)2shx72p#B;CWS#ZJ&R}TLzC&QXaepy`Ayb-Y70MEX?4i{RL8=dn_i^3got@x);yG z_zWjbq=lcu@-U&{UxFxVvUj@J_T3@Nl9%n^|cyC~PXjo`Nhw<3|V=0fMD8 znNz!vRb72sakA4GwjeD)OzU?FB_>6*60}j|HuJIqIerUCnK6KJ z_-iVai}_ca&t1!f3C$ujAuchoKBG>i#qwuOl}7N1QHA?eRh;e0F zUN0q8Crew1Zy$V3>`=TW#~d-D0cIKf7|fQLTJ9@FZ^IOk+YVNta^jL<(A5eS9yZs{ z(U(vEVr;&w1!Cv^%e)Pb0cXP_?z+_HQFR9>EON+T(SO9Hw#7H)gB>iCl3ezzlWlS( zfBt^BUGA@=zpZhCZ;Y?~{8d)l7^2JNLg*MXdEEn${6R(=32q4efZg{w-}UjZn=JLJ zqq~k2wMs$m>u$X!Cyr_ZdLU#)->rNDT;r(Oj{!G)|4$6}Eb_)f0 z6!s+1f}nrQ>aw1;HVST@!R%HrYw+q5>MO`{Wv7%VL&sf2>FjS6J%{-XmC7fRNKRw_ zD(~RX=~}~?-drknw2;#M(rc$Lq3iWVLN_2U%3TLR9pE8qxfw^EcK)2FC~iC1L|L|? zs3Me#SA2qlCb;~zLz0{V+H(>tSK)@guJbw3O~*=ibev+T*T-A->EUa9so+EXq*h0N zEfGVs#O}71*aW>Hv2&GMn{^%>t*p7s;U%Z__qik6XW|A5Laa3$dm{VOR)SdR*q-Hd z#g)fQ8*g(&7+oA@A0GP(+>>tH0N4vt+PzX9dQ(qxpOIz+wQ}t4ae{i(we9WW!KZ;M z`oY zuSgIk%03luE;js*{r*=thTh6}7~RXqC!}Zg&uY)qWcOnm7MedT6g>3sc!`3=q;xV# zF^bN(GGPj#KMme&7kIGIY9p(Et&OkG-Kv!3PIk75UV)i`DgCo30f7ye&+BUp-3P+Z z!j@Km^q=nyNO#cVy5R!7fw?}Tk-0uj4bVk=!E>~ZC+p?9miiAd|G_fYoVHCoJ0}sUTgGq&egb)W5R(+TbnMCIm17uNtI;3lDzk)x?2l zDA7A7cVkO!|73Q=R0ySOLINDVd0pIPm5onx=0<(dk(93dj=;f{8Nl>kR zL?wlx$UB9whJQBTr?-p{C|GJQ;%FE4`^j5Xi2?sx(fc!U5YOb0r5pZidx*(p&Xjm~B^KBqw}l z)psI{QQZRXotZhOJ!#j~U%Wl_xcU)>HbhBvhQpyVo1_#ag@&{<6&DmyBh5{i>Lq_` zJiA58h5goM|FF$iWSJqT!e~j~n83E3awHVZa}XZhG5}|M!Wm(Y|JRDm@Fb3+`oq_- zP?(oZMO6DP(=~q#Pqt6)ufjHdEFWE8_yV9j>-WpGPSVO*hOL^~r!^Y0jY`~tX*{|v z@j9~f{Q?nuhww^@%(;Ed3#))1|4@cib{s=lNYpMapcns`V#r}J%5vgGj1C_vS!w|x zP12~BsuP{sB#)-rgBB+#scr3(3ZDhq>3-*wEPF|&gJ2ZvunT25ETBLzsKAUWd6%}^ zxiC9nmSb?2dv6>Nis{U=BLVZ|6Tau3-oY4zt0=$sL#Lh z>Si?!3ZQ3*mwBEl6!`9_Sl5?y6{xk{gQ#$+7qmuU`&pD1zo9v#WJE?{Tv3{B(ACbYfuFQTdg z=c}&SME%=0+z+YhM~V84A8T2sS0D*5Z>(5I=)!gF_S!;jm?+Z%~G=2V40dIqpulAh7-8u22jJffS1QmuJ0&&uD zs0LiT3SUEjlpqzx`NPAHlV!+>a^#e)wwD;mr<2^oMoskul3-CQVC?GS7|QE*UI9i{ z1OB%u$3sO)0|dx0B71^3OkYtFC^cY(Ahy(A=-%r|BvL%4H_0-|+2yrL<6%HHd>R)b zyQoOes8K^a1ZodRoa1RD<+<0NwD$P0t@zFve^xbS0Fm~M1$TyuG8d>hGCbUD=mbEzDocO7G zpVh~E;i*WW%7Z<%Q_UxVun%5Xvawc8_WT4_A6)5cm0rn?y*vFF3l7jnR&-7sb^b$a zn4C*p&cJ(P*`o;J9`(3EaU$m@o-&q@_5Js=f0Cu){liR&y^%!^Ch=OQAp}v~I0TzB z_BSTqY}+RhAp++j9PZX!oG?h>n*Nd=VV%+YwGUiE5DDOEaRqZ>s~wW@hCsUX|2O|Rx}v95S?N}sWNOu z0pi0AH=6f!F|xI)EvN5!J~tj-$|c*2gUxoIbJrioI?#*zHOkgf^$+fP{FD{hD2VWp zR>{5gKvZj8>{a}`2v+_$MqZ+h#?f!fe{G)W6m7L_3iGO|Fs4XDj`X78;iCuxOj{O*=_4gIZD;OBy z#QJW^IX0K?%c6HqYTqxAfl0(D98fO1l%821aF>X}!JLMDxj1P)_)Cqu2@Q^*=d*6O zMCRp^qX=VL;SgjhvP`cc=L2ijyQUvc-r9-Z|1}#3|2tEaKHC#rYmzF2&#hf3%vJuL znrd2VncV+L;(_LZ{n~~)a))Fu23#6A`H$m@A%o8UeQb%#L9+lWW%@u~6P4Cx>4X!+ z1(OD@Ri3{^zK{HE(>XU^_rW&8#8dWb literal 0 HcmV?d00001 diff --git a/images/Rock.png b/images/Rock.png new file mode 100644 index 0000000000000000000000000000000000000000..29c4e2000e69bf67f230d4e76a613309258eb151 GIT binary patch literal 9434 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 ia*5Az%=UZ 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 B#DxF= literal 0 HcmV?d00001 diff --git a/images/Selector.png b/images/Selector.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c5475a6e26dc2ff5f986ae2d73a7ce101174f0 GIT binary patch literal 22430 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 literal 0 HcmV?d00001 diff --git a/images/Star.png b/images/Star.png new file mode 100644 index 0000000000000000000000000000000000000000..17c0af58a78fa04ae8714a4feeadab7abc86daad GIT binary patch literal 13735 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 literal 0 HcmV?d00001 diff --git a/images/char-boy.png b/images/char-boy.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc7c298f31fd42feb0c320a7f4836ad5c438516 GIT binary patch literal 7790 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 literal 0 HcmV?d00001 diff --git a/images/char-cat-girl.png b/images/char-cat-girl.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0538b13128e66a991b18b2bad2f5986f3b534f GIT binary patch literal 8553 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 literal 0 HcmV?d00001 diff --git a/images/char-horn-girl.png b/images/char-horn-girl.png new file mode 100644 index 0000000000000000000000000000000000000000..90f22784ca35d8c2bae3b34f4fbb3e3b1843028f GIT binary patch literal 8724 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 JtClqj`Cn|6LZ$!! literal 0 HcmV?d00001 diff --git a/images/grass-block.png b/images/grass-block.png new file mode 100644 index 0000000000000000000000000000000000000000..eb04ba9069c3df7216d062e11d3c78b1fbd8f6da GIT binary patch literal 8587 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 literal 0 HcmV?d00001 diff --git a/images/water-block.png b/images/water-block.png new file mode 100644 index 0000000000000000000000000000000000000000..0383ed8143d93e9b12af85b111bcc3d8cad30a83 GIT binary patch literal 9210 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..a8a564f --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + Hack Day - Frogger Clone Starter Code + + + + + + + + diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..3272739 --- /dev/null +++ b/js/app.js @@ -0,0 +1,110 @@ +//Parent object for sprites +class Populate { + constructor () { + this.x = 0; + this.y = 0; + this.speed = 0; + this.sprite = ""; + this.sideways = 101; + this.upDown = 83; + } + + render () { + ctx.drawImage(Resources.get(this.sprite), this.x, this.y); + } + + reset () { + this.x = 0; + this.y = 415; + } +} + +//Player class +class Player extends Populate { + constructor () { + super(); + this.x = 0; + this.y = 415; + this.sprite = "images/char-boy.png"; + } + +//key input for Player + handleInput (input) { + switch (input) { + case "left": + if (this.x >= this.sideways) { + this.x -= this.sideways; + } + break; + case "right": + if (this.x <= this.sideways * 3) { + this.x += this.sideways; + } + break; + case "up": + if (this.y >= 83) { + this.y -= this.upDown; + } + break; + case "down": + if (this.y <= this.upDown * 4) { + this.y += this.upDown; + } + break; + } + } + + //updates player and sets condition for collision & win + update () { + for (let enemy of allEnemies) { + if (this.y === enemy.y && (enemy.x + enemy.sideways / 2 > this.x && enemy.x < this.x + this.sideways / 2)) { + this.reset(); + } + } + } +} + +const player = new Player(); + +//Array to hold Enemy objects +const allEnemies = []; + +//Enemy class +class Enemy extends Populate { + constructor (x, y, speed) { + super(); + this.x = x; + this.y = y; + this.speed = speed; + this.sprite = "images/enemy-bug.png"; + this.enemySprite = this.sprite; + } + + //Smooth movement of Enemy objects across gameboard + update (dt) { + if (this.x < this.sideways * 5) { + this.x += this.speed * dt; + } else { + this.x = -100; + } + } +} + +const enemy1 = new Enemy(101, 83, 150); +const enemy2 = new Enemy(404, 166, 350); +const enemy3 = new Enemy(0, 249, 375); +const enemy4 = new Enemy(0, 83, 100); + +allEnemies.push(enemy1, enemy2, enemy3, enemy4); + +// Player.handleInput() method. You don't need to modify this. +document.addEventListener("keyup", function (e) { + var allowedKeys = { + 37: "left", + 38: "up", + 39: "right", + 40: "down" + }; + + player.handleInput(allowedKeys[e.keyCode]); +}); diff --git a/js/engine.js b/js/engine.js new file mode 100644 index 0000000..112c1fb --- /dev/null +++ b/js/engine.js @@ -0,0 +1,149 @@ +/* Engine.js + * This file provides the game loop functionality (update entities and render), + * draws the initial game board on the screen, and then calls the update and + * render methods on your player and enemy objects (defined in your app.js). + * This engine makes the canvas' context (ctx) object globally available to make + * writing app.js a little simpler to work with. + */ + +var Engine = (function (global) { + var doc = global.document, + win = global.window, + canvas = doc.createElement("canvas"), + ctx = canvas.getContext("2d"), + lastTime; + + canvas.width = 505; + canvas.height = 606; + doc.body.appendChild(canvas); + + /* This function serves as the kickoff point for the game loop itself + * and handles properly calling the update and render methods. + */ + function main () { + /* Get our time delta information which is required if your game + * requires smooth animation. + */ + var now = Date.now(), + dt = (now - lastTime) / 1000.0; + + /* Call our update/render functions, pass along the time delta to + * our update function + */ + update(dt); + render(); + + /* Set our lastTime variable which is used to determine the time delta + */ + lastTime = now; + + /* Use the browser's requestAnimationFrame function to call this + * function again as soon as the browser is able to draw another frame. + */ + if (player.winAStar === true) { + modal.style.display = "block"; + win.cancelAnimationFrame; + + } else { + win.requestAnimationFrame(main); + + } + } + + /* This function does some initial setup that should only occur once, + * particularly setting the lastTime variable that is required for the + * game loop. + */ + function init () { + lastTime = Date.now(); + main(); + } + + /* This function is called by main (our game loop) and itself calls all + * of the functions which may need to update entity's data. */ + + function update (dt) { + updateEntities(dt); + } + + /* This is called by the update function and loops through all of the + * objects within your allEnemies array as defined in app.js + */ + function updateEntities (dt) { + allEnemies.forEach(function (enemy) { + enemy.update(dt); + }); + player.update(); + } + + /* This function initially draws the "game level", it will then call + * the renderEntities function. + */ + function render () { + /* This array holds the relative URL to the image used + * for that particular row of the game level. + */ + var rowImages = [ + "images/water-block.png", // Top row is water + "images/stone-block.png", // Row 1 of 3 of stone + "images/stone-block.png", // Row 2 of 3 of stone + "images/stone-block.png", // Row 3 of 3 of stone + "images/grass-block.png", // Row 1 of 2 of grass + "images/grass-block.png" // Row 2 of 2 of grass + ], + numRows = 6, + numCols = 5, + row, col; + + // Before drawing, clear existing canvas + ctx.clearRect(0, 0, canvas.width, canvas.height); + + /* Loop through the number of rows and columns we've defined above + * and, using the rowImages array, draw the correct image for that + * portion of the "grid" + */ + for (row = 0; row < numRows; row++) { + for (col = 0; col < numCols; col++) { + /* The drawImage function of the canvas' context element + * requires 3 parameters: the image to draw, the x coordinate + * to start drawing and the y coordinate to start drawing. + * We're using our Resources helpers to refer to our images + * so that we get the benefits of caching these images, since + * we're using them over and over. + */ + ctx.drawImage(Resources.get(rowImages[row]), col * 101, row * 83); + } + } + + renderEntities(); + } + + /* This function is called by the render function and is called on each game + * tick. Its purpose is to then call the render functions you have defined + * on your enemy and player entities within app.js + */ + function renderEntities () { + allEnemies.forEach(function (enemy) { + enemy.render(); + }); + + player.render(); + } + + //Images used in game + Resources.load([ + "images/stone-block.png", + "images/water-block.png", + "images/grass-block.png", + "images/enemy-bug.png", + "images/char-boy.png", + "images/Star.png" + ]); + Resources.onReady(init); + + /* Assign the canvas' context object to the global variable (the window + * object when run in a browser) so that developers can use it more easily + * from within their app.js files. + */ + global.ctx = ctx; +})(this); diff --git a/resources.js b/js/resources.js similarity index 98% rename from resources.js rename to js/resources.js index f2fdb6a..cd267b5 100644 --- a/resources.js +++ b/js/resources.js @@ -6,6 +6,7 @@ */ (function() { var resourceCache = {}; + // var loading = []; var readyCallbacks = []; /* This is the publicly accessible image loading function. It accepts @@ -36,7 +37,7 @@ function _load(url) { if(resourceCache[url]) { /* If this URL has been previously loaded it will exist within - * our resourceCache array. Just return that image rather than + * our resourceCache array. Just return that image rather * re-loading the image. */ return resourceCache[url]; @@ -57,13 +58,14 @@ */ if(isReady()) { readyCallbacks.forEach(function(func) { func(); }); - } + } }; /* Set the initial cache value to false, this will change when * the image's onload event handler is called. Finally, point * the image's src attribute to the passed in URL. */ + resourceCache[url] = false; img.src = url; } From 99e46e6a1c7dbe84462be6e2d13daf3eabd20126 Mon Sep 17 00:00:00 2001 From: lloan Date: Sat, 31 Aug 2019 13:56:07 -0700 Subject: [PATCH 04/26] updated readme for 8/19 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f8c0050..b6413bb 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ ## **Getting Started** -This repository will have resources to get you prepared for the Hack Day event. +This repository has the resources to get you prepared for the Hack Day event. -```On the day of the event, this repository will be updated to have the final starter code.``` +```Starter code has been update - 8/31/19 @ 1:55 PM.``` If you have any questions, please ask on our [Slack](https://ie-sd.slack.com). We welcome everyone to our Slack, so don't be afraid to join! Have fun coding! From ece557c8ccdcb9b0a2ca7772a10ec9b167eafc66 Mon Sep 17 00:00:00 2001 From: SJT1988 <41922761+SJT1988@users.noreply.github.com> Date: Sat, 31 Aug 2019 15:43:53 -0700 Subject: [PATCH 05/26] Added key input for WASD --- js/app.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index 3272739..187944a 100644 --- a/js/app.js +++ b/js/app.js @@ -100,10 +100,17 @@ allEnemies.push(enemy1, enemy2, enemy3, enemy4); // Player.handleInput() method. You don't need to modify this. document.addEventListener("keyup", function (e) { var allowedKeys = { + 65: "left", 37: "left", + + 87: "up", 38: "up", + + 68: "right", 39: "right", - 40: "down" + + 83: "down", + 40: "down", }; player.handleInput(allowedKeys[e.keyCode]); From 52cc6f0f073da2047434255bac4364d38cbb6c25 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 15:57:36 -0700 Subject: [PATCH 06/26] added in property for Player lives that can decrease and leads to a lose condition --- js/app.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/js/app.js b/js/app.js index 3272739..dda0ede 100644 --- a/js/app.js +++ b/js/app.js @@ -26,6 +26,7 @@ class Player extends Populate { this.x = 0; this.y = 415; this.sprite = "images/char-boy.png"; + this.lives = 5; } //key input for Player @@ -58,7 +59,14 @@ class Player extends Populate { update () { for (let enemy of allEnemies) { if (this.y === enemy.y && (enemy.x + enemy.sideways / 2 > this.x && enemy.x < this.x + this.sideways / 2)) { + this.lives--; + console.log("Lives left: " + this.lives); this.reset(); + + if (this.lives === 0) { + //Show game over screen + alert("Game over"); + } } } } From f06582bfee23226e4a106aa6c3efe584fa1c4a37 Mon Sep 17 00:00:00 2001 From: SJT1988 <41922761+SJT1988@users.noreply.github.com> Date: Sat, 31 Aug 2019 16:06:58 -0700 Subject: [PATCH 07/26] added WASD controlls --- js/app.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index dda0ede..05844ac 100644 --- a/js/app.js +++ b/js/app.js @@ -108,10 +108,17 @@ allEnemies.push(enemy1, enemy2, enemy3, enemy4); // Player.handleInput() method. You don't need to modify this. document.addEventListener("keyup", function (e) { var allowedKeys = { + 65: "left", 37: "left", + + 87: "up", 38: "up", + + 68: "right", 39: "right", - 40: "down" + + 83: "down", + 40: "down", }; player.handleInput(allowedKeys[e.keyCode]); From 42f26b78f868211eb25d24d50074ba31d23852a3 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 16:07:24 -0700 Subject: [PATCH 08/26] updated the lives condition so that it gives alert for Game Over when lives are less than 0 --- js/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/app.js b/js/app.js index dda0ede..e7917d2 100644 --- a/js/app.js +++ b/js/app.js @@ -63,7 +63,7 @@ class Player extends Populate { console.log("Lives left: " + this.lives); this.reset(); - if (this.lives === 0) { + if (this.lives <= 0) { //Show game over screen alert("Game over"); } From 18f452e4b166047c0a43b445f70e304085bbbd17 Mon Sep 17 00:00:00 2001 From: Tyrice Clark Date: Sat, 31 Aug 2019 16:12:58 -0700 Subject: [PATCH 09/26] Add setup container for score counter --- css/style.css | 24 ++++++++++++++++++++++++ index.html | 7 +++++++ 2 files changed, 31 insertions(+) diff --git a/css/style.css b/css/style.css index e28c912..26f2560 100644 --- a/css/style.css +++ b/css/style.css @@ -1,3 +1,27 @@ body { text-align: center; } + +#game-info { + border: 1px solid red; + display: flex; + width: 100%; + flex-direction: row; +} + +#life-counter-container { + border: 1px solid black; + flex: 1; + font-family: Arial, Helvetica, sans-serif; + font-size: 24px; +} + +#score-counter-container { + border: 1px solid green; + flex: 1; +} + +#character-profile-container { + border: 1px solid blue; + flex: 1; +} \ No newline at end of file diff --git a/index.html b/index.html index a8a564f..cf74620 100644 --- a/index.html +++ b/index.html @@ -6,6 +6,13 @@ +
+
+ Lives: 5 +
+
+
+
From 7b45024038e20eb5d245ffdd952f422171e1174a Mon Sep 17 00:00:00 2001 From: SJT1988 <41922761+SJT1988@users.noreply.github.com> Date: Sat, 31 Aug 2019 16:24:41 -0700 Subject: [PATCH 10/26] Partitioned classes into their own files :D --- index.html | 3 ++ js/app.js | 94 -------------------------------------------------- js/enemy.js | 20 +++++++++++ js/player.js | 52 ++++++++++++++++++++++++++++ js/populate.js | 20 +++++++++++ 5 files changed, 95 insertions(+), 94 deletions(-) create mode 100644 js/enemy.js create mode 100644 js/player.js create mode 100644 js/populate.js diff --git a/index.html b/index.html index a8a564f..b1db840 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,9 @@ + + + diff --git a/js/app.js b/js/app.js index 05844ac..ad69398 100644 --- a/js/app.js +++ b/js/app.js @@ -1,102 +1,8 @@ -//Parent object for sprites -class Populate { - constructor () { - this.x = 0; - this.y = 0; - this.speed = 0; - this.sprite = ""; - this.sideways = 101; - this.upDown = 83; - } - - render () { - ctx.drawImage(Resources.get(this.sprite), this.x, this.y); - } - - reset () { - this.x = 0; - this.y = 415; - } -} - -//Player class -class Player extends Populate { - constructor () { - super(); - this.x = 0; - this.y = 415; - this.sprite = "images/char-boy.png"; - this.lives = 5; - } - -//key input for Player - handleInput (input) { - switch (input) { - case "left": - if (this.x >= this.sideways) { - this.x -= this.sideways; - } - break; - case "right": - if (this.x <= this.sideways * 3) { - this.x += this.sideways; - } - break; - case "up": - if (this.y >= 83) { - this.y -= this.upDown; - } - break; - case "down": - if (this.y <= this.upDown * 4) { - this.y += this.upDown; - } - break; - } - } - - //updates player and sets condition for collision & win - update () { - for (let enemy of allEnemies) { - if (this.y === enemy.y && (enemy.x + enemy.sideways / 2 > this.x && enemy.x < this.x + this.sideways / 2)) { - this.lives--; - console.log("Lives left: " + this.lives); - this.reset(); - - if (this.lives === 0) { - //Show game over screen - alert("Game over"); - } - } - } - } -} - const player = new Player(); //Array to hold Enemy objects const allEnemies = []; -//Enemy class -class Enemy extends Populate { - constructor (x, y, speed) { - super(); - this.x = x; - this.y = y; - this.speed = speed; - this.sprite = "images/enemy-bug.png"; - this.enemySprite = this.sprite; - } - - //Smooth movement of Enemy objects across gameboard - update (dt) { - if (this.x < this.sideways * 5) { - this.x += this.speed * dt; - } else { - this.x = -100; - } - } -} const enemy1 = new Enemy(101, 83, 150); const enemy2 = new Enemy(404, 166, 350); diff --git a/js/enemy.js b/js/enemy.js new file mode 100644 index 0000000..c3e1b6c --- /dev/null +++ b/js/enemy.js @@ -0,0 +1,20 @@ +//Enemy class +class Enemy extends Populate { + constructor (x, y, speed) { + super(); + this.x = x; + this.y = y; + this.speed = speed; + this.sprite = "images/enemy-bug.png"; + this.enemySprite = this.sprite; + } + + //Smooth movement of Enemy objects across gameboard + update (dt) { + if (this.x < this.sideways * 5) { + this.x += this.speed * dt; + } else { + this.x = -100; + } + } +} \ No newline at end of file diff --git a/js/player.js b/js/player.js new file mode 100644 index 0000000..c7583c3 --- /dev/null +++ b/js/player.js @@ -0,0 +1,52 @@ +//Player class +class Player extends Populate { + constructor () { + super(); + this.x = 0; + this.y = 415; + this.sprite = "images/char-boy.png"; + this.lives = 5; + } + +//key input for Player + handleInput (input) { + switch (input) { + case "left": + if (this.x >= this.sideways) { + this.x -= this.sideways; + } + break; + case "right": + if (this.x <= this.sideways * 3) { + this.x += this.sideways; + } + break; + case "up": + if (this.y >= 83) { + this.y -= this.upDown; + } + break; + case "down": + if (this.y <= this.upDown * 4) { + this.y += this.upDown; + } + break; + } + } + + //updates player and sets condition for collision & win + update () { + for (let enemy of allEnemies) { + if (this.y === enemy.y && (enemy.x + enemy.sideways / 2 > this.x && enemy.x < this.x + this.sideways / 2)) { + this.lives--; + console.log("Lives left: " + this.lives); + this.reset(); + + if (this.lives === 0) { + //Show game over screen + alert("Game over"); + } + } + } + } +} diff --git a/js/populate.js b/js/populate.js new file mode 100644 index 0000000..69a10c4 --- /dev/null +++ b/js/populate.js @@ -0,0 +1,20 @@ +//Parent object for sprites +class Populate { + constructor () { + this.x = 0; + this.y = 0; + this.speed = 0; + this.sprite = ""; + this.sideways = 101; + this.upDown = 83; + } + + render () { + ctx.drawImage(Resources.get(this.sprite), this.x, this.y); + } + + reset () { + this.x = 0; + this.y = 415; + } +} \ No newline at end of file From d82ec72cfa8862a02572b5c1cb32a0f0031a5bce Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 16:36:01 -0700 Subject: [PATCH 11/26] locked the Player sprite's movements when lives are 0 --- js/player.js | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/js/player.js b/js/player.js index c7583c3..224a5f6 100644 --- a/js/player.js +++ b/js/player.js @@ -10,27 +10,29 @@ class Player extends Populate { //key input for Player handleInput (input) { - switch (input) { - case "left": - if (this.x >= this.sideways) { - this.x -= this.sideways; - } - break; - case "right": - if (this.x <= this.sideways * 3) { - this.x += this.sideways; - } - break; - case "up": - if (this.y >= 83) { - this.y -= this.upDown; - } - break; - case "down": - if (this.y <= this.upDown * 4) { - this.y += this.upDown; - } - break; + if(this.lives > 0) { + switch (input) { + case "left": + if (this.x >= this.sideways) { + this.x -= this.sideways; + } + break; + case "right": + if (this.x <= this.sideways * 3) { + this.x += this.sideways; + } + break; + case "up": + if (this.y >= 83) { + this.y -= this.upDown; + } + break; + case "down": + if (this.y <= this.upDown * 4) { + this.y += this.upDown; + } + break; + } } } From d383dd440b935891368ca63a3732ba2c6f5d58d5 Mon Sep 17 00:00:00 2001 From: Tyrice Clark Date: Sat, 31 Aug 2019 16:50:14 -0700 Subject: [PATCH 12/26] Add modal --- css/style.css | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++- index.html | 8 ++++++++ js/engine.js | 4 ++++ js/modal.js | 22 +++++++++++++++++++++ 4 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 js/modal.js diff --git a/css/style.css b/css/style.css index 26f2560..959d6c1 100644 --- a/css/style.css +++ b/css/style.css @@ -24,4 +24,56 @@ body { #character-profile-container { border: 1px solid blue; flex: 1; -} \ No newline at end of file +} + +.is-hidden { + display: none; + } + + .button-close { + display: inline-block; + width: 16px; + height: 16px; + position: absolute; + top: 10px; + right: 10px; + cursor: pointer; + } + + .modal-overlay { + position: absolute; + top: 0; + left: 0; + width: 505px; + height: 606px; + background: rgba(0, 0, 0, 0.6); + z-index: 9999; + display: flex; + justify-content: center; + } + + .modal { + padding: 20px 30px; + width: 90%; + max-height: calc(100% - 150px); + overflow-y: scroll; + position: relative; + margin: 5% auto 0; + z-index: 9999; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + .game-over { + color: #fff; + font-size: 48px; + } + + .retry-btn { + background-color: #8888ff; + color: #fff; + max-width: 160px; + padding: 16px; + } \ No newline at end of file diff --git a/index.html b/index.html index cf74620..7052798 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,14 @@
+ + diff --git a/js/engine.js b/js/engine.js index 112c1fb..4a028c1 100644 --- a/js/engine.js +++ b/js/engine.js @@ -15,7 +15,11 @@ var Engine = (function (global) { canvas.width = 505; canvas.height = 606; + doc.body.appendChild(canvas); + var modal = new Modal(document.querySelector('.modal-overlay'), canvas); + + modal.open(); /* This function serves as the kickoff point for the game loop itself * and handles properly calling the update and render methods. diff --git a/js/modal.js b/js/modal.js new file mode 100644 index 0000000..e4691bd --- /dev/null +++ b/js/modal.js @@ -0,0 +1,22 @@ +function Modal(overlay, anchorElement) { + this.overlay = overlay; + this.anchorElement = anchorElement; + this.open = function() { + this.overlay.classList.remove('is-hidden'); + this.overlay.style.top = this.anchorElement.offsetTop + 'px'; + this.overlay.style.left = this.anchorElement.offsetLeft + 'px'; + this.overlay.style.width = this.anchorElement.width + 'px'; + this.overlay.style.width = this.anchorElement.height + 'px'; + } + + this.close = function() { + this.overlay.classList.add('is-hidden'); + } + const closeButton = overlay.querySelector('.button-close') + closeButton.addEventListener('click', this.close.bind(this)); + overlay.addEventListener('click', e => { + if (e.srcElement.id === this.overlay.id) { + this.close(); + } + }); +} From b12dbfc10e4284a4e404823acf9df951a89630e2 Mon Sep 17 00:00:00 2001 From: SJT1988 <41922761+SJT1988@users.noreply.github.com> Date: Sat, 31 Aug 2019 16:55:51 -0700 Subject: [PATCH 13/26] created Game class (state machine) --- js/app.js | 14 ++++++++++++++ js/game.js | 11 +++++++++++ 2 files changed, 25 insertions(+) create mode 100644 js/game.js diff --git a/js/app.js b/js/app.js index ad69398..1e159b0 100644 --- a/js/app.js +++ b/js/app.js @@ -1,3 +1,17 @@ +//Game State Manager + +class Game(){ + var state = [ + "startMenu", + "round01", + "round02", + "round03", + "round04", + "round05" + ]; +} + + const player = new Player(); //Array to hold Enemy objects diff --git a/js/game.js b/js/game.js new file mode 100644 index 0000000..45af22a --- /dev/null +++ b/js/game.js @@ -0,0 +1,11 @@ +//Game State Manager +class Game(){ + var state = [ + "startMenu", + "round01", + "round02", + "round03", + "round04", + "round05" + ]; +} \ No newline at end of file From 4cbf365c7f25d9487f81f97e4056784049207d6a Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 17:05:10 -0700 Subject: [PATCH 14/26] added more Player sprites that change after getting to the top --- js/engine.js | 4 ++++ js/player.js | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/js/engine.js b/js/engine.js index 112c1fb..37a0d04 100644 --- a/js/engine.js +++ b/js/engine.js @@ -137,6 +137,10 @@ var Engine = (function (global) { "images/grass-block.png", "images/enemy-bug.png", "images/char-boy.png", + "images/char-cat-girl.png", + "images/char-horn-girl.png", + "images/char-pink-girl.png", + "images/char-princess-girl.png", "images/Star.png" ]); Resources.onReady(init); diff --git a/js/player.js b/js/player.js index 224a5f6..0b57053 100644 --- a/js/player.js +++ b/js/player.js @@ -4,7 +4,16 @@ class Player extends Populate { super(); this.x = 0; this.y = 415; - this.sprite = "images/char-boy.png"; + this.sprites = [ + "images/char-boy.png", + "images/char-cat-girl.png", + "images/char-horn-girl.png", + "images/char-pink-girl.png", + "images/char-princess-girl.png" + ], + this.round = 0; + this.wins = []; + this.sprite = this.sprites[this.round % this.sprites.length]; this.lives = 5; } @@ -25,6 +34,15 @@ class Player extends Populate { case "up": if (this.y >= 83) { this.y -= this.upDown; + } else if (this.y === 0) { + //You win!!! + //Get x and check if the player has already won that space + if(this.wins.indexOf(this.x) < 0) { + this.wins.push(this.x); + this.round++; + this.sprite = this.sprites[this.round % this.sprites.length]; + this.reset(); + } } break; case "down": From b9e3652352cb3addb7df76a85986bbde16c24259 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 17:08:42 -0700 Subject: [PATCH 15/26] fixed Game class's constructor for state --- js/app.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/js/app.js b/js/app.js index 1e159b0..f06d60a 100644 --- a/js/app.js +++ b/js/app.js @@ -1,14 +1,16 @@ //Game State Manager -class Game(){ - var state = [ - "startMenu", - "round01", - "round02", - "round03", - "round04", - "round05" - ]; +class Game { + constructor() { + this.state = [ + "startMenu", + "round01", + "round02", + "round03", + "round04", + "round05" + ] + } } From 414e0ba4190f85f93f94795d0a31fd09cf33fcc5 Mon Sep 17 00:00:00 2001 From: SirHexxus Date: Sat, 31 Aug 2019 17:30:24 -0700 Subject: [PATCH 16/26] refactored modal content and added level complete overlay, also tweaked style rules for overlays --- css/style.css | 4 ++-- index.html | 4 ++-- js/engine.js | 2 +- js/modal.js | 6 ++++-- js/screens.js | 4 ++++ 5 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 js/screens.js diff --git a/css/style.css b/css/style.css index 959d6c1..7ab9fd5 100644 --- a/css/style.css +++ b/css/style.css @@ -27,7 +27,7 @@ body { } .is-hidden { - display: none; + display: none !important; } .button-close { @@ -64,10 +64,10 @@ body { flex-direction: column; align-items: center; justify-content: center; + color: #fff; } .game-over { - color: #fff; font-size: 48px; } diff --git a/index.html b/index.html index 7052798..d000f55 100644 --- a/index.html +++ b/index.html @@ -16,10 +16,10 @@ + diff --git a/js/engine.js b/js/engine.js index 4a028c1..16946d2 100644 --- a/js/engine.js +++ b/js/engine.js @@ -19,7 +19,7 @@ var Engine = (function (global) { doc.body.appendChild(canvas); var modal = new Modal(document.querySelector('.modal-overlay'), canvas); - modal.open(); + // modal.open(screenTemplates.newLevel); /* This function serves as the kickoff point for the game loop itself * and handles properly calling the update and render methods. diff --git a/js/modal.js b/js/modal.js index e4691bd..86a9361 100644 --- a/js/modal.js +++ b/js/modal.js @@ -1,12 +1,14 @@ function Modal(overlay, anchorElement) { this.overlay = overlay; this.anchorElement = anchorElement; - this.open = function() { + this.open = function(content) { + var modalContent = document.querySelector(".modal-content"); + modalContent.innerHTML = content; this.overlay.classList.remove('is-hidden'); this.overlay.style.top = this.anchorElement.offsetTop + 'px'; this.overlay.style.left = this.anchorElement.offsetLeft + 'px'; this.overlay.style.width = this.anchorElement.width + 'px'; - this.overlay.style.width = this.anchorElement.height + 'px'; + this.overlay.style.height = this.anchorElement.height + 'px'; } this.close = function() { diff --git a/js/screens.js b/js/screens.js new file mode 100644 index 0000000..6dc91af --- /dev/null +++ b/js/screens.js @@ -0,0 +1,4 @@ +var screenTemplates = { gameOver: '

Game Over

', +newLevel: '

Level Complete!

Press Any Button To Continue

', +titleScreen: '' +}; \ No newline at end of file From 6e3c48090032eddc20015463cfef0e44c44d98e6 Mon Sep 17 00:00:00 2001 From: SirHexxus Date: Sat, 31 Aug 2019 17:34:48 -0700 Subject: [PATCH 17/26] got rid of stupid scrollbar --- css/style.css | 1 - 1 file changed, 1 deletion(-) diff --git a/css/style.css b/css/style.css index 7ab9fd5..9f4df36 100644 --- a/css/style.css +++ b/css/style.css @@ -56,7 +56,6 @@ body { padding: 20px 30px; width: 90%; max-height: calc(100% - 150px); - overflow-y: scroll; position: relative; margin: 5% auto 0; z-index: 9999; From 2c1dd6fcf3a940ac92c87882fa787a1136a5c320 Mon Sep 17 00:00:00 2001 From: SirHexxus Date: Sat, 31 Aug 2019 17:40:56 -0700 Subject: [PATCH 18/26] added title screen overlay --- js/engine.js | 2 +- js/screens.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/engine.js b/js/engine.js index 16946d2..7b0436e 100644 --- a/js/engine.js +++ b/js/engine.js @@ -19,7 +19,7 @@ var Engine = (function (global) { doc.body.appendChild(canvas); var modal = new Modal(document.querySelector('.modal-overlay'), canvas); - // modal.open(screenTemplates.newLevel); + // modal.open(screenTemplates.titleScreen); /* This function serves as the kickoff point for the game loop itself * and handles properly calling the update and render methods. diff --git a/js/screens.js b/js/screens.js index 6dc91af..ada662e 100644 --- a/js/screens.js +++ b/js/screens.js @@ -1,4 +1,4 @@ var screenTemplates = { gameOver: '

Game Over

', newLevel: '

Level Complete!

Press Any Button To Continue

', -titleScreen: '' +titleScreen: '

Welcome to notFROGGER!

Press ENTER to Start

' }; \ No newline at end of file From ee85967103667fe796e325b5e117a79cd81ac4fc Mon Sep 17 00:00:00 2001 From: SirHexxus Date: Sat, 31 Aug 2019 17:57:13 -0700 Subject: [PATCH 19/26] removed 'x' button --- index.html | 1 - js/modal.js | 7 ------- 2 files changed, 8 deletions(-) diff --git a/index.html b/index.html index 0724e73..cb03551 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,6 @@ diff --git a/js/modal.js b/js/modal.js index 86a9361..e6abf8b 100644 --- a/js/modal.js +++ b/js/modal.js @@ -14,11 +14,4 @@ function Modal(overlay, anchorElement) { this.close = function() { this.overlay.classList.add('is-hidden'); } - const closeButton = overlay.querySelector('.button-close') - closeButton.addEventListener('click', this.close.bind(this)); - overlay.addEventListener('click', e => { - if (e.srcElement.id === this.overlay.id) { - this.close(); - } - }); } From e3e21afa8e05d6cd125ff36bbb504406ce3002f3 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 17:59:30 -0700 Subject: [PATCH 20/26] added Selector for win space(s) --- js/app.js | 1 + js/engine.js | 10 ++++++++-- js/player.js | 35 +++++++++++++++++++++-------------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/js/app.js b/js/app.js index f06d60a..0396476 100644 --- a/js/app.js +++ b/js/app.js @@ -13,6 +13,7 @@ class Game { } } +const occupied = []; const player = new Player(); diff --git a/js/engine.js b/js/engine.js index 37a0d04..e9e2f5a 100644 --- a/js/engine.js +++ b/js/engine.js @@ -89,7 +89,8 @@ var Engine = (function (global) { "images/stone-block.png", // Row 2 of 3 of stone "images/stone-block.png", // Row 3 of 3 of stone "images/grass-block.png", // Row 1 of 2 of grass - "images/grass-block.png" // Row 2 of 2 of grass + "images/grass-block.png", // Row 2 of 2 of grass + "images/Selector.png" // Special occupied space :) ], numRows = 6, numCols = 5, @@ -112,6 +113,10 @@ var Engine = (function (global) { * we're using them over and over. */ ctx.drawImage(Resources.get(rowImages[row]), col * 101, row * 83); + + if((occupied.indexOf(101 * col) < 0) && row === 0) { + ctx.drawImage(Resources.get(rowImages[rowImages.length - 1]), col * 101, row * 83); + } } } @@ -141,7 +146,8 @@ var Engine = (function (global) { "images/char-horn-girl.png", "images/char-pink-girl.png", "images/char-princess-girl.png", - "images/Star.png" + "images/Star.png", + "images/Selector.png" ]); Resources.onReady(init); diff --git a/js/player.js b/js/player.js index 0b57053..a898ada 100644 --- a/js/player.js +++ b/js/player.js @@ -12,37 +12,27 @@ class Player extends Populate { "images/char-princess-girl.png" ], this.round = 0; - this.wins = []; this.sprite = this.sprites[this.round % this.sprites.length]; this.lives = 5; } -//key input for Player + //key input for Player handleInput (input) { if(this.lives > 0) { switch (input) { case "left": - if (this.x >= this.sideways) { + if ((this.x >= this.sideways) && !(this.occupiedSpace((this.x - this.sideways), this.y))) { this.x -= this.sideways; } break; case "right": - if (this.x <= this.sideways * 3) { + if ((this.x <= this.sideways * 3) && !(this.occupiedSpace((this.x + this.sideways), this.y))) { this.x += this.sideways; } break; case "up": - if (this.y >= 83) { + if ((this.y >= 83) && !(this.occupiedSpace(this.x, (this.y - this.upDown)))) { this.y -= this.upDown; - } else if (this.y === 0) { - //You win!!! - //Get x and check if the player has already won that space - if(this.wins.indexOf(this.x) < 0) { - this.wins.push(this.x); - this.round++; - this.sprite = this.sprites[this.round % this.sprites.length]; - this.reset(); - } } break; case "down": @@ -51,6 +41,8 @@ class Player extends Populate { } break; } + + this.handleWin(); } } @@ -69,4 +61,19 @@ class Player extends Populate { } } } + + //check if occupied + occupiedSpace (x, y) { + return ((occupied.indexOf(x) >= 0) && y === 0); + } + + //runs the win condition + handleWin () { + if (occupied.indexOf(this.x) < 0 && this.y === 0) { + occupied.push(this.x); + this.round++; + this.sprite = this.sprites[this.round % this.sprites.length]; + this.reset(); + } + } } From 0a6e0b2795ec3bf766822d0f75b2b2ab69798fca Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 18:09:40 -0700 Subject: [PATCH 21/26] updated lives counter on the HTML page --- js/player.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/player.js b/js/player.js index a898ada..3e205ef 100644 --- a/js/player.js +++ b/js/player.js @@ -51,7 +51,7 @@ class Player extends Populate { for (let enemy of allEnemies) { if (this.y === enemy.y && (enemy.x + enemy.sideways / 2 > this.x && enemy.x < this.x + this.sideways / 2)) { this.lives--; - console.log("Lives left: " + this.lives); + document.getElementById("life-counter").innerText = this.lives; this.reset(); if (this.lives === 0) { From a9d70b3812122999c1fcb716e0707355ae5ea7a0 Mon Sep 17 00:00:00 2001 From: SirHexxus Date: Sat, 31 Aug 2019 18:22:07 -0700 Subject: [PATCH 22/26] Add title screen and remove on enter key press --- index.html | 1 + js/app.js | 19 ++++--------------- js/engine.js | 7 +++++-- js/game.js | 26 +++++++++++++++++--------- js/modal.js | 3 ++- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/index.html b/index.html index cb03551..96ff4a1 100644 --- a/index.html +++ b/index.html @@ -18,6 +18,7 @@ + diff --git a/js/app.js b/js/app.js index f06d60a..693b244 100644 --- a/js/app.js +++ b/js/app.js @@ -1,18 +1,4 @@ -//Game State Manager - -class Game { - constructor() { - this.state = [ - "startMenu", - "round01", - "round02", - "round03", - "round04", - "round05" - ] - } -} - +const game = new Game(); const player = new Player(); @@ -41,7 +27,10 @@ document.addEventListener("keyup", function (e) { 83: "down", 40: "down", + + 13: "enter" }; player.handleInput(allowedKeys[e.keyCode]); + game.handleInput(allowedKeys[e.keyCode]) }); diff --git a/js/engine.js b/js/engine.js index 6470060..ddf8220 100644 --- a/js/engine.js +++ b/js/engine.js @@ -17,9 +17,12 @@ var Engine = (function (global) { canvas.height = 606; doc.body.appendChild(canvas); - var modal = new Modal(document.querySelector('.modal-overlay'), canvas); - // modal.open(screenTemplates.titleScreen); + + var modal = new Modal(document.querySelector('.modal-overlay'), canvas); + game.setModal(modal); + modal.open(screenTemplates.titleScreen); + /* This function serves as the kickoff point for the game loop itself * and handles properly calling the update and render methods. diff --git a/js/game.js b/js/game.js index 45af22a..6e282f2 100644 --- a/js/game.js +++ b/js/game.js @@ -1,11 +1,19 @@ //Game State Manager -class Game(){ - var state = [ - "startMenu", - "round01", - "round02", - "round03", - "round04", - "round05" - ]; +class Game { + state = { + hasBegun: false, + }; + + setModal(modal) { + this.modal = modal; + } +//key input for whole game + handleInput (input) { + if(input === "enter") { + if (!this.state.hasBegun) { + this.modal.close(); + this.state.hasBegun = true; + } + } + } } \ No newline at end of file diff --git a/js/modal.js b/js/modal.js index e6abf8b..49b8dd0 100644 --- a/js/modal.js +++ b/js/modal.js @@ -1,8 +1,8 @@ function Modal(overlay, anchorElement) { + var modalContent = document.querySelector(".modal-content"); this.overlay = overlay; this.anchorElement = anchorElement; this.open = function(content) { - var modalContent = document.querySelector(".modal-content"); modalContent.innerHTML = content; this.overlay.classList.remove('is-hidden'); this.overlay.style.top = this.anchorElement.offsetTop + 'px'; @@ -13,5 +13,6 @@ function Modal(overlay, anchorElement) { this.close = function() { this.overlay.classList.add('is-hidden'); + modalContent.innerHTML = ""; } } From 4bcd9d48b6a34e93aae772a5b452de4e86195111 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 18:41:30 -0700 Subject: [PATCH 23/26] added in Game Over modal --- css/style.css | 2 +- js/app.js | 11 ++++++++++- js/player.js | 3 +-- js/screens.js | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/css/style.css b/css/style.css index 9f4df36..a7930a5 100644 --- a/css/style.css +++ b/css/style.css @@ -70,7 +70,7 @@ body { font-size: 48px; } - .retry-btn { + #retry-btn { background-color: #8888ff; color: #fff; max-width: 160px; diff --git a/js/app.js b/js/app.js index 2fa0794..825112b 100644 --- a/js/app.js +++ b/js/app.js @@ -1,7 +1,7 @@ const occupied = []; const game = new Game(); -const player = new Player(); +let player = new Player(); //Array to hold Enemy objects const allEnemies = []; @@ -35,3 +35,12 @@ document.addEventListener("keyup", function (e) { player.handleInput(allowedKeys[e.keyCode]); game.handleInput(allowedKeys[e.keyCode]) }); + +document.addEventListener("click", function (e) { + e.preventDefault(); + if(e.target && e.target.id== 'retry-btn'){ + game.modal.close(); + occupied.splice(0, occupied.length); + player = new Player(); + } +}); \ No newline at end of file diff --git a/js/player.js b/js/player.js index 3e205ef..674c89b 100644 --- a/js/player.js +++ b/js/player.js @@ -55,8 +55,7 @@ class Player extends Populate { this.reset(); if (this.lives === 0) { - //Show game over screen - alert("Game over"); + game.modal.open(screenTemplates.gameOver); } } } diff --git a/js/screens.js b/js/screens.js index ada662e..af7ba82 100644 --- a/js/screens.js +++ b/js/screens.js @@ -1,4 +1,4 @@ -var screenTemplates = { gameOver: '

Game Over

', +var screenTemplates = { gameOver: '

Game Over

', newLevel: '

Level Complete!

Press Any Button To Continue

', titleScreen: '

Welcome to notFROGGER!

Press ENTER to Start

' }; \ No newline at end of file From 9e9667269368c21c55aafba1ee050837f7f75f92 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 18:41:50 -0700 Subject: [PATCH 24/26] moved sprites array to the app.js file --- js/app.js | 9 +++++++++ js/player.js | 11 ++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/js/app.js b/js/app.js index 825112b..2d9f04d 100644 --- a/js/app.js +++ b/js/app.js @@ -1,4 +1,13 @@ const occupied = []; +const sprites = [ + "images/char-boy.png", + "images/char-cat-girl.png", + "images/char-horn-girl.png", + "images/char-pink-girl.png", + "images/char-princess-girl.png" +]; + + const game = new Game(); let player = new Player(); diff --git a/js/player.js b/js/player.js index 674c89b..9aae213 100644 --- a/js/player.js +++ b/js/player.js @@ -4,15 +4,8 @@ class Player extends Populate { super(); this.x = 0; this.y = 415; - this.sprites = [ - "images/char-boy.png", - "images/char-cat-girl.png", - "images/char-horn-girl.png", - "images/char-pink-girl.png", - "images/char-princess-girl.png" - ], this.round = 0; - this.sprite = this.sprites[this.round % this.sprites.length]; + this.sprite = sprites[this.round % sprites.length]; this.lives = 5; } @@ -71,7 +64,7 @@ class Player extends Populate { if (occupied.indexOf(this.x) < 0 && this.y === 0) { occupied.push(this.x); this.round++; - this.sprite = this.sprites[this.round % this.sprites.length]; + this.sprite = sprites[this.round % sprites.length]; this.reset(); } } From e5a09859d5cc922947c2ef9a8d6e45cd38485a6e Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 18:53:32 -0700 Subject: [PATCH 25/26] added New Level screen --- js/app.js | 2 +- js/game.js | 8 ++++++++ js/player.js | 5 +++++ js/screens.js | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/js/app.js b/js/app.js index 2d9f04d..66e9c20 100644 --- a/js/app.js +++ b/js/app.js @@ -42,7 +42,7 @@ document.addEventListener("keyup", function (e) { }; player.handleInput(allowedKeys[e.keyCode]); - game.handleInput(allowedKeys[e.keyCode]) + game.handleInput(allowedKeys[e.keyCode]); }); document.addEventListener("click", function (e) { diff --git a/js/game.js b/js/game.js index 6e282f2..e7420c9 100644 --- a/js/game.js +++ b/js/game.js @@ -2,6 +2,7 @@ class Game { state = { hasBegun: false, + levelComplete: false }; setModal(modal) { @@ -14,6 +15,13 @@ class Game { this.modal.close(); this.state.hasBegun = true; } + + if (this.state.levelComplete) { + this.modal.close(); + this.state.levelComplete = false; + occupied.splice(0, occupied.length); + } } + } } \ No newline at end of file diff --git a/js/player.js b/js/player.js index 9aae213..5443fd9 100644 --- a/js/player.js +++ b/js/player.js @@ -66,6 +66,11 @@ class Player extends Populate { this.round++; this.sprite = sprites[this.round % sprites.length]; this.reset(); + + if(occupied.length === sprites.length) { + game.state.levelComplete = true; + game.modal.open(screenTemplates.newLevel); + } } } } diff --git a/js/screens.js b/js/screens.js index af7ba82..fbf84cf 100644 --- a/js/screens.js +++ b/js/screens.js @@ -1,4 +1,4 @@ var screenTemplates = { gameOver: '

Game Over

', -newLevel: '

Level Complete!

Press Any Button To Continue

', +newLevel: '

Level Complete!

Press ENTER To Continue

', titleScreen: '

Welcome to notFROGGER!

Press ENTER to Start

' }; \ No newline at end of file From 63937590419ace1bdf3fe2df3787e05600222578 Mon Sep 17 00:00:00 2001 From: Rebecca Hom Date: Sat, 31 Aug 2019 19:00:37 -0700 Subject: [PATCH 26/26] added in level and games won counters --- css/style.css | 2 +- index.html | 8 ++++++-- js/player.js | 5 ++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/css/style.css b/css/style.css index a7930a5..34d6872 100644 --- a/css/style.css +++ b/css/style.css @@ -9,7 +9,7 @@ body { flex-direction: row; } -#life-counter-container { +#life-counter-container, #score-counter-container, #character-profile-container { border: 1px solid black; flex: 1; font-family: Arial, Helvetica, sans-serif; diff --git a/index.html b/index.html index 96ff4a1..605c303 100644 --- a/index.html +++ b/index.html @@ -10,8 +10,12 @@
Lives: 5
-
-
+
+ Rounds: 1 +
+
+ Games Won: 0 +