Isometric Terrain

by mutantleg
Isometric terrain thing; no need to cut the triangles or sort them so its easy to do (adding sprites on top of this is another story)
♥0 | Line 102 | Modified 2013-07-12 20:33:29 | MIT License
play

ActionScript3 source code

/**
 * Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/sFqS
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
       
        public function FlashTest() {
       
           var i:int;
           var num:int;
           
           mwidth = 16;
           mheight  =16;
           num = mwidth * mheight;
           
           vecGrid = new Vector.<Number>(num, false);
           
           for (i = 0; i < num; i++)
           {
               vecGrid[i] = 0;
               vecGrid[i] = (Math.random()-0.5)*64;
           }//nexti
       
           
           
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
       // public var vecIndex:Vector.<int>;        
        
        public var vecGrid:Vector.<Number>;
        public var mwidth:int = 0;
        public var mheight:int = 0;
       
        public var cw:Number = 24;
        public var ch:Number = 24;
        
        public var ang:Number = 0;
       
       
        public function onEnter(e:Event):void
        {
            var k:int;
            var i:int;
            var yt:int;
            var t:Number;
            var rx:Number;
            var ry:Number;
            var rz:Number;
            var sx:Number;
            var sy:Number;
            
            var num:int;
            
            graphics.clear();
            graphics.lineStyle(1, 0);
            
            var m:Number;
            
            ang += 0.1;
            
            for (i = 0; i < mheight; i++)
            {
              yt = i * mwidth;
              
              for (k = 0; k < mwidth; k++)
              {
               //  t = vecGrid[yt+k];
                  
                  m = (Math.cos(ang+i) * Math.sin(ang+k))*32;
                  vecGrid[yt+k] = m;
                  
              }//nextk
              
            }//nexti
            
                  var ei:int;
                  var ek:int;
             
                  
                  ek = mwidth - 1;
                  ei = mheight - 1;
                  
                  
                  var sx0:Number; var sy0:Number;
                  var sx1:Number; var sy1:Number;
                  var sx2:Number; var sy2:Number;
                  
                       
              for (i = 0; i < ei; i++)
              {
                  yt = i *mwidth;
              
    
                  for (k = 0; k < ek; k++)
                  {
                      
                      t = vecGrid[0+k+yt];
                      
                        rx = k * cw;  ry = i * ch;   rz = t;
                         
                        sx0 = rx - ry;  sy0 = (rx*0.5)+(ry*0.5) - rz;
                        sx0 += 200;
                      
                      t = vecGrid[1+k+yt];
                      
                        rx = k * cw+cw;  ry = i * ch;   rz = t;
                         
                        sx1 = rx - ry;  sy1 = (rx*0.5)+(ry*0.5) - rz;
                        sx1 += 200;
                        
                      t = vecGrid[0+k+mwidth+yt];
                      
                        rx = k * cw;  ry = i * ch+ch;   rz = t;
                         
                        sx2 = rx - ry;  sy2 = (rx*0.5)+(ry*0.5) - rz;
                        sx2 += 200;  
                        
                        graphics.beginFill(0x008000,1);
                            graphics.moveTo(sx0, sy0);
                            graphics.lineTo(sx1, sy1);
                            graphics.lineTo(sx2, sy2);
                            graphics.lineTo(sx0, sy0);
                        graphics.endFill();
                        
                          // graphics.drawCircle(sx2, sy2, 8);
              
                  
                  
                      t = vecGrid[1+k+yt];
                      
                        rx = k * cw+cw;  ry = i * ch;   rz = t;
                         
                        sx0 = rx - ry;  sy0 = (rx*0.5)+(ry*0.5) - rz;
                        sx0 += 200;
                      
                      t = vecGrid[0+k+mwidth+yt];
                      
                        rx = k * cw;  ry = i * ch+ch;   rz = t;
                         
                        sx1 = rx - ry;  sy1 = (rx*0.5)+(ry*0.5) - rz;
                        sx1 += 200;
                        
                      t = vecGrid[1+k+mwidth+yt];
                      
                        rx = k * cw+cw;  ry = i * ch+ch;   rz = t;
                         
                        sx2 = rx - ry;  sy2 = (rx*0.5)+(ry*0.5) - rz;
                        sx2 += 200;  
                  
                        graphics.beginFill(0x007000,1);
                            graphics.moveTo(sx0, sy0);
                            graphics.lineTo(sx1, sy1);
                            graphics.lineTo(sx2, sy2);
                            graphics.lineTo(sx0, sy0);
                        graphics.endFill();
                        
                  
                  
                        
                      /*
                      vecIndex.push(0+k+yt);
                      vecIndex.push(1+k+yt);
                      vecIndex.push(0+k+mwidth+yt);
                      
                      vecIndex.push(1+k+yt);
                      vecIndex.push(0+k+mwidth+yt);
                      vecIndex.push(1+k+mwidth+yt);
                      */
                  }//nextk
              
              }//nexti
            
            
            /*
            num = vecIndex.length;
            
            for (i = 0; i < num; i+=3)
            {
                t = vecGrid[vecIndex[i]];
                
                
                
            }//nexti
            */
            
            /*
            for (i = 0; i < mheight; i++)
            {
              yt = i * mwidth;
              
              for (k = 0; k < mwidth; k++)
              {
                 t = vecGrid[yt+k];
                 
                 rx = k * cw;
                 ry = i * ch;
                 rz = t;
                 
                 sx = rx - ry;
                 sy = (rx*0.5)+(ry*0.5) - rz;
                 
                 sx += 200;
                 
                 graphics.drawCircle(sx, sy, 8);
              
                 
              }//nextk
              
            }//nexti
            */
            
        }//onenter
       
        
    }//classend
    
}

Forked