1.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. var width = window.innerWidth;
  2. var height = window.innerHeight;
  3. var PI=Math.PI;
  4. var absoluteBaseSpeed=200;
  5. var baseSpeed=absoluteBaseSpeed;
  6. console.log(width,height);
  7. var tqwidth = (width*0.75)|0
  8. var tqwbase = (((width-tqwidth)/2))
  9. var opponentcount=60;
  10. var opponentpause=10;
  11. var opponentspeedfactor=0.75;
  12. var fatdownloadsize=130;
  13. var score=0;
  14. var fatscore=0;
  15. var fatrisk=false;
  16. var stext;
  17. var fstext;
  18. var fdcs=15;
  19. var game = new Phaser.Game(width, height, Phaser.CANVAS, 'gameContainer', { preload: preload, create: create, update: update, render: render });
  20. function preload() {
  21. game.load.image('player', 'player.png');
  22. game.load.image('opponent', 'opponent.png');
  23. game.load.image('opponentb', 'opponentb.png');
  24. game.load.image('opponent2', 'opponent2.png');
  25. game.load.image('opponent2b', 'opponent2b.png');
  26. game.load.image('background', 'background.png');
  27. }
  28. var player;
  29. var pad;
  30. var opponents=[];
  31. var fatdownload=[];
  32. var bg;
  33. function create() {
  34. game.physics.startSystem(Phaser.Physics.ARCADE);
  35. game.stage.backgroundColor = '#000000';
  36. //calc 3/4 width;
  37. console.log("TQWBase",tqwbase);
  38. bg = game.add.tileSprite(tqwbase, 0, tqwidth, height, 'background');
  39. //bg.fixedToCamera = true;
  40. player = game.add.sprite((width/2)-16,height-200,'player')
  41. this.game.physics.enable(player, Phaser.Physics.ARCADE);
  42. player.body.drag.set(0.2);
  43. player.body.maxVelocity.setTo(400, 400);
  44. player.body.collideWorldBounds = true;
  45. game.input.gamepad.start();
  46. initOpponents();
  47. //falls pad nicht funktioniert mittels GamepadDebug sample schauen welches pad das aktive ist und entsprechend umcoden
  48. pad = game.input.gamepad.pad1;
  49. pad.addCallbacks(this, { onConnect: addButtons });
  50. stext = game.add.text(10, 40, "Packets:0",{
  51. font: "30px arial",
  52. fill: "#ff0044",
  53. align: "center"
  54. });
  55. fstext = game.add.text(10, 80, "Fat downloads:0",{
  56. font: "30px arial",
  57. fill: "#ff0044",
  58. align: "center"
  59. });
  60. }
  61. function initOpponents()
  62. {
  63. for(var oc=0;oc<opponentcount;oc++)
  64. {//preseed of opponent cache
  65. var bx=game.rnd.between(0,3)>1;
  66. var flubberflargh = game.add.sprite(0,-100,(bx?'opponent':'opponentb'));
  67. this.game.physics.enable(flubberflargh, Phaser.Physics.ARCADE);
  68. flubberflargh.body.drag.set(0.2);
  69. flubberflargh.body.maxVelocity.setTo(400, 400);
  70. opponents[oc]=flubberflargh;
  71. }
  72. for(var fc=0;fc<fatdownloadsize;fc++)
  73. {//preseed of fatdl cache
  74. var b=game.rnd.between(0,4)>1;
  75. var blubberlutsch = game.add.sprite(0,-100-(fdcs*fc),(b?'opponent2':'opponent2b'));
  76. this.game.physics.enable(blubberlutsch, Phaser.Physics.ARCADE);
  77. blubberlutsch.body.drag.set(0.2);
  78. blubberlutsch.body.maxVelocity.setTo(400, 400);
  79. fatdownload[fc]=blubberlutsch;
  80. }
  81. }
  82. function addButtons() {
  83. // We can't do this until we know that the gamepad has been connected and is started
  84. buttonA = pad.getButton(Phaser.Gamepad.XBOX360_A);
  85. buttonB = pad.getButton(Phaser.Gamepad.XBOX360_B);
  86. buttonX = pad.getButton(Phaser.Gamepad.XBOX360_X);
  87. buttonY = pad.getButton(Phaser.Gamepad.XBOX360_Y);
  88. buttonA.onDown.add(onDown, this);
  89. buttonB.onDown.add(onDown, this);
  90. buttonX.onDown.add(onDown, this);
  91. buttonY.onDown.add(onDown, this);
  92. buttonA.onUp.add(onUp, this);
  93. buttonB.onUp.add(onUp, this);
  94. buttonX.onUp.add(onUp, this);
  95. buttonY.onUp.add(onUp, this);
  96. }
  97. var ocb = 0;
  98. function update() {
  99. var baseSpeed=absoluteBaseSpeed+(((score/100)|0)*50)
  100. bg.tilePosition.y += 10;
  101. stext.setText("Packets:"+score);
  102. fstext.setText("Fat downloads:"+fatscore);
  103. if(pad&&pad._rawPad)
  104. {
  105. var vx =0;
  106. //TODO für später, vielleicht feiner abstufen, deadzone(!!!);
  107. if (pad.isDown(Phaser.Gamepad.XBOX360_DPAD_LEFT) || pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_X) < -0.1||pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_X) < -0.1)
  108. {
  109. var af=0;
  110. if(pad.isDown(Phaser.Gamepad.XBOX360_DPAD_LEFT))
  111. {
  112. af=1.0;
  113. }
  114. if(pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_X) < -0.1)
  115. {
  116. af= -pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_X)
  117. }
  118. if(pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_X) < -0.1)
  119. {
  120. af= -pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_X)
  121. }
  122. if(player.x>=tqwbase)
  123. {
  124. vx=-baseSpeed*af;
  125. }
  126. }
  127. else if (pad.isDown(Phaser.Gamepad.XBOX360_DPAD_RIGHT) || pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_X) > 0.1||pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_X) > 0.1)
  128. {
  129. var af=0;
  130. if(pad.isDown(Phaser.Gamepad.XBOX360_DPAD_RIGHT))
  131. {
  132. af=1.0;
  133. }
  134. if(pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_X) > 0.1)
  135. {
  136. af= pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_X)
  137. }
  138. if(pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_X) > 0.1)
  139. {
  140. af= pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_X)
  141. }
  142. if(player.x<=(width-tqwbase-32))
  143. {
  144. vx=baseSpeed;
  145. }
  146. }
  147. /*
  148. if (pad.isDown(Phaser.Gamepad.XBOX360_DPAD_UP) || pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_Y) < -0.1||pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_Y) < -0.1)
  149. {
  150. vy=-baseSpeed;
  151. }
  152. else if (pad.isDown(Phaser.Gamepad.XBOX360_DPAD_DOWN) || pad.axis(Phaser.Gamepad.XBOX360_STICK_LEFT_Y) > 0.1||pad.axis(Phaser.Gamepad.XBOX360_STICK_RIGHT_Y) >0.1)
  153. {
  154. vy=baseSpeed;
  155. }
  156. */
  157. player.body.velocity.x=vx;
  158. //player.body.velocity.y=vy;
  159. }
  160. for(var opcol=0;opcol<opponentcount;opcol++)
  161. {
  162. var opn = opponents[opcol];
  163. if(opn.y>-50&&opn.y<(height-opn.height))
  164. {
  165. opn.body.velocity.y=baseSpeed*opponentspeedfactor;
  166. }
  167. if(opn.x<tqwbase||opn.x>(width-tqwbase-opn.width))
  168. {
  169. opn.body.velocity.x=0;
  170. }
  171. if(opn.y>height)
  172. {
  173. score++;
  174. opn.y=-100;
  175. }
  176. game.physics.arcade.collide(player, opn,
  177. gameover,
  178. function(){return true}, this);
  179. }
  180. if(ocb%opponentpause==0)
  181. {
  182. var nxoidx = (ocb/opponentpause)|0;
  183. console.log(nxoidx);
  184. var nxo = opponents[nxoidx]
  185. if(nxo.y<-50||nxo.y>height)
  186. {
  187. //console.log(ocb);
  188. nxo.y=-30;
  189. nxo.x=game.rnd.between(tqwbase,tqwbase+tqwidth-nxo.width);
  190. console.log(nxo.x);
  191. nxo.body.velocity.y=baseSpeed*opponentspeedfactor;
  192. nxo.body.velocity.x=0;
  193. var fff = game.rnd.between(0,1000);
  194. if(fff<50)
  195. {
  196. nxo.body.velocity.x=fff-50;
  197. }
  198. if(fff>950)
  199. {
  200. nxo.body.velocity.x=fff-950;
  201. }
  202. }
  203. //ocb++;
  204. }
  205. ocb=(ocb+1)%(opponentcount*opponentpause);
  206. var fdc = game.rnd.between(0,1000);
  207. if(fdc>500&&fatdownload[0].y<-50)
  208. {
  209. var fdcolumn = game.rnd.between(tqwbase,tqwbase+tqwidth-fatdownload[0].width);
  210. for(var fc=0;fc<fatdownloadsize;fc++)
  211. {
  212. var fds = fatdownload[fc];
  213. fds.x=fdcolumn
  214. fds.y=fds.y+70;
  215. fds.body.velocity.y=baseSpeed*opponentspeedfactor;
  216. }
  217. }
  218. else
  219. {
  220. if(fatdownload[0].y>-50)//fatdownload transferierend
  221. {
  222. for(var fcc=0;fcc<fatdownloadsize;fcc++)
  223. {
  224. fds = fatdownload[fcc];
  225. fds.body.velocity.y=baseSpeed*opponentspeedfactor;
  226. game.physics.arcade.collide(player,fds ,
  227. gameover,
  228. function(){return true}, this);
  229. }
  230. }
  231. }
  232. if(fatdownload[fatdownloadsize-1].y>height-200 &&!fatrisk&&fatdownload[fatdownloadsize-1].y<height-170)
  233. {
  234. var fx = fatdownload[fatdownloadsize-1].x
  235. if(fx<=(tqwbase+(tqwidth*0.2)|0)&&player.x<fx)
  236. {
  237. fatrisk=true;
  238. fatscore+=9;
  239. }
  240. else
  241. {
  242. if(fx>=(width-tqwbase-(tqwidth*0.2)|0)&&player.x>fx)
  243. {
  244. fatrisk=true;
  245. fatscore+=9;
  246. }
  247. }
  248. }
  249. if(fatdownload[fatdownloadsize-1].y>height)
  250. {
  251. fatscore++;
  252. fatrisk=false;
  253. for(var fc=0;fc<fatdownloadsize;fc++)
  254. {
  255. var fds = fatdownload[fc];
  256. fds.x=0
  257. fds.y=-100-(fdcs*fc);
  258. fds.body.velocity.y=0;
  259. }
  260. }
  261. }
  262. function gameover()
  263. {
  264. score=0;
  265. fatscore=0;
  266. for(var p=0;p<opponentcount;p++)
  267. {
  268. var o = opponents[p];
  269. o.exists=false;
  270. opponents[p]=null;
  271. };
  272. for(var q=0;q<fatdownloadsize;q++)
  273. {
  274. var r = fatdownload[q];
  275. r.exists=false;
  276. fatdownload[q]=null;
  277. }
  278. console.log("Ätschebätsche");
  279. alert("Packet Loss");
  280. initOpponents();
  281. player.y=height-200;
  282. player.body.velocity.y=0;
  283. }
  284. function onDown(button, value) {
  285. /*
  286. if (button.buttonCode === Phaser.Gamepad.XBOX360_A)
  287. {
  288. //TODO
  289. }
  290. else if (button.buttonCode === Phaser.Gamepad.XBOX360_B)
  291. {
  292. }*/
  293. }
  294. function onUp(button, value) {
  295. /*
  296. if (button.buttonCode === Phaser.Gamepad.XBOX360_A)
  297. {
  298. //TODO
  299. }
  300. else if (button.buttonCode === Phaser.Gamepad.XBOX360_B)
  301. {
  302. }*/
  303. }
  304. function render () {
  305. // game.debug.text(game.time.physicsElapsed, 32, 32);
  306. // game.debug.body(player);
  307. // game.debug.bodyInfo(player, 16, 24);
  308. }