-
Notifications
You must be signed in to change notification settings - Fork 1
/
bundle.js.map
1 lines (1 loc) · 20.7 KB
/
bundle.js.map
1
{"version":3,"sources":["webpack:///webpack/bootstrap a5d8d368585badc3caa9","webpack:///./lib/pong.js","webpack:///./lib/game.js","webpack:///./lib/ball.js","webpack:///./lib/paddle.js","webpack:///./lib/player.js","webpack:///./lib/computer.js"],"names":["Game","require","document","addEventListener","canvas","getElementById","width","height","ctx","getContext","game","startGame","Ball","Paddle","Player","Computer","animate","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","callback","setTimeout","ball","player","computer","playerScore","computerScore","$","html","on","start","bind","message","css","reset","off","animateId","step","update","render","endGame","paddle","beginPath","setLineDash","moveTo","lineTo","closePath","strokeStyle","stroke","font","fillStyle","fillText","fillRect","centerLine","score","cancelAnimationFrame","module","exports","ballSound","Audio","x","y","xSpeed","ySpeed","radius","arc","Math","PI","fill","playerPaddle","computerPaddle","intLine","xLeft","xRight","yTop","yBottom","oldXSpeed","oldYSpeed","volume","play","maxAngle","relIntY","normalized","bounceAngle","direction","sin","key","getPressedKeyCodes","forEach","code","move","diff"],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;ACtCA,KAAMA,OAAO,mBAAAC,CAAQ,CAAR,CAAb;;AAEAC,UAASC,gBAAT,CAA0B,kBAA1B,EAA8C,YAAM;AAClD,OAAMC,SAASF,SAASG,cAAT,CAAwB,aAAxB,CAAf;AACA,OAAMC,QAAQ,GAAd;AACA,OAAMC,SAAS,GAAf;AACAH,UAAOE,KAAP,GAAeA,KAAf;AACAF,UAAOG,MAAP,GAAgBA,MAAhB;AACA,OAAMC,MAAMJ,OAAOK,UAAP,CAAkB,IAAlB,CAAZ;;AAEA,OAAMC,OAAO,IAAIV,IAAJ,CAASQ,GAAT,EAAcF,KAAd,EAAqBC,MAArB,CAAb;AACAG,QAAKC,SAAL;AACD,EAVD,E;;;;;;;;;;;;ACFA,KAAMC,OAAO,mBAAAX,CAAQ,CAAR,CAAb;AACA,KAAMY,SAAS,mBAAAZ,CAAQ,CAAR,CAAf;AACA,KAAMa,SAAS,mBAAAb,CAAQ,CAAR,CAAf;AACA,KAAMc,WAAW,mBAAAd,CAAQ,CAAR,CAAjB;;AAEA,KAAMe,UAAUC,OAAOC,qBAAP,IACdD,OAAOE,2BADO,IAEdF,OAAOG,wBAFO,IAGd,UAASC,QAAT,EAAmB;AAAEJ,UAAOK,UAAP,CAAkBD,QAAlB,EAA4B,OAAK,EAAjC;AAAuC,EAH9D;;KAKMrB,I;AACJ,iBAAYQ,GAAZ,EAAiBF,KAAjB,EAAwBC,MAAxB,EAAgC;AAAA;;AAC9B,UAAKC,GAAL,GAAWA,GAAX;AACA,UAAKF,KAAL,GAAaA,KAAb;AACA,UAAKC,MAAL,GAAcA,MAAd;AACA,UAAKgB,IAAL,GAAY,IAAIX,IAAJ,CAASJ,GAAT,EAAc,IAAd,EAAoB,KAAKF,KAAL,GAAa,CAAjC,EAAoC,KAAKC,MAAL,GAAc,CAAlD,CAAZ;AACA,UAAKiB,MAAL,GAAc,IAAIV,MAAJ,CAAWN,GAAX,EAAgB,KAAKF,KAAL,GAAa,EAA7B,EAAkC,KAAKC,MAAL,GAAc,CAAf,GAAoB,EAArD,CAAd;AACA,UAAKkB,QAAL,GAAgB,IAAIV,QAAJ,CAAaP,GAAb,EAAkB,EAAlB,EAAuB,KAAKD,MAAL,GAAc,CAAf,GAAoB,EAA1C,CAAhB;AACA,UAAKmB,WAAL,GAAmB,CAAnB;AACA,UAAKC,aAAL,GAAqB,CAArB;AACD;;;;iCAEW;AACVC,SAAE,QAAF,EAAYC,IAAZ,CAAiB,EAAjB;AACAD,SAAE,iBAAF,EAAqBC,IAArB,CAA0B,yBAA1B;AACAD,SAAE,wBAAF,EACGC,IADH,CACQ,mEADR;AAEAD,SAAE,WAAF,EAAeC,IAAf,CAAoB,0BAApB;;AAEAD,SAAE,eAAF,EAAmBE,EAAnB,CAAsB,OAAtB,EAA+B,KAAKC,KAAL,CAAWC,IAAX,CAAgB,IAAhB,CAA/B;AACD;;;+BAES;AACR,WAAIC,gBAAJ;;AAEA,WAAI,KAAKP,WAAL,KAAqB,EAAzB,EAA6B;AAC3BO,mBAAU,UAAV;AACAL,WAAE,WAAF,EAAeM,GAAf,CAAmB,OAAnB,EAA4B,SAA5B;AACD,QAHD,MAGO;AACLD,mBAAU,WAAV;AACAL,WAAE,WAAF,EAAeM,GAAf,CAAmB,OAAnB,EAA4B,KAA5B;AACD;AACDN,SAAE,WAAF,EAAeC,IAAf,iBAAkCI,OAAlC;AACAL,SAAE,QAAF,EAAYC,IAAZ,CAAiB,aAAjB;AACAD,SAAE,QAAF,EAAYM,GAAZ,CAAgB,QAAhB,EAA0B,gBAA1B;AACAN,SAAE,QAAF,EAAYM,GAAZ,CAAgB,QAAhB,EAA0B,SAA1B;;AAEAN,SAAE,QAAF,EAAYE,EAAZ,CAAe,OAAf,EAAwB,KAAKK,KAAL,CAAWH,IAAX,CAAgB,IAAhB,CAAxB;AACD;;;6BAEO;AACNJ,SAAE,iBAAF,EAAqBC,IAArB,CAA0B,EAA1B;AACAD,SAAE,wBAAF,EAA4BC,IAA5B,CAAiC,EAAjC;AACAD,SAAE,WAAF,EAAeC,IAAf,CAAoB,EAApB;;AAEAD,SAAE,eAAF,EAAmBM,GAAnB,CAAuB,QAAvB,EAAiC,MAAjC;AACAN,SAAE,eAAF,EAAmBQ,GAAnB,CAAuB,OAAvB;AACAR,SAAE,eAAF,EAAmBM,GAAnB,CAAuB,QAAvB,EAAiC,MAAjC;AACAN,SAAE,QAAF,EAAYC,IAAZ,CAAiB,cAAjB;AACAD,SAAE,UAAF,EAAcC,IAAd,CAAmB,SAAnB;AACAD,SAAE,UAAF,EAAcM,GAAd,CAAkB,QAAlB,EAA4B,gBAA5B;AACAN,SAAE,UAAF,EAAcM,GAAd,CAAkB,QAAlB,EAA4B,SAA5B;AACAN,SAAE,UAAF,EAAcE,EAAd,CAAiB,OAAjB,EAA0B,KAAKK,KAAL,CAAWH,IAAX,CAAgB,IAAhB,CAA1B;AACAJ,SAAE,cAAF,EAAkBM,GAAlB,CAAsB,QAAtB,EAAgC,gBAAhC;AACA,YAAKG,SAAL,GAAiBrB,QAAQ,KAAKsB,IAAL,CAAUN,IAAV,CAAe,IAAf,CAAR,CAAjB;AACD;;;4BAEM;AACL,YAAKO,MAAL;AACA,YAAKC,MAAL;AACA,WAAI,KAAKd,WAAL,KAAqB,EAArB,IAA2B,KAAKC,aAAL,KAAuB,EAAtD,EAA0D;AACxD,cAAKc,OAAL;AACD,QAFD,MAEO;AACL,cAAKJ,SAAL,GAAiBrB,QAAQ,KAAKsB,IAAL,CAAUN,IAAV,CAAe,IAAf,CAAR,CAAjB;AACD;AACF;;;8BAEQ;AACP,YAAKT,IAAL,CAAUgB,MAAV,CAAiB,KAAKf,MAAL,CAAYkB,MAA7B,EAAqC,KAAKjB,QAAL,CAAciB,MAAnD;AACA,YAAKjB,QAAL,CAAcc,MAAd,CAAqB,KAAKhB,IAA1B;AACA,YAAKC,MAAL,CAAYe,MAAZ;AACD;;;kCAEY;AACX,YAAK/B,GAAL,CAASmC,SAAT;AACE,YAAKnC,GAAL,CAASoC,WAAT,CAAqB,CAAC,CAAD,EAAI,EAAJ,CAArB;AACA,YAAKpC,GAAL,CAASqC,MAAT,CAAgB,KAAKvC,KAAL,GAAa,CAA7B,EAAgC,CAAhC;AACA,YAAKE,GAAL,CAASsC,MAAT,CAAgB,KAAKxC,KAAL,GAAa,CAA7B,EAAgC,KAAKC,MAArC;AACF,YAAKC,GAAL,CAASuC,SAAT;AACA,YAAKvC,GAAL,CAASwC,WAAT,GAAuB,MAAvB;AACA,YAAKxC,GAAL,CAASyC,MAAT;AACD;;;6BAEO;AACN,YAAKzC,GAAL,CAAS0C,IAAT,GAAgB,oBAAhB;AACA,YAAK1C,GAAL,CAAS2C,SAAT,GAAqB,SAArB;AACA,YAAK3C,GAAL,CAAS4C,QAAT,CAAkB,KAAK1B,WAAvB,EAAoC,KAAKpB,KAAL,GAAW,CAAX,GAAe,EAAnD,EAAuD,EAAvD;AACA,YAAKE,GAAL,CAAS4C,QAAT,CAAkB,KAAKzB,aAAvB,EAAsC,KAAKrB,KAAL,GAAW,CAAX,GAAe,EAAf,GAAoB,EAA1D,EAA8D,EAA9D;AACD;;;8BAEQ;AACP,YAAKE,GAAL,CAAS2C,SAAT,GAAqB,SAArB;AACA,YAAK3C,GAAL,CAAS6C,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,KAAK/C,KAA7B,EAAoC,KAAKC,MAAzC;AACA,YAAK+C,UAAL;AACA,YAAKC,KAAL;AACA,YAAKhC,IAAL,CAAUiB,MAAV;AACA,YAAKhB,MAAL,CAAYgB,MAAZ;AACA,YAAKf,QAAL,CAAce,MAAd;AACD;;;6BAEO;AACNZ,SAAE,WAAF,EAAeC,IAAf,CAAoB,EAApB;AACAD,SAAE,QAAF,EAAYC,IAAZ,CAAiB,EAAjB;AACAD,SAAE,QAAF,EAAYM,GAAZ,CAAgB,QAAhB,EAA0B,MAA1B;AACAN,SAAE,QAAF,EAAYM,GAAZ,CAAgB,QAAhB,EAA0B,MAA1B;AACAN,SAAE,QAAF,EAAYQ,GAAZ,CAAgB,OAAhB;AACA,YAAKb,IAAL,CAAUY,KAAV;AACA,YAAKX,MAAL,CAAYW,KAAZ;AACA,YAAKV,QAAL,CAAcU,KAAd;AACA,YAAKT,WAAL,GAAmB,CAAnB;AACA,YAAKC,aAAL,GAAqB,CAArB;AACAV,cAAOuC,oBAAP,CAA4B,KAAKnB,SAAjC;AACA,YAAKN,KAAL;AACD;;;;;;AAIH0B,QAAOC,OAAP,GAAiB1D,IAAjB,C;;;;;;;;;;;;AC/HA,KAAM2D,YAAY,IAAIC,KAAJ,CAAU,2BAAV,CAAlB;;KAEMhD,I;AACJ,iBAAYJ,GAAZ,EAAiBE,IAAjB,EAAuBmD,CAAvB,EAA0BC,CAA1B,EAA6B;AAAA;;AAC3B,UAAKD,CAAL,GAASA,CAAT;AACA,UAAKC,CAAL,GAASA,CAAT;AACA,UAAKpD,IAAL,GAAYA,IAAZ;AACA,UAAKF,GAAL,GAAWA,GAAX;AACA,UAAKuD,MAAL,GAAc,CAAC,EAAf;AACA,UAAKC,MAAL,GAAc,CAAd;AACA,UAAKC,MAAL,GAAc,EAAd;AACD;;;;8BAEQ;AACP,YAAKzD,GAAL,CAASmC,SAAT;AACA,YAAKnC,GAAL,CAAS0D,GAAT,CACE,KAAKL,CADP,EACU,KAAKC,CADf,EACkB,KAAKG,MADvB,EAC+B,IAAIE,KAAKC,EADxC,EAC4C,KAD5C;AAGA,YAAK5D,GAAL,CAAS2C,SAAT,GAAqB,SAArB;AACA,YAAK3C,GAAL,CAAS6D,IAAT;AACD;;;4BAEMC,Y,EAAcC,c,EAAgB;AAAA;;AACnC,YAAKV,CAAL,IAAU,KAAKE,MAAf;AACA,YAAKD,CAAL,IAAU,KAAKE,MAAf;;AAEA,WAAIQ,UAAU,KAAd;AACA,WAAMC,QAAQ,KAAKZ,CAAL,GAAS,KAAKI,MAA5B;AACA,WAAMS,SAAS,KAAKb,CAAL,GAAS,KAAKI,MAA7B;AACA,WAAMU,OAAO,KAAKb,CAAL,GAAS,KAAKG,MAA3B;AACA,WAAMW,UAAU,KAAKd,CAAL,GAAS,KAAKG,MAA9B;;AAEA,WAAIU,OAAO,CAAX,EAAc;AACZ,cAAKb,CAAL,GAAS,EAAT;AACA,cAAKE,MAAL,GAAc,CAAC,KAAKA,MAApB;AACD,QAHD,MAGO,IAAIY,UAAU,KAAKlE,IAAL,CAAUH,MAAxB,EAAgC;AACrC,cAAKuD,CAAL,GAAS,KAAKpD,IAAL,CAAUH,MAAV,GAAmB,KAAK0D,MAAjC;AACA,cAAKD,MAAL,GAAc,CAAC,KAAKA,MAApB;AACD,QAHM,MAGA,IAAIU,SAAS,KAAKhE,IAAL,CAAUJ,KAAnB,IAA4BmE,QAAQ,CAAxC,EAA2C;AAAA;AAChD,eAAMI,YAAY,CAAC,MAAKd,MAAxB;AACA,eAAMe,YAAY,CAAC,MAAKd,MAAxB;AACA,iBAAKD,MAAL,GAAc,CAAd;AACA,iBAAKC,MAAL,GAAc,CAAd;AACA,iBAAKH,CAAL,GAAS,MAAKnD,IAAL,CAAUJ,KAAV,GAAkB,CAA3B;AACA,iBAAKwD,CAAL,GAAS,MAAKpD,IAAL,CAAUH,MAAV,GAAmB,CAA5B;AACCmE,oBAAS,MAAKhE,IAAL,CAAUJ,KAApB,GAA8B,MAAKI,IAAL,CAAUiB,aAAV,IAA2B,CAAzD,GAA+D,MAAKjB,IAAL,CAAUgB,WAAV,IAAyB,CAAxF;AACAT,kBAAOK,UAAP,CAAkB,YAAM;AACtB,mBAAKyC,MAAL,GAAcc,SAAd;AACA,mBAAKb,MAAL,GAAcc,YAAY,CAA1B;AACD,YAHD,EAGG,GAHH;AARgD;AAYjD;;AAED,WACGJ,SAASJ,aAAaT,CAAtB,IACDa,SAASJ,aAAaT,CAAb,GAAiB,EADzB,IAEDe,UAAUN,aAAaR,CAFtB,IAGDa,OAAQL,aAAaR,CAAb,GAAiBQ,aAAa/D,MAHtC,IAICkE,QAASF,eAAeV,CAAf,GAAmBU,eAAejE,KAA3C,IACDmE,QAASF,eAAeV,CAAf,GAAmBU,eAAejE,KAAlC,GAA0C,EADlD,IAEDsE,UAAUL,eAAeT,CAFxB,IAGDa,OAAQJ,eAAeT,CAAf,GAAmBS,eAAehE,MAR5C,EASE;AACEoD,mBAAUoB,MAAV,GAAmB,GAAnB;AACApB,mBAAUqB,IAAV;AACA,aAAMC,WAAW,IAAId,KAAKC,EAAT,GAAc,EAA/B;AACA,aAAM1B,SAAS,KAAKmB,CAAL,GAAS,KAAKnD,IAAL,CAAUJ,KAAV,GAAkB,CAA3B,GAA+BiE,cAA/B,GAAgDD,YAA/D;AACA,aAAMY,UAAWxC,OAAOoB,CAAP,GAAYpB,OAAOnC,MAAP,GAAgB,CAA7B,GAAmC,KAAKuD,CAAxD;AACA,aAAMqB,aAAcD,WAAWxC,OAAOnC,MAAP,GAAgB,CAA3B,CAApB;AACA,aAAM6E,cAAcD,aAAaF,QAAjC;AACA,aAAMI,YAAY,KAAKtB,MAAL,GAAc,CAAd,GAAkB,CAAC,CAAnB,GAAuB,CAAzC;;AAEA,aAAImB,UAAU,CAAV,IAAeA,UAAU,CAAC,CAA9B,EAAiC;AAC/B,gBAAKnB,MAAL,GAAc,CAAC,KAAKA,MAApB;AACA,gBAAKC,MAAL,GAAc,CAAC,KAAKA,MAApB;AACD,UAHD,MAGO;AACL;AACA,gBAAKD,MAAL,GAAc,CAAC,KAAKA,MAApB;AACA,gBAAKC,MAAL,GAAc,KAAM,CAACG,KAAKmB,GAAL,CAASF,WAAT,CAArB;AACD;AACF;AACJ;;;6BAEO;AACN,YAAKvB,CAAL,GAAS,KAAKnD,IAAL,CAAUJ,KAAV,GAAkB,CAA3B;AACA,YAAKwD,CAAL,GAAS,KAAKpD,IAAL,CAAUH,MAAV,GAAmB,CAA5B;AACA,YAAKwD,MAAL,GAAc,CAAC,EAAf;AACA,YAAKC,MAAL,GAAc,CAAd;AACD;;;;;;AAGHP,QAAOC,OAAP,GAAiB9C,IAAjB,C;;;;;;;;;;;;KC1FMC,M;AACJ,mBAAYL,GAAZ,EAAiBqD,CAAjB,EAAoBC,CAApB,EAAuBxD,KAAvB,EAA8BC,MAA9B,EAAsC;AAAA;;AACpC,UAAKC,GAAL,GAAWA,GAAX;AACA,UAAKqD,CAAL,GAASA,CAAT;AACA,UAAKC,CAAL,GAASA,CAAT;AACA,UAAKxD,KAAL,GAAaA,KAAb;AACA,UAAKC,MAAL,GAAcA,MAAd;AACD;;;;8BAEQ;AACP,YAAKC,GAAL,CAAS2C,SAAT,GAAqB,SAArB;AACA,YAAK3C,GAAL,CAAS6C,QAAT,CAAkB,KAAKQ,CAAvB,EAA0B,KAAKC,CAA/B,EAAkC,KAAKxD,KAAvC,EAA8C,KAAKC,MAAnD;AACD;;;0BAEIuD,C,EAAG;AACN,YAAKA,CAAL,IAAUA,CAAV;;AAEA,WAAI,KAAKA,CAAL,GAAS,KAAKvD,MAAd,GAAuB,GAA3B,EAAgC;AAC9B,cAAKuD,CAAL,GAAS,MAAM,KAAKvD,MAApB;AACD,QAFD,MAEO,IAAI,KAAKuD,CAAL,GAAS,CAAb,EAAgB;AACrB,cAAKA,CAAL,GAAS,CAAT;AACD;AACF;;;6BAEO;AACN,YAAKA,CAAL,GAAS,MAAO,KAAKvD,MAAL,GAAc,CAA9B;AACA,YAAKsD,CAAL,GAAS,KAAKA,CAAd;AACD;;;;;;AAGHJ,QAAOC,OAAP,GAAiB7C,MAAjB,C;;;;;;;;;;;;AC9BA,KAAMA,SAAS,mBAAAZ,CAAQ,CAAR,CAAf;;KAEMa,M;AACJ,mBAAYN,GAAZ,EAAiBqD,CAAjB,EAAoBC,CAApB,EAAuB;AAAA;;AACrB,UAAKtD,GAAL,GAAWA,GAAX;AACA,UAAKqD,CAAL,GAASA,CAAT;AACA,UAAKC,CAAL,GAASA,CAAT;AACA,UAAKpB,MAAL,GAAc,IAAI7B,MAAJ,CAAWL,GAAX,EAAgBqD,CAAhB,EAAmBC,CAAnB,EAAsB,EAAtB,EAA0B,GAA1B,CAAd;AACD;;;;8BAEQ;AACP,YAAKpB,MAAL,CAAYF,MAAZ;AACD;;;8BAEQ;AAAA;;AACP+C,WAAIC,kBAAJ,GAAyBC,OAAzB,CAAiC,UAACC,IAAD,EAAU;AACzC,aAAIA,SAAS,EAAb,EAAiB;AACf,iBAAKhD,MAAL,CAAYiD,IAAZ,CAAiB,CAAjB;AACD,UAFD,MAEO,IAAID,SAAS,EAAb,EAAiB;AACtB,iBAAKhD,MAAL,CAAYiD,IAAZ,CAAiB,CAAC,CAAlB;AACD;AACF,QAND;AAOD;;;6BAEO;AACN,YAAKjD,MAAL,CAAYP,KAAZ;AACD;;;;;;AAGHsB,QAAOC,OAAP,GAAiB5C,MAAjB,C;;;;;;;;;;;;AC7BA,KAAMD,SAAS,mBAAAZ,CAAQ,CAAR,CAAf;AACA,KAAMW,OAAO,mBAAAX,CAAQ,CAAR,CAAb;;KAEMc,Q;AACJ,qBAAYP,GAAZ,EAAiBqD,CAAjB,EAAoBC,CAApB,EAAuBvC,IAAvB,EAA6B;AAAA;;AAC3B,UAAKf,GAAL,GAAWA,GAAX;AACA,UAAKqD,CAAL,GAASA,CAAT;AACA,UAAKC,CAAL,GAASA,CAAT;AACA,UAAKpB,MAAL,GAAc,IAAI7B,MAAJ,CAAWL,GAAX,EAAgBqD,CAAhB,EAAmBC,CAAnB,EAAsB,EAAtB,EAA0B,GAA1B,CAAd;AACD;;;;8BAEQ;AACP,YAAKpB,MAAL,CAAYF,MAAZ;AACD;;;4BAEMjB,I,EAAM;AACX,WAAMqE,OAAQrE,KAAKuC,CAAL,IAAU,KAAKpB,MAAL,CAAYoB,CAAZ,GAAiB,KAAKpB,MAAL,CAAYnC,MAAZ,GAAqB,CAAhD,CAAd;;AAEA,WAAIqF,OAAO,CAAX,EAAc;AACZ,cAAKlD,MAAL,CAAYiD,IAAZ,CAAiB,CAAjB;AACD,QAFD,MAEO,IAAIC,OAAO,CAAC,CAAZ,EAAe;AACpB,cAAKlD,MAAL,CAAYiD,IAAZ,CAAiB,CAAC,CAAlB;AACD,QAFM,MAEA,IAAKpE,KAAKyC,MAAL,GAAc,CAAd,IAAmBzC,KAAKyC,MAAL,GAAc,CAAC,CAAnC,KAA0C4B,OAAO,CAAP,IAAYA,OAAO,CAAC,CAA9D,CAAJ,EAAsE;AAC3E,cAAKlD,MAAL,CAAYiD,IAAZ,CAAiBpE,KAAKyC,MAAtB;AACD;AACF;;;6BAEO;AACN,YAAKtB,MAAL,CAAYP,KAAZ;AACD;;;;;;AAGHsB,QAAOC,OAAP,GAAiB3C,QAAjB,C","file":"./bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a5d8d368585badc3caa9","const Game = require('./game');\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const canvas = document.getElementById('game-canvas');\n const width = 900;\n const height = 600;\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n\n const game = new Game(ctx, width, height);\n game.startGame();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./lib/pong.js","const Ball = require('./ball');\nconst Paddle = require('./paddle');\nconst Player = require('./player');\nconst Computer = require('./computer');\n\nconst animate = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n function(callback) { window.setTimeout(callback, 1000/60); };\n\nclass Game {\n constructor(ctx, width, height) {\n this.ctx = ctx;\n this.width = width;\n this.height = height;\n this.ball = new Ball(ctx, this, this.width / 2, this.height / 2);\n this.player = new Player(ctx, this.width - 31, (this.height / 2) - 60);\n this.computer = new Computer(ctx, 11, (this.height / 2) - 60);\n this.playerScore = 0;\n this.computerScore = 0;\n }\n\n startGame() {\n $('.title').html('');\n $('.new-game-title').html('Welcome to Stick Tennis');\n $('.new-game-instructions')\n .html('Use the up and down arrow keys to control your stick (right side)');\n $('.continue').html(\"(Click here to continue)\");\n\n $('.new-game-box').on('click', this.start.bind(this));\n }\n\n endGame() {\n let message;\n\n if (this.playerScore === 11) {\n message = \"You won!\";\n $('.end-game').css('color', '#50ea56');\n } else {\n message = \"You lost.\";\n $('.end-game').css('color', 'red');\n }\n $('.end-game').html(`Game Over. ${message}`);\n $('.retry').html('Play again?');\n $('.retry').css('border', '1px solid #fff');\n $('.retry').css('cursor', 'pointer');\n\n $('.retry').on('click', this.reset.bind(this));\n }\n\n start() {\n $('.new-game-title').html('');\n $('.new-game-instructions').html('');\n $('.continue').html('');\n\n $('.new-game-box').css('border', 'none');\n $('.new-game-box').off('click');\n $('.new-game-box').css('cursor', 'auto');\n $('.title').html('Stick Tennis');\n $('.restart').html('restart');\n $('.restart').css('border', '1px solid #fff');\n $('.restart').css('cursor', 'pointer');\n $('.restart').on('click', this.reset.bind(this));\n $('#game-canvas').css('border', '1px solid #fff');\n this.animateId = animate(this.step.bind(this));\n }\n\n step() {\n this.update();\n this.render();\n if (this.playerScore === 11 || this.computerScore === 11) {\n this.endGame();\n } else {\n this.animateId = animate(this.step.bind(this));\n }\n }\n\n update() {\n this.ball.update(this.player.paddle, this.computer.paddle);\n this.computer.update(this.ball);\n this.player.update();\n }\n\n centerLine() {\n this.ctx.beginPath();\n this.ctx.setLineDash([5, 15]);\n this.ctx.moveTo(this.width / 2, 0);\n this.ctx.lineTo(this.width / 2, this.height);\n this.ctx.closePath();\n this.ctx.strokeStyle = '#fff';\n this.ctx.stroke();\n }\n\n score() {\n this.ctx.font = 'bold 50px Orbitron';\n this.ctx.fillStyle = '#7f7f7f';\n this.ctx.fillText(this.playerScore, this.width/2 + 30, 70);\n this.ctx.fillText(this.computerScore, this.width/2 - 30 - 40, 70);\n }\n\n render() {\n this.ctx.fillStyle = \"#093c1c\";\n this.ctx.fillRect(0, 0, this.width, this.height);\n this.centerLine();\n this.score();\n this.ball.render();\n this.player.render();\n this.computer.render();\n }\n\n reset() {\n $('.end-game').html('');\n $('.retry').html('');\n $('.retry').css('border', 'none');\n $('.retry').css('cursor', 'auto');\n $('.retry').off('click');\n this.ball.reset();\n this.player.reset();\n this.computer.reset();\n this.playerScore = 0;\n this.computerScore = 0;\n window.cancelAnimationFrame(this.animateId);\n this.start();\n }\n\n}\n\nmodule.exports = Game;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/game.js","const ballSound = new Audio('assets/audio/ball-hit.wav');\n\nclass Ball {\n constructor(ctx, game, x, y) {\n this.x = x;\n this.y = y;\n this.game = game;\n this.ctx = ctx;\n this.xSpeed = -12;\n this.ySpeed = 2;\n this.radius = 12;\n }\n\n render() {\n this.ctx.beginPath();\n this.ctx.arc(\n this.x, this.y, this.radius, 2 * Math.PI, false\n );\n this.ctx.fillStyle = '#00ffa5';\n this.ctx.fill();\n }\n\n update(playerPaddle, computerPaddle) {\n this.x += this.xSpeed;\n this.y += this.ySpeed;\n\n let intLine = false;\n const xLeft = this.x - this.radius;\n const xRight = this.x + this.radius;\n const yTop = this.y - this.radius;\n const yBottom = this.y + this.radius;\n\n if (yTop < 0) {\n this.y = 12;\n this.ySpeed = -this.ySpeed;\n } else if (yBottom > this.game.height) {\n this.y = this.game.height - this.radius;\n this.ySpeed = -this.ySpeed;\n } else if (xRight > this.game.width || xLeft < 0) {\n const oldXSpeed = -this.xSpeed;\n const oldYSpeed = -this.ySpeed;\n this.xSpeed = 0;\n this.ySpeed = 0;\n this.x = this.game.width / 2;\n this.y = this.game.height / 2;\n (xRight > this.game.width) ? (this.game.computerScore += 1) : (this.game.playerScore += 1);\n window.setTimeout(() => {\n this.xSpeed = oldXSpeed;\n this.ySpeed = oldYSpeed / 3;\n }, 500);\n }\n\n if (\n (xRight > playerPaddle.x &&\n xRight < playerPaddle.x + 12 &&\n yBottom > playerPaddle.y &&\n yTop < (playerPaddle.y + playerPaddle.height)) ||\n (xLeft < (computerPaddle.x + computerPaddle.width) &&\n xLeft > (computerPaddle.x + computerPaddle.width - 12) &&\n yBottom > computerPaddle.y &&\n yTop < (computerPaddle.y + computerPaddle.height))\n ) {\n ballSound.volume = 0.3;\n ballSound.play();\n const maxAngle = 3 * Math.PI / 12;\n const paddle = this.x < this.game.width / 2 ? computerPaddle : playerPaddle;\n const relIntY = (paddle.y + (paddle.height / 2)) - this.y;\n const normalized = (relIntY / (paddle.height / 2));\n const bounceAngle = normalized * maxAngle;\n const direction = this.xSpeed > 0 ? -1 : 1;\n\n if (relIntY < 5 && relIntY > -5) {\n this.xSpeed = -this.xSpeed;\n this.ySpeed = -this.ySpeed;\n } else {\n // this.xSpeed = (direction * 12 * Math.cos(bounceAngle));\n this.xSpeed = -this.xSpeed;\n this.ySpeed = 12 * -Math.sin(bounceAngle);\n }\n }\n }\n\n reset() {\n this.x = this.game.width / 2;\n this.y = this.game.height / 2;\n this.xSpeed = -12;\n this.ySpeed = 2;\n }\n}\n\nmodule.exports = Ball;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ball.js","class Paddle {\n constructor(ctx, x, y, width, height) {\n this.ctx = ctx;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n render() {\n this.ctx.fillStyle = '#7f7f7f';\n this.ctx.fillRect(this.x, this.y, this.width, this.height);\n }\n\n move(y) {\n this.y += y;\n\n if (this.y + this.height > 600) {\n this.y = 600 - this.height;\n } else if (this.y < 0) {\n this.y = 0;\n }\n }\n\n reset() {\n this.y = 300 - (this.height / 2);\n this.x = this.x;\n }\n}\n\nmodule.exports = Paddle;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/paddle.js","const Paddle = require('./paddle');\n\nclass Player {\n constructor(ctx, x, y) {\n this.ctx = ctx;\n this.x = x;\n this.y = y;\n this.paddle = new Paddle(ctx, x, y, 20, 120);\n }\n\n render() {\n this.paddle.render();\n }\n\n update() {\n key.getPressedKeyCodes().forEach((code) => {\n if (code === 40) {\n this.paddle.move(5);\n } else if (code === 38) {\n this.paddle.move(-5);\n }\n });\n }\n\n reset() {\n this.paddle.reset();\n }\n}\n\nmodule.exports = Player;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/player.js","const Paddle = require('./paddle');\nconst Ball = require('./ball');\n\nclass Computer {\n constructor(ctx, x, y, ball) {\n this.ctx = ctx;\n this.x = x;\n this.y = y;\n this.paddle = new Paddle(ctx, x, y, 20, 120);\n }\n\n render() {\n this.paddle.render();\n }\n\n update(ball) {\n const diff = (ball.y - (this.paddle.y + (this.paddle.height / 2)));\n\n if (diff > 5) {\n this.paddle.move(5);\n } else if (diff < -5) {\n this.paddle.move(-5);\n } else if ((ball.ySpeed < 5 && ball.ySpeed > -5) && (diff < 5 || diff > -5)) {\n this.paddle.move(ball.ySpeed);\n }\n }\n\n reset() {\n this.paddle.reset();\n }\n}\n\nmodule.exports = Computer;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/computer.js"],"sourceRoot":""}