Team:AUC TURKEY/HumanPractices/FlashGame
From 2013hs.igem.org
(Difference between revisions)
(Created page with "{{AUC_Turkey}} <forum_subtle/>") |
|||
Line 1: | Line 1: | ||
{{AUC_Turkey}} | {{AUC_Turkey}} | ||
+ | |||
+ | ==Flash Game== | ||
+ | <html> | ||
+ | <center> | ||
+ | <embed src="https://static.igem.org/mediawiki/2012hs/3/39/TheLastOfTheFreshEcolis.swf" width="550" height="400" /> | ||
+ | </center> | ||
+ | <br/> | ||
+ | <div style="margin:20px; margin-top:5px"> | ||
+ | <div class="smallfont" style="margin-bottom:2px">Here's the <b>source code</b> of the game if you're interested:<input type="button" value="Click" style="width:45px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = '';} else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = '';}"> | ||
+ | </div> | ||
+ | <div class="alt2" style="margin: 0px; padding: 6px; border: 1px inset;"> | ||
+ | <div style="display: none;"> | ||
+ | <pre> | ||
+ | //platform | ||
+ | var platform:MovieClip = _root.createEmptyMovieClip("platform", _root.getNextHighestDepth()); | ||
+ | var pID:Number = 20; | ||
+ | var pLeft:Number = 0; | ||
+ | var pRight:Number = pID * 40; | ||
+ | var pFall:Number = 57; | ||
+ | var pInc:Number = 3; | ||
+ | //speed | ||
+ | var speedTimer:Number = 0; | ||
+ | var speedWait:Number = 48; | ||
+ | var speedInc:Number = .2; | ||
+ | var speed:Number = 7; | ||
+ | var minSpeed:Number = 5; | ||
+ | //jump | ||
+ | var fallSpeed:Number = 0; | ||
+ | var jumpSpeed:Number = 10; | ||
+ | var floor:Number = 250; | ||
+ | var jump:Number = 0; | ||
+ | var doubleJump:Boolean = false; | ||
+ | var gravity:Number = .5; | ||
+ | var plat_arr:Array = [pLeft, 250, pRight]; | ||
+ | var signal:Boolean = true; | ||
+ | //animation | ||
+ | var animFrame:Number = 0; | ||
+ | igeman_mc.stop(); | ||
+ | igeman_mc.run.stop(); | ||
+ | //fps | ||
+ | var fps:Number = 48; | ||
+ | var frames:Number = 0; | ||
+ | var startTime:Number = 0; | ||
+ | //fire | ||
+ | var nextFire:Number = random(5) + 20; | ||
+ | //ice | ||
+ | var ices:MovieClip = _root.createEmptyMovieClip("ices", _root.getNextHighestDepth()); | ||
+ | var iceUse:Number = 1; | ||
+ | var iceGiven:Number = 1; | ||
+ | var iceReady:Boolean = true; | ||
+ | var iceCooldown:Number = 0; | ||
+ | var iceFloor:Number = 0; | ||
+ | var iceRight:Number = 0; | ||
+ | var iceWait:Number = 120; | ||
+ | //music | ||
+ | var doMute:Boolean = true; | ||
+ | var firstMute:Number = mute_mc.getDepth(); | ||
+ | mute_mc.swapDepths(_root.getNextHighestDepth()); | ||
+ | if (snd) | ||
+ | { | ||
+ | mute_mc.gotoAndStop(1); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | mute_mc.gotoAndStop(2); | ||
+ | } | ||
+ | var loop_snd:Sound = new Sound(this); | ||
+ | var pauseTime:Number = 2000; | ||
+ | var pause:Number; | ||
+ | loop_snd.onSoundComplete = processPause; | ||
+ | loop_snd.attachSound("music"); | ||
+ | function loopSound() | ||
+ | { | ||
+ | clearInterval(pause); | ||
+ | loop_snd.start(0,1); | ||
+ | } | ||
+ | function processPause() | ||
+ | { | ||
+ | pause = setInterval(loopSound, pauseTime); | ||
+ | } | ||
+ | if (snd) | ||
+ | { | ||
+ | loopSound(); | ||
+ | } | ||
+ | mute_btn.onPress = function() | ||
+ | { | ||
+ | if (snd) | ||
+ | { | ||
+ | pos = loop_snd.position / 1000; | ||
+ | loop_snd.stop(); | ||
+ | mute_mc.gotoAndStop(2); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | loop_snd.start(pos); | ||
+ | mute_mc.gotoAndStop(1); | ||
+ | } | ||
+ | snd = !snd; | ||
+ | }; | ||
+ | //pause | ||
+ | var doPause:Boolean = true; | ||
+ | var firstPause:Number = pause_mc.getDepth(); | ||
+ | pause_mc.swapDepths(_root.getNextHighestDepth()); | ||
+ | var paused:Boolean = false; | ||
+ | pause_btn.onPress = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | pause_mc.gotoAndStop(1); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | pause_mc.gotoAndStop(2); | ||
+ | } | ||
+ | paused = !paused; | ||
+ | }; | ||
+ | |||
+ | //game over | ||
+ | var over:Boolean = false; | ||
+ | var score:Number = 0; | ||
+ | var minTemp:Number = Infinity; | ||
+ | //the Code | ||
+ | for (var i:Number = 0; i < pID; i++) | ||
+ | { | ||
+ | var newPlat:MovieClip = platform.attachMovie("platform", "platform_" + i + "_mc", | ||
+ | platform.getNextHighestDepth()); | ||
+ | newPlat._x = i * 40; | ||
+ | newPlat._y = 250; | ||
+ | if (--nextFire == 0) | ||
+ | { | ||
+ | var newFire:MovieClip = platform.attachMovie("fire", "fire_" + pID + "_mc", | ||
+ | platform.getNextHighestDepth()); | ||
+ | nextFire = random(12) + 3; | ||
+ | newFire._x = newPlat._x + 20; | ||
+ | newFire._y = newPlat._y + 10; | ||
+ | newFire.onEnterFrame = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | if (igeman_mc.hitTest(this._x + platform._x, this._y - 50, true)) | ||
+ | { | ||
+ | speed -= .4; | ||
+ | } | ||
+ | if (platform._x < -this._x - 80) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | }; | ||
+ | } | ||
+ | newPlat.onEnterFrame = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | this.gotoAndStop(Math.max(1, (200 - (int(speed * 8))))); | ||
+ | if (platform._x < -this._x - 80) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | }; | ||
+ | } | ||
+ | onEnterFrame = function () | ||
+ | { | ||
+ | //mute | ||
+ | if (Key.isDown(77)) | ||
+ | { | ||
+ | if (doMute) | ||
+ | { | ||
+ | mute_btn.onPress(); | ||
+ | doMute = false; | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | doMute = true; | ||
+ | } | ||
+ | //pause | ||
+ | if (Key.isDown(80)) | ||
+ | { | ||
+ | if (doPause) | ||
+ | { | ||
+ | pause_btn.onPress(); | ||
+ | doPause = false; | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | doPause = true; | ||
+ | } | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | var currentTime:Number = (getTimer() - startTime) / 1000; | ||
+ | frames++; | ||
+ | if (currentTime > 1) | ||
+ | { | ||
+ | fps = Math.floor((frames / currentTime) * 10.0) / 10.0; | ||
+ | startTime = getTimer(); | ||
+ | frames = 0; | ||
+ | } | ||
+ | if (signal && igeman_mc._x - platform._x + 20 > plat_arr[0]) | ||
+ | { | ||
+ | floor = plat_arr[1]; | ||
+ | plat_arr = plat_arr.slice(2); | ||
+ | signal = !signal; | ||
+ | realFloor = floor; | ||
+ | } | ||
+ | if (!signal && igeman_mc._x - platform._x - 20 > plat_arr[0]) | ||
+ | { | ||
+ | floor = 800; | ||
+ | plat_arr = plat_arr.slice(1); | ||
+ | signal = !signal; | ||
+ | realFloor = floor; | ||
+ | } | ||
+ | if (igeman_mc._x - platform._x - 10 < iceRight) | ||
+ | { | ||
+ | floor = Math.min(realFloor, iceFloor); | ||
+ | if (floor == iceFloor && !jump) | ||
+ | { | ||
+ | speedInc = 1.2; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | speedInc = .2; | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | speedInc = .2; | ||
+ | floor = realFloor; | ||
+ | } | ||
+ | if (!over) | ||
+ | { | ||
+ | if (platform._x <= -pLeft + 550) | ||
+ | { | ||
+ | addPlatform(); | ||
+ | pFall += pInc; | ||
+ | } | ||
+ | if (++speedTimer >= speedWait) | ||
+ | { | ||
+ | speedTimer = 0; | ||
+ | speed += speedInc; | ||
+ | } | ||
+ | if (speed < minSpeed) | ||
+ | { | ||
+ | speed = minSpeed; | ||
+ | } | ||
+ | platform._x -= speed * 12 / 25; | ||
+ | ices._x -= speed * 12 / 25; | ||
+ | animFrame = (animFrame + speed * 25 / 120) % igeman_mc.run._totalframes; | ||
+ | igeman_mc.run.gotoAndStop(int(animFrame)); | ||
+ | if (!jump && floor > igeman_mc._y + 95 / 2) | ||
+ | { | ||
+ | fallSpeed = 0; | ||
+ | jump = 1; | ||
+ | } | ||
+ | if (Key.isDown(Key.UP)) | ||
+ | { | ||
+ | if (jump == 0) | ||
+ | { | ||
+ | fallSpeed = -jumpSpeed; | ||
+ | jump++; | ||
+ | } | ||
+ | if (doubleJump == true) | ||
+ | { | ||
+ | fallSpeed = -jumpSpeed; | ||
+ | jump++; | ||
+ | doubleJump = false; | ||
+ | } | ||
+ | } | ||
+ | else if (jump == 1) | ||
+ | { | ||
+ | doubleJump = true; | ||
+ | } | ||
+ | if (floor + 1 < igeman_mc._y + 95 / 2) | ||
+ | { | ||
+ | over = true; | ||
+ | ices.removeMovieClip(); | ||
+ | } | ||
+ | } | ||
+ | if (jump || over) | ||
+ | { | ||
+ | igeman_mc._y += fallSpeed += gravity; | ||
+ | if (igeman_mc._y > floor - 95 / 2 && !over) | ||
+ | { | ||
+ | jump = 0; | ||
+ | doubleJump = false; | ||
+ | igeman_mc._y = floor - 95 / 2; | ||
+ | } | ||
+ | } | ||
+ | if (jump) | ||
+ | { | ||
+ | igeman_mc.gotoAndStop(2); | ||
+ | animFrame = 25; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | igeman_mc.gotoAndStop(1); | ||
+ | } | ||
+ | var dist:Number = Math.floor((-platform._x) / 50); | ||
+ | //ice | ||
+ | if (dist >= iceGiven * iceWait) | ||
+ | { | ||
+ | iceGiven++; | ||
+ | iceUse++; | ||
+ | } | ||
+ | if (iceCooldown > 0) | ||
+ | { | ||
+ | iceCooldown--; | ||
+ | } | ||
+ | if (Key.isDown(Key.SPACE)) | ||
+ | { | ||
+ | if (iceReady && iceUse && !iceCooldown) | ||
+ | { | ||
+ | iceCooldown = 24; | ||
+ | iceReady = false; | ||
+ | iceUse--; | ||
+ | iceRight = -platform._x + igeman_mc._x + 300; | ||
+ | var newIce:MovieClip = ices.attachMovie("ice", "ice", ices.getNextHighestDepth()); | ||
+ | newIce._x = -platform._x + igeman_mc._x; | ||
+ | newIce._y = igeman_mc._y + 95 / 2; | ||
+ | iceFloor = newIce._y; | ||
+ | newIce.onEnterFrame = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | if (this._x < -300 - ices._x) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | }; | ||
+ | } | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | iceReady = true; | ||
+ | } | ||
+ | //ui | ||
+ | //fps_txt.text = (Math.round(fps * 10) / 10); | ||
+ | speed_txt.text = (Math.round(speed * 10) / 10); | ||
+ | dist_txt.text = dist; | ||
+ | special_txt.text = iceUse; | ||
+ | special_mc._xscale = 100 - (iceGiven * iceWait - dist) / iceWait * 100; | ||
+ | //temp_txt.text = (200 - (int(speed * 8))); | ||
+ | var temp:Number = (200 - (int(speed * 8))); | ||
+ | minTemp = Math.min(minTemp, temp); | ||
+ | thermometer_mc.gotoAndStop(Math.max(1, temp)); | ||
+ | bg_mc.gotoAndStop(Math.max(1, temp)); | ||
+ | if (igeman_mc._y > 400) | ||
+ | { | ||
+ | over = true; | ||
+ | loop_snd.stop(); | ||
+ | platform.removeMovieClip(); | ||
+ | ices.removeMovieClip(); | ||
+ | score = dist * 25 + Math.pow(Math.min(Math.max(0, 144 - minTemp), 144), 2); | ||
+ | mute_mc.swapDepths(firstMute); | ||
+ | pause_mc.swapDepths(firstPause); | ||
+ | nextFrame(); | ||
+ | delete onEnterFrame; | ||
+ | } | ||
+ | }; | ||
+ | function addPlatform() | ||
+ | { | ||
+ | var h:Number = random(150) + 200; | ||
+ | var len:Number = random(10) + 1; | ||
+ | var moving:Boolean = false; | ||
+ | pLeft = pRight + pFall; | ||
+ | pRight = pLeft + len * 40; | ||
+ | plat_arr.push(pLeft); | ||
+ | plat_arr.push(h); | ||
+ | plat_arr.push(pRight); | ||
+ | if (len > 4 && !(random(5))) | ||
+ | { | ||
+ | moving = true; | ||
+ | } | ||
+ | for (var i:Number = 0; i < len; i++) | ||
+ | { | ||
+ | var newPlat:MovieClip = platform.attachMovie("platform", "platform_" + pID + "_mc", | ||
+ | platform.getNextHighestDepth()); | ||
+ | newPlat._x = i * 40 + pLeft; | ||
+ | newPlat._y = h; | ||
+ | if (!moving && --nextFire == 0) | ||
+ | { | ||
+ | var newFire:MovieClip = platform.attachMovie("fire", "fire_" + pID + "_mc", | ||
+ | platform.getNextHighestDepth()); | ||
+ | nextFire = random(12) + 3; | ||
+ | newFire._x = newPlat._x + 20; | ||
+ | newFire._y = newPlat._y + 10; | ||
+ | newFire.onEnterFrame = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | if (this.hitTest(ices)) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | if (igeman_mc.hitTest(this._x + platform._x, this._y - 50, true)) | ||
+ | { | ||
+ | speed -= .4; | ||
+ | } | ||
+ | if (platform._x < -this._x - 80) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | }; | ||
+ | pID++; | ||
+ | } | ||
+ | newPlat.onEnterFrame = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | this.gotoAndStop(Math.max(1, (200 - (int(speed * 8))))); | ||
+ | if (platform._x < -this._x - 80) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | }; | ||
+ | } | ||
+ | if (moving) | ||
+ | { | ||
+ | var newFire:MovieClip = platform.attachMovie("fire", "fire_" + pID + "_mc", | ||
+ | platform.getNextHighestDepth()); | ||
+ | newFire._x = pLeft + random(len) * 40 + 20; | ||
+ | newFire._y = h + 10; | ||
+ | newFire.left = pLeft + 20; | ||
+ | newFire.right = pRight - 20; | ||
+ | newFire.speed = 2; | ||
+ | newFire.onEnterFrame = function() | ||
+ | { | ||
+ | if (paused) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | if (this.hitTest(ices)) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | if (this._x < this.left || this._x > this.right) | ||
+ | { | ||
+ | this.speed *= -1; | ||
+ | } | ||
+ | this._x += this.speed; | ||
+ | if (igeman_mc.hitTest(this._x + platform._x, this._y - 50, true)) | ||
+ | { | ||
+ | speed -= .4; | ||
+ | } | ||
+ | if (platform._x < -this._x - pRight + pLeft - 80) | ||
+ | { | ||
+ | this.removeMovieClip(); | ||
+ | } | ||
+ | }; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | </div> | ||
+ | </div> | ||
+ | </div> | ||
+ | </html> | ||
<forum_subtle/> | <forum_subtle/> |
Revision as of 07:05, 12 June 2013