setDimension(400,300); $movie->setBackground(rand(0,0xFF),rand(0,0xFF),rand(0,0xFF)); $movie->setRate(31); $picname="bomb.jpg"; $fp = fopen($picname,"rb"); $i3 = fread($fp,999999); $img = new SWFBitmap($i3); fclose($fp); function makeTile($r,$g,$b){ $sh1=new SWFShape(); $sh1->setLine(1,0,0,0); $sh1->setRightFill($r,$g,$b); $sh1->drawLine(16,0); $sh1->drawLine(0,16); $sh1->drawLine(-16,0); $sh1->drawLine(0,-16); $sp1= new SWFSprite(); $f1 = $sp1->add($sh1); $sp1->nextFrame(); return $sp1; } function makePackageTile(){ $sh1=new SWFShape(); $sh1->setLine(1,0,0,0); $sh1->setRightFill(0,0,0); $sh1->drawLine(16,0); $sh1->drawLine(0,16); $sh1->drawLine(-16,0); $sh1->drawLine(0,-16); $sh2=new SWFShape(); $sh2->setLine(1,0,0,0); $sh2->setRightFill(0,255,0); $sh2->movePenTo(-5,-5); $sh2->drawLine(10,0); $sh2->drawLine(0,10); $sh2->drawLine(-10,0); $sh2->drawLine(0,-10); $sp1= new SWFSprite(); $f1 = $sp1->add($sh1); $f1 = $sp1->add($sh2); $f1->rotate(45); $f1->move(8,8); $sp1->nextFrame(); return $sp1; } function makePlayerTile(){ $r=0;$g=255;$b=0; $sq=new SWFShape(); $sq->setRightFill(0,0,0); $sq->drawLine(16,0); $sq->drawLine(0,16); $sq->drawLine(-16,0); $sq->drawLine(0,-16); $sh1=new SWFShape(); $sh1->setLine(2,$r,$g,$b); // body1 $sh1->drawLine(0,4); // leg r $sh1->drawLine(3,3); $sh1->movePen(-3,-3); // leg l $sh1->drawLine(-3,3); $sh1->movePen(3,-4); // arm r $sh1->drawLine(4,-2); $sh1->movePen(-4,2); // arm l $sh1->drawLine(-4,-2); $sh1->movePen(4,2); // body2 $sh1->drawLine(0,-6); // head $sh1->setRightFill($r,$g,$b); $sh1->drawCircle(2); $sp1= new SWFSprite(); $f1 = $sp1->add($sq); $f1 = $sp1->add($sh1); $f1->move(9,7); $f1->scale(1.3,1.1); $sp1->nextFrame(); return $sp1; } // gameholder clip $gameHolderSprite= new SWFSprite(); $spPlayer=& makePlayerTile(); $spPackage=& makePackageTile (); $spWall=& makeTile (255,0,0); $spTarget=& makeTile (0,255,0); $r=0x33;$g=0xcc;$b=0x66; $c=new SWFShape(); $c->setRightFill($r,$g,$b); $c->drawCircle(12); $spBullet= new SWFSprite(); $f1 = $spBullet->add($c); $spBullet->nextFrame(); $spBomb= new SWFSprite(); $f1 = $spBomb->add($img); $spBomb->nextFrame(); for($i=1;$i<200;$i++){ $f1 = $gameHolderSprite->add($spWall); $f1->setName('wall' . $i); $f1->moveTo(-555,-555); }; for($i=1;$i<50;$i++){ $f1 = $gameHolderSprite->add($spTarget); $f1->setName('target' . $i); $f1->moveTo(-555,-555); }; for($i=1;$i<50;$i++){ $f1 = $gameHolderSprite->add($spPackage); $f1->setName('package' . $i); $f1->multColor(1,1,1,0.75); }; $f1 = $gameHolderSprite->add($spPlayer); $f1->setName('player'); //$f1->scaleTo(0.5,0.3); $f1->moveTo(-555,-555); $f3 = $gameHolderSprite->add($spBullet); $f3->setName('bullet'); $f3->moveTo(-555,-555); $f4 = $gameHolderSprite->add($spBomb); $f4->setName('bomb'); $f4->moveTo(-555,-555); $f2 = $movie->add($gameHolderSprite); $f2->setName('gameHolderClip'); $f2->moveTo(50,30); $gameHolderSprite->nextFrame(); // get as from external file(s) // I WROTE THIS ACTIONSCRIPT IN ONE AFTERNOON SO IT IS CRUDE // BUT IT WORKS AND I HAVE NO REASON TO REWRITE IT AT PRESENT // THE MAIN AIM WAS TO TEST IF MING COULD COMPILE IT (SUCCESS!) $strAction =<<0){ //physically move the package _root.gameHolderClip['package'+ mov.bNum]._x +=(16*mov.w); _root.gameHolderClip['package'+ mov.bNum]._y +=(16*mov.h); // update array if(!doundo){ _root.packageArray[rph+mov.h+mov.h][rpw+mov.w+mov.w]= _root.packageArray[rph+mov.h][rpw+mov.w]; _root.packageArray[rph+mov.h][rpw+mov.w]=0; }else{ _root.packageArray[rph][rpw]=_root.packageArray[rph-mov.h][rpw-mov.w]; _root.packageArray[rph-mov.h][rpw-mov.w]=0; } } //reDisplay(); //tracegameHolderClip(); }; //}}} /////{{{ isWall function isWall(h,w){ return(_root.mapArray[h][w]==1); }; //}}} /////{{{ ispackage function ispackage(h,w){ return(_root.packageArray[h][w]>0); }; //}}} /////{{{ undo function undo(){ if(_root.recordMov.curPos >0){ var mov = _root.recordMov[_root.recordMov.curPos-1]; mov.h=-mov.h;mov.w=-mov.w; moveClips(mov,1); mov.h=-mov.h;mov.w=-mov.w; if(--_root.recordMov.curPos <0){_root.recordMov.curPos=0;} } }; //}}} /////{{{ redo function redo(){ if(_root.recordMov.curPos <_root.recordMov.length){ var mov = _root.recordMov[_root.recordMov.curPos]; moveClips(mov); if(++_root.recordMov.curPos >=_root.recordMov.length){ _root.recordMov.curPos=_root.recordMov.length;} } }; //}}} /////{{{ shootAll function shootAll(a,b){ if(!shooting){ shootclip.shoot.start(); shooting=true; var rph=_root.playerPos[0]; var rpw=_root.playerPos[1]; for(i=0;i<20;i++){ if(_root.mapArray[rph+(a*i)][rpw+(b*i)]==1 || _root.packageArray[rph+(a*i)][rpw+(b*i)]>0){ cntclip=_root.packageArray[rph+(a*i)][rpw+(b*i)]; _root.packageArray[rph+(a*i)][rpw+(b*i)]=0; break; } cnt++; } tb=gameHolderClip.bullet; tb._x=gameHolderClip.player._x+8; tb._y=gameHolderClip.player._y+8; tb._xscale=tb._yscale=20; tb.onEnterFrame=function(){ if(--cnt>=0){ this._x+=(b*16); this._y+=(a*16); tb._xscale+=2; tb._yscale+=2; }else{ _root.shooting=false; _root.gameHolderClip['package'+cntclip]._y=-5000; this.onEnterFrame=null; this._y=-7777; } }; } }; //}}} /////{{{ bomb function bomb(){ if(!bombing){ boombclip.boomb.start(); bombing=true; tb=gameHolderClip.bomb; tb._x=gameHolderClip.player._x-8; tb._y=gameHolderClip.player._y-8; cntbomb=5; tb.onEnterFrame=function(){ if(!--cntbomb){_root.bombing=false;this.onEnterFrame=null;this._x=this._y=-7777;} }; // remove wall tiles from map var rph=_root.playerPos[0]; var rpw=_root.playerPos[1]; if(_root.mapArray[rph-1][rpw-1]==1){_root.mapArray[rph-1][rpw-1]=0;}; if(_root.mapArray[rph-1][rpw]==1) {_root.mapArray[rph-1][rpw]=0;}; if(_root.mapArray[rph-1][rpw+1]==1){_root.mapArray[rph-1][rpw+1]=0;}; if(_root.mapArray[rph][rpw-1]==1){_root.mapArray[rph][rpw-1]=0;}; if(_root.mapArray[rph][rpw+1]==1){_root.mapArray[rph][rpw+1]=0;}; if(_root.mapArray[rph+1][rpw-1]==1){_root.mapArray[rph+1][rpw-1]=0;}; if(_root.mapArray[rph+1][rpw]==1){_root.mapArray[rph+1][rpw]=0;}; if(_root.mapArray[rph+1][rpw+1]==1){_root.mapArray[rph+1][rpw+1]=0;}; // move wall tiles offscreen var rpx=gameHolderClip['player']._x; var rpy=gameHolderClip['player']._y; for (var i = 1; i < 200; i++) { rwx=gameHolderClip['wall'+i]._x; rwy=gameHolderClip['wall'+i]._y; if(rwx >= rpx-16 && rwx <= rpx+16 ){ if(rwy >= rpy-16 && rwy <= rpy+16 ){ gameHolderClip['wall'+i]._y=-5000; } } } } }; //}}} /////{{{ cheat function cheat(){ disableKeys(); clearScreen(); if(++lv.num>9){lv.num=9;}; lv.load(mapPrefix + 'screen' + lv.num + '.txt'); }; //}}} /////{{{ testLevelComplete function testLevelComplete(){ for (var h = 0; h < 20; ++h) { for (var w = 0; w < 20; ++w) { if(packageArray[h][w] >0 ){ if(mapArray[h][w]!=2){return false;} } }} return true; }; //}}} /////{{{ nextLevel function nextLevel(){ //if( testLevelComplete()){ disableKeys(); clearScreen(); if(++lv.num>9){lv.num=9;}; //lv.load(mapPrefix + 'screen.' + lv.num); //lv.load(mapPrefix + 'screen' + lv.num + '.txt'); _root.getNewMap(lv.num); //} }; //}}} /////{{{ previousLevel function previousLevel(){ disableKeys(); clearScreen(); if(--lv.num<0){lv.num=0;}; //lv.load(mapPrefix + 'screen' + lv.num + '.txt'); _root.getNewMap(lv.num); }; getNewMap = function(num) { _root.processData(_root.allMaps[num]); }; EOT; // add actionscript to movie $movie->add(new SWFAction( $strAction)); // save swf with same name as filename $swfname = basename(__FILE__,".php"); $movie->save("$swfname.swf",9); ?>