diff --git a/apps/carcrazy/app.js b/apps/carcrazy/app.js index c7476d18a..07c849c35 100644 --- a/apps/carcrazy/app.js +++ b/apps/carcrazy/app.js @@ -22,6 +22,10 @@ var PurpleCar = require("heatshrink").decompress(atob("ol74UBitg///BIP/7lVqtUDJU var LightGreenCar = require("heatshrink").decompress(atob("ol74UBocF///BIP1z9VqtUDJUVBwIABq2qABOVCCkolQJC0AwDgWolAQD1EqwBCH0EqCCdKxQuEAAkKwGhCH4Q/CGD7ECDINEAAoQIwBACgQQYwQ+EAAcC1EACAeAlQfDAAheBCG2oCBUCCB8qCCiQBdp3+fxW/CH4Q/CH4QxgQQKwAQD1QQK1QQUmQQKxiH/CBGqCB3/5WACA+j/4Qf14QxKjGqRI0CCAv+x4QBEYcC1Wo/SpFCBtUlQQBBgISBAAQGBCAOo6te1QQB///lQPC1AGBCAOqyoQQlAuBCAXPAQIAD/Q2BlGoCAgAGCAUqCBnyCAVS1WrB5AAB9RUDCB1WCB0VVIIQMXQYQ/CAbFBBw/8BQIQFn4QewDNBCQgOCgEACDADBAAMC1T5BCAwABCQIACA4QQZABAQ/CH4Q/CH4QC1APKhQQPlQQUxWgGJOCCAcCCBWACAmqGhAQFwEqCA8qFYIQTuWohWqAAIQE1WghUFCANVD4JFBAAqzBlQPCCCNyHIIQGMoONCAdWQ5WVCCjNJZIYQM1WtCAt6KYwAB0oQFIoIPGIIoQTqhDG6oMDA")); +function consoleDebug(message) { + //console.log(message); +} + function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); @@ -30,21 +34,55 @@ function getRandomInt(min, max) { function moveEnemyPosition(){ score += 1; - randomRoadPositionIndicator = getRandomInt(1, 4); - if ((randomRoadPositionIndicator == 1)) { - randomRoadPosition = 85; - }else if((randomRoadPositionIndicator == 2)){ - randomRoadPosition = 120; - }else { - randomRoadPosition = 155; + checkForNextLevel(); + if(level == 1){ + randomRoadPositionIndicator = getRandomInt(1, 4); + if ((randomRoadPositionIndicator == 1)) { + enemyPositonCenterX = 85; + }else if((randomRoadPositionIndicator == 2)){ + enemyPositonCenterX = 120; + }else { + enemyPositonCenterX = 155; + } + }else if(level == 2||level==3){ + enemyPositonCenterX = getRandomInt(85, 155); + }else if(level == 4 || level == 5 || level == 6 || level == 8 || level == 9 || level == 10 || level > 10){ + do{ + randomRoadPositionIndicator = getRandomInt(1, 4); + randomRoadPositionIndicator2 = getRandomInt(1, 4); + }while(randomRoadPositionIndicator==randomRoadPositionIndicator2); + + if ((randomRoadPositionIndicator == 1)) { + enemyPositonCenterX = 85; + }else if((randomRoadPositionIndicator == 2)){ + enemyPositonCenterX = 120; + }else if((randomRoadPositionIndicator == 3)){ + enemyPositonCenterX = 155; + } + + if ((randomRoadPositionIndicator2 == 1)) { + enemyPositonCenterX2 = 85; + }else if((randomRoadPositionIndicator2 == 2)){ + enemyPositonCenterX2 = 120; + }else if((randomRoadPositionIndicator2 == 3)){ + enemyPositonCenterX2 = 155; + }else if(level == 7||level == 8){ + + } } } function collision(){ if(gameStatus == GAMEPLAYING){ + consoleDebug("Px:"+playerCarLeftX+", "+playerCarRightX); + consoleDebug("1x:"+enemyCarLeftX+", "+enemyCarRightX); + consoleDebug("2x:"+enemyCarLeftX2+", "+enemyCarRightX2); + consoleDebug("Py:"+playerCarFrontY); + consoleDebug("1y:"+enemyCarFrontY); + consoleDebug("2y:"+enemyCarFrontY2); if ( - (enemyCarFrontY > playerCarFrontY) + (enemyCarFrontY < 300 && enemyCarFrontY > playerCarFrontY) && ( (enemyCarLeftX > playerCarLeftX && enemyCarLeftX < playerCarRightX) @@ -52,51 +90,105 @@ function collision(){ (enemyCarRightX > playerCarLeftX && enemyCarRightX < playerCarRightX) ) ){ - // hit - setTimeout(collision, 2500); // wait 2.5 second for the function to actiavte agian. - numberofHearts -= 1; - score -= 1; - Bangle.buzz(); - }else{ - // miss - setTimeout(collision, 1); // try again in 1 milliseconds. + // hit car 1 + consoleDebug("1 HIT"); + enemyPositonCenterY = 300; + numberofHearts -= 1; + Bangle.buzz(50,50); + }else if + ( + (enemyCarFrontY2 < 300 && enemyCarFrontY2 > playerCarFrontY) + && + ( + (enemyCarLeftX2 > playerCarLeftX && enemyCarLeftX2 < playerCarRightX) + || + (enemyCarRightX2 > playerCarLeftX && enemyCarRightX2 < playerCarRightX) + ) + ){ + // hit car 2 + consoleDebug("2 HIT"); + enemyPositonCenterY2 = 300; + numberofHearts -= 1; + Bangle.buzz(50,50); } + setTimeout(collision, 50); // try again in 50 milliseconds. } } -function storeMyData(data) { - // ensure there are less than 500 elements in the array - while (log.length >= 500) log.shift(); - // append a new item to the array - log.push(data); +function checkForNextLevel(){ + if(score < 10){ + level = 1; + }else if(score >= 10 && score < 20){ + level = 2; + }else if(score >= 20 && score < 30){ + level = 3; + }else if(score >= 30 && score < 40){ + level = 4; + }else if(score >= 40 && score < 50){ + level = 5; + }else if(score >= 50 && score < 60){ + level = 6; + }else if(score >= 60 && score < 70){ + level = 7; + }else if(score >= 70 && score < 80){ + level = 8; + }else if(score >= 80 && score < 90){ + level = 9; + }else if(score >= 90){ + level = 10; + } } +var accel = Bangle.getAccel(); var file = require("Storage").open("CarCrazy.csv","r"); var currentHighScore = file.readLine(); if (currentHighScore == undefined) currentHighScore = 0; + var BackgroundStartingPosition = 75; -var carScale = 0.5; -var accel = Bangle.getAccel(); -var playerCarPosition = 120-accel.x*40; var BackgroundYPosition = BackgroundStartingPosition; -var randomRoadPositionIndicator = getRandomInt(1, 3); -var randomRoadPosition = 120; -var enemyPositonY = 30; + +var randomRoadPositionIndicator; +var randomRoadPositionIndicator2; +var enemyPositonCenterX; +var enemyPositonCenterX2; + +var carScale = 0.5; var carWidth = 30; var carHeight = 60; -var playerCarY = 130; -var enemyCarLeftX; -var enemyCarRightX; + +var playerCarCenterY = 130; +var playerCarCenterX; + +var enemyPositonCenterY = 0 - carHeight/2; +var enemyPositonCenterY2 = 0 - carHeight/2; + var playerCarLeftX; var playerCarRightX; -var enemyCarFrontY; var playerCarFrontY; + +var playerCarFrontY; +var playerCarBackY; +var playerCarLeftX; +var playerCarRightX; + +var enemyCarFrontY; +var enemyCarBackY; +var enemyCarLeftX; +var enemyCarRightX; + +var enemyCarFrontY2; +var enemyCarBackY2; +var enemyCarLeftX2; +var enemyCarRightX2; + var GAMEPLAYING = 1; var GAMEOVER = 2; var GAMESTART = 3; var gameStatus = GAMESTART; var score = 0; +var level = 1; + moveEnemyPosition(); collision(); @@ -114,11 +206,16 @@ function draw(){ if(gameStatus == GAMEPLAYING){ BackgroundYPosition += 10; accel = Bangle.getAccel(); - playerCarPosition = 120-accel.x*40; + playerCarCenterX = Math.round(120-accel.x*120); + if (playerCarCenterX > 170) { playerCarCenterX = 170; } + if (playerCarCenterX < 70) { playerCarCenterX = 70; } g.flip(); g.drawImage(backgroundImage,125,BackgroundYPosition, {scale:13,rotate:0}); - g.drawImage(RedCar,playerCarPosition,playerCarY, {scale:carScale,rotate:3.142}); - g.drawImage(OrangeCar,randomRoadPosition,enemyPositonY, {scale:carScale,rotate:0}); + g.drawImage(RedCar,playerCarCenterX,playerCarCenterY, {scale:carScale,rotate:3.142}); + g.drawImage(OrangeCar,enemyPositonCenterX,enemyPositonCenterY, {scale:carScale,rotate:0}); + if(level>=4){ + g.drawImage(OrangeCar,enemyPositonCenterX2,enemyPositonCenterY2, {scale:carScale,rotate:0}); + } if(numberofHearts==3){ g.drawImage(heartImage,10,10, {scale:2,rotate:0}); @@ -141,23 +238,38 @@ function draw(){ } } - playerCarFrontY = playerCarY-carHeight/2; - playerCarBackY = playerCarY+carHeight/2; - playerCarLeftX = playerCarPosition-carWidth/2; - playerCarRightX = playerCarPosition+carWidth/2; + playerCarFrontY = playerCarCenterY-carHeight/2; + playerCarBackY = playerCarCenterY+carHeight/2; + playerCarLeftX = playerCarCenterX-carWidth/2; + playerCarRightX = playerCarCenterX+carWidth/2; - enemyCarFrontY = enemyPositonY+carHeight/2; - enemyCarBackY = enemyPositonY-carHeight/2; - enemyCarLeftX = randomRoadPosition-carWidth/2; - enemyCarRightX = randomRoadPosition+carWidth/2; + enemyCarFrontY = enemyPositonCenterY+carHeight/2; + enemyCarBackY = enemyPositonCenterY-carHeight/2; + enemyCarLeftX = enemyPositonCenterX-carWidth/2; + enemyCarRightX = enemyPositonCenterX+carWidth/2; + enemyCarFrontY2 = enemyPositonCenterY2+carHeight/2; + enemyCarBackY2 = enemyPositonCenterY2-carHeight/2; + enemyCarLeftX2 = enemyPositonCenterX2-carWidth/2; + enemyCarRightX2 = enemyPositonCenterX2+carWidth/2; + + g.setColor(255,0,0); //g.drawRect(playerCarLeftX, playerCarFrontY, playerCarRightX, playerCarBackY); //g.drawRect(enemyCarLeftX, enemyCarFrontY, enemyCarRightX, enemyCarBackY); + //g.drawRect(enemyCarLeftX2, enemyCarFrontY2, enemyCarRightX2, enemyCarBackY2); g.setColor(0,0,0); g.drawString("Score: "+score,180,5); g.drawString("HighScore:",178,15); g.drawString(currentHighScore,205,25); + g.drawString("Level: "+level,180,150); + + //g.drawString("P:"+playerCarLeftX+", "+playerCarRightX,180,90); + //g.drawString("1:"+enemyCarLeftX+", "+enemyCarRightX,180,100); + //g.drawString("2:"+enemyCarLeftX2+", "+enemyCarRightX2,180,110); + //g.drawString("P:"+playerCarFrontY,180,120); + //g.drawString("1:"+enemyCarFrontY,180,130); + //g.drawString("2:"+enemyCarFrontY2,180,140); if(BackgroundYPosition > 170){ BackgroundYPosition = BackgroundStartingPosition; @@ -200,41 +312,75 @@ function draw(){ g.drawString("2 To Start",10,130); g.drawImage(LightGreenCar,180,115, {scale:0.5,rotate:3}); g.drawImage(PurpleCar,215,115, {scale:0.5,rotate:3}); - //setTimeout(displayPopup, 3000); } } -setInterval(draw ,10); +setInterval(draw, 50); function moveEnemyCar(){ if(gameStatus == GAMEPLAYING){ - enemyPositonY = enemyPositonY + 10; - if((enemyPositonY > 200)){ - enemyPositonY = 30; + if(level==1||level==2){ + enemyPositonCenterY = enemyPositonCenterY + 10; + enemyPositonCenterY2 = 0; + }else if(level==3){ + enemyPositonCenterY = enemyPositonCenterY + 12; + enemyPositonCenterY2 = 0; + }else if(level==4){ + enemyPositonCenterY = enemyPositonCenterY + 8; + enemyPositonCenterY2 = enemyPositonCenterY2 + 8; + }else if(level==5){ + enemyPositonCenterY = enemyPositonCenterY + 9; + enemyPositonCenterY2 = enemyPositonCenterY2 + 9; + }else if(level==6){ + enemyPositonCenterY = enemyPositonCenterY + 9.5; + enemyPositonCenterY2 = enemyPositonCenterY2 + 8; + }else if(level==7){ + enemyPositonCenterY = enemyPositonCenterY + 10; + enemyPositonCenterY2 = enemyPositonCenterY2 + 8; + }else if(level==8){ + enemyPositonCenterY = enemyPositonCenterY + 11.5; + enemyPositonCenterY2 = enemyPositonCenterY2 + 11.5; + }else if(level>=9){ + enemyPositonCenterY = enemyPositonCenterY + 13; + enemyPositonCenterY2 = enemyPositonCenterY2 + 14; + } + if(enemyPositonCenterY > 200){ + enemyPositonCenterY = 300; + } + if(enemyPositonCenterY2 > 200){ + enemyPositonCenterY2 = 300; + } + if(enemyPositonCenterY > 200 && (enemyPositonCenterY2 > 200 || level < 4)){ + enemyPositonCenterY = 0 - carHeight/2; + if (level >= 4) { enemyPositonCenterY2 = 0 - carHeight/2; } moveEnemyPosition(); } } } -setInterval(moveEnemyCar,10); +setInterval(moveEnemyCar,50); setWatch(() => { if(gameStatus == GAMESTART){ gameStatus = GAMEPLAYING; collision(); - enemyPositonY = 0; - score = 0; + numberofHearts = 3; + enemyPositonCenterX = 120; + enemyPositonCenterY = 0 - carHeight/2; + enemyPositonCenterX2 = 120; + enemyPositonCenterY2 = 0 - carHeight/2; + score = 100; + level = 1; + checkForNextLevel(); }else if(gameStatus == GAMEOVER){ gameStatus = GAMEPLAYING; collision(); - enemyPositonY = 0; + enemyPositonCenterX = 120; + enemyPositonCenterY = 0 - carHeight/2; + enemyPositonCenterX2 = 120; + enemyPositonCenterY2 = 0 - carHeight/2; numberofHearts = 3; score = 0; + level = 1; + checkForNextLevel(); } }, BTN2, {repeat:true}); - - - - - - -