locked
Minecraft v0.0.1 ready for download. RRS feed

  • General discussion

  • I have created, over a period of two weeks, a refreshing clone of Minecraft on Small Basic. You can download the software at the Technet Gallery. Please read the program description.

    Because I cannot post images or links until I verify my account, go to the Technet Gallery and type in "Daniel Mask" in the search box. Click on my Basic Tag Game, and go down to "More from Daniel Mask". Then click "Minecraft v0.0.1"

    (How do you verify your account?)



    • Edited by Daniel Mask Friday, August 2, 2013 12:20 AM edit
    Friday, August 2, 2013 12:17 AM

All replies

  • Very nice game! Great work.

    (BTW your account should verify itself once you have some more activity on the forums--- maybe once you get some points. The exact steps to verify your account are not published by MSFT to stop spammers from automating the process.)


    Please mark any answers and "vote as helpful" any posts that help you!

    Friday, August 2, 2013 12:34 AM
    Answerer
  • I am very glad that you liked the program, and thank you for the tip on verifying my account :)
    Friday, August 2, 2013 12:36 AM
  • Hi Daniel, this looks really good. Have you got an import id for this?

    Friday, August 2, 2013 11:19 PM
  • Sorry, but I don't think he can publish it because it requires local resources to be downloaded (i.e. images.)

    Please mark any answers and "vote as helpful" any posts that help you!


    • Edited by gungan37Editor Saturday, August 3, 2013 1:21 AM explained meaning of resources
    Saturday, August 3, 2013 1:20 AM
    Answerer
  • Good point gungan

    I think you're right too. I can't think of a way currently on this network that we can post zips with a guarantee of safety.

    It would be good if we could publish our code to the browser then at the same time have a feature in the browser that uploads benign files only.

    Then we could import the source and compile the exe and download the associated zips. I wish this feature was available especially for beginners without websites. That's me. I think such a feature would go some way to protect both the avatar uploading and the d/loaders data and system.

    Sorry if any offence to anyone here, never my intention. It's a great network. I've only seen 1 occasion on this network where this has resulted in a mischievous program.


    • Edited by Jibba j Saturday, August 3, 2013 5:26 AM addd
    Saturday, August 3, 2013 4:42 AM
  • That is a really good idea, Jibba Jabba! You may have noticed that all file write operations are automatically commented out by the SB program importer, but some more security would be nice.

    I have been thinking about implementing a better uploader in SB IDE++ (in addition to the one in Microsoft.SmallBasic.com for backwards compatibility.) Maybe use my F-1 FTP server and use the ClamAV .NET API to scan resources for viruses and use Mono.Cecil to inspect the program and find calls that invoke any System.IO method or System.Diagnostics.Process method anywhere down the call tree and comment out the line. 

    I will add this to my SB IDE++ wish list.


    Please mark any answers and "vote as helpful" any posts that help you!

    Saturday, August 3, 2013 5:20 PM
    Answerer
  •  Litdev indirectly spawned the idea by his subtle yet resolute comments on ethics and taking care of your own security.

    I'll start a discussion on some issues (opportunities) that are evolving (in my opinion) as a result of the info revolution and how SB is a perfect fit.

    But in short I reckon that ethics and benevolence are the primordial underlying drivers of innovation. Not necessity or economics.

    MS and Vijae did a smart (ethical & benevolent) thing by creating SB. Bill Gates has mentioned his biggest commercial fear is the guy in a garage inventing the next rad technology. Some people identify that software demand of tomorrow is talent driven. I invest in companies that are good for the people they always hold well for the long term. If eduware was ever shelved then I reckon that would indicate a poor investment strategy. Very poor.

    So resoluteness is a good skill/quality to discover. Anyone who has it has done well for themselves and those around them. It can't be bought or sold. One of the best friends you'll ever make will be yourself.




    • Edited by Jibba j Saturday, August 3, 2013 8:10 PM sssss
    Saturday, August 3, 2013 7:54 PM
  • Just so all of you feel safe, here is the source code. Be ready for a mouthful, it is 1166 lines long ;)

    (This is the source code for v0.1.0, which is an update to v0.0.1) (v0.1.0 is now on  technet)

    GraphicsWindow.Width=710
    GraphicsWindow.Height=510
    GraphicsWindow.Left=10
    GraphicsWindow.Top=10
    game=0
    line=1
    sector=0
    b=0
    px=40
    py=300
    nether=0
    end=0
    find=1
    plus=0
    good=0
    z=0
    get=0

    'misc
    title=Program.Directory+"\assets\title.png"
    headtype=Program.Directory+"\assets\head.png"
    zombie=Program.Directory+"\assets\zombie.png"
    titlescreen=Program.Directory+"\assets\titlescreen.png"
    gui=Program.Directory+"\assets\gui.png"
    framepic=Program.Directory+"\assets\frame.png"

    'set 1
    whitestone=Program.Directory+"\assets\whitestone.png"
    bookshelf=Program.Directory+"\assets\bookshelf.png"
    wool=Program.Directory+"\assets\wool.png"
    diamond=Program.Directory+"\assets\brick.png"
    stone=Program.Directory+"\assets\stonebrick.png"
    table=Program.Directory+"\assets\water.png"
    wood=Program.Directory+"\assets\wood.png"
    doorgui=Program.Directory+"\assets\door gui.png"
    topdoor=Program.Directory+"\assets\top-door.png"
    bottomdoor=Program.Directory+"\assets\bottom-door.png"
    pumpkin=Program.Directory+"\assets\pumpkin.png"

    'set 2
    dirt=Program.Directory+"\assets\grass.png"
    torch=Program.Directory+"\assets\torch.png"
    stand=Program.Directory+"\assets\brewingStand.png"
    glass=Program.Directory+"\assets\glass.png"
    spawner=Program.Directory+"\assets\mobSpawner.png"
    furnace=Program.Directory+"\assets\furnace.png"
    crops=Program.Directory+"\assets\crops.png"
    sapling=Program.Directory+"\assets\sapling.png"
    ladder=Program.Directory+"\assets\ladder.png"

    'set 3
    bedgui=Program.Directory+"\assets\bed.png"
    feetbed=Program.Directory+"\assets\bed_feet_side.png"
    headbed=Program.Directory+"\assets\bed_head_side.png"
    cake=Program.Directory+"\assets\cake.png"
    water=Program.Directory+"\assets\realwater.png"
    lava=Program.Directory+"\assets\lava.png"
    picture=Program.Directory+"\assets\picture.png"
    tilled=Program.Directory+"\assets\tilled_dirt.png"
    portal=Program.Directory+"\assets\portal.png"
    endportal=Program.Directory+"\assets\endportal.png"

    'update
    ver1=file.ReadContents(Program.Directory+"\update\0.0.1")
    ver2=file.ReadContents(Program.Directory+"\update\0.1.0")
    update=Program.Directory+"\assets\update.png"

    'biome
    cactus=Program.Directory+"\assets\cactus.png"


    doLauncher()

    Sub doLauncher
      GraphicsWindow.Title="Minecraft Launcher"
      GraphicsWindow.brushColor="Black"
      GraphicsWindow.FontSize=14
      upbox=controls.AddMultiLineTextBox(10,10)
      Controls.SetSize(upbox,690,300)
      GraphicsWindow.brushColor="Black"
      Controls.SetTextBoxText(upbox,ver2+ver1)
      GraphicsWindow.BrushColor="DarkGreen"
      GraphicsWindow.FillRectangle(0,0,710,510)
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.FontSize=15
      GraphicsWindow.DrawResizedImage(title,20,350,305,60)
      GraphicsWindow.FontSize=15
      GraphicsWindow.BrushColor="Black"
      login=controls.AddButton("Login",630,350)
      GraphicsWindow.BrushColor="Black"
      create=controls.AddButton("Create Account",570,400)
      GraphicsWindow.BrushColor="Black"
      name=controls.AddTextBox(470,355)
      Controls.SetSize(login,70,35)
      Controls.SetSize(name,150,25)
    EndSub

    If good=1 then
      doMainMenu()
    endif

    Sub doMainMenu
      GraphicsWindow.Title="Minecraft"
      GraphicsWindow.Width=1024
      GraphicsWindow.Height=740
      GraphicsWindow.Left=-4
      GraphicsWindow.Top=0
      GraphicsWindow.Hide()
      GraphicsWindow.Clear()
      GraphicsWindow.Show()
      GraphicsWindow.BrushColor="Yellow"
      GraphicsWindow.FontSize=30
      splash=math.GetRandomNumber(32)
      readsplash=file.ReadLine(Program.Directory+"\assets\splashes.txt",splash)
      addsplash=Shapes.AddText(readsplash)
      Shapes.Move(addsplash,690,70)
      Shapes.Rotate(addsplash,340)
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.FontSize=20
      GraphicsWindow.DrawResizedImage(titlescreen,0,0,1024,768)
      GraphicsWindow.DrawResizedImage(title,200,20,600,100)
      GraphicsWindow.BrushColor="Black"
      start=controls.AddButton("Singleplayer",240,260)
      GraphicsWindow.BrushColor="Black"
      exit=controls.AddButton("Exit Minecraft",495,390)
      GraphicsWindow.BrushColor="Black"
      cheats=controls.AddButton("Enter a Cheat",240,390)
      GraphicsWindow.BrushColor="White"
      GraphicsWindow.DrawText(10,670,"Minecraft 0.1.0")
      Controls.SetSize(start,500,40)
      Controls.SetSize(cheats,245,40)
      Controls.SetSize(exit,245,40)
    EndSub
    Controls.ButtonClicked=click

    Sub click
      If Controls.LastClickedButton=start Then
        Sound.PlayClick()
        doLoadorstart()
      EndIf
      If Controls.LastClickedButton=exit Then
        Sound.PlayClick()
        Program.End()
      EndIf
      If Controls.LastClickedButton=cheats Then
        Sound.PlayClick()
        doCheat()
      EndIf
      If Controls.LastClickedButton=cheatbutton Then
        Sound.PlayClick()
        check=Controls.GetTextBoxText(cheatbox)
        If check="izombie" Then
          headtype=Program.Directory+"\assets\zombie.png"
          GraphicsWindow.Clear()
          GraphicsWindow.Hide()
          GraphicsWindow.Show()
          doMainMenu()
        EndIf
        If check="ipigzombie" Then
          headtype=Program.Directory+"\assets\zombie_pig.png"
          GraphicsWindow.Clear()
          GraphicsWindow.Hide()
          GraphicsWindow.show()
          doMainMenu()
        EndIf
        If check="icow" Then
          headtype=Program.Directory+"\assets\cow.png"
          GraphicsWindow.Clear()
          GraphicsWindow.Hide()
          GraphicsWindow.Show()
          doMainMenu()
        EndIf
        If check="icreeper" Then
          headtype=Program.Directory+"\assets\creeper.png"
          GraphicsWindow.Clear()
          GraphicsWindow.Hide()
          GraphicsWindow.Show()
          doMainMenu()
        EndIf
      EndIf
      If Controls.LastClickedButton=new Then
        Sound.PlayClick()
        GraphicsWindow.Clear()
        GraphicsWindow.Hide()
        GraphicsWindow.Show()
        GraphicsWindow.BrushColor="Black"
        GraphicsWindow.FontSize=30
        GraphicsWindow.DrawResizedImage(titlescreen,0,0,1024,768)
        namebox=controls.AddTextBox(290,20)
        Controls.SetSize(namebox,450,40)
        GraphicsWindow.BrushColor="Black"
        namebutton=controls.AddButton("-Submit-",440,70)
      EndIf
     
      If Controls.LastClickedButton=namebutton Then
        worldname=Controls.GetTextBoxText(namebox)
        saveloc=Program.Directory+"\saves\"+worldname+"\sector"+sector
        File.CreateDirectory(saveloc)
        doGame()
      EndIf
     
      If Controls.LastClickedButton=loadbutton Then
        Sound.PlayClick()
        GraphicsWindow.Clear()
        GraphicsWindow.Hide()
        GraphicsWindow.Show()
        GraphicsWindow.BrushColor="Black"
        GraphicsWindow.FontSize=30
        GraphicsWindow.DrawResizedImage(titlescreen,0,0,1024,768)
        GraphicsWindow.BrushColor="Black"
        loadbox=controls.AddTextBox(290,20)
        Controls.SetSize(loadbox,450,40)
        GraphicsWindow.BrushColor="Black"
        getbutton=controls.AddButton("-Submit-",440,70)
      EndIf
     
      If Controls.LastClickedButton=getbutton Then
        worldname=Controls.GetTextBoxText(loadbox)
        saveloc=Program.Directory+"\saves\"+worldname+"\sector"+sector
        doLoadFunc()
      EndIf
     
      If Controls.LastClickedButton=create Then
        doNew()
      EndIf
     
      If Controls.LastClickedButton=login then
        getname=Controls.GetTextBoxText(name)
        
        do:
        read=File.ReadLine(Program.Directory+"\user\userlist.us",find)
        skin=File.ReadLine(Program.Directory+"\user\"+getname+".us",2)
        headtype=Program.Directory+"\skins\"+skin+".png"
        
        If read=getname Then
          doMainMenu()
        EndIf
        If read<>getname Then
          find=find+1
          If find>50 Then
            doLauncher()
          Else
            Goto do
          EndIf
        EndIf
      EndIf
     
      If Controls.LastClickedButton=yes Then
        newname=Controls.GetTextBoxText(grr)
        File.AppendContents(Program.Directory+"\user\"+newname+".us",newname)
        File.AppendContents(Program.Directory+"\user\userlist.us",newname)
        File.AppendContents(Program.Directory+"\user\"+newname+".us","head")
        GraphicsWindow.BrushColor="White"
        GraphicsWindow.FillRectangle(10,10,690,300)
        doLauncher()
      EndIf
     
     
    EndSub

    Sub doLoadorstart
      GraphicsWindow.Clear()
      GraphicsWindow.Hide()
      GraphicsWindow.Show()
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.FontSize=20
      GraphicsWindow.DrawResizedImage(titlescreen,0,0,1024,768)
      GraphicsWindow.DrawResizedImage(title,200,20,600,100)
      GraphicsWindow.BrushColor="Black"
      new=controls.AddButton("New Game ( WON'T overwrite old save :)",240,260)
      GraphicsWindow.BrushColor="Black"
      loadbutton=controls.AddButton("Load existing game",240,310)
      Controls.SetSize(new,500,40)
      Controls.SetSize(loadbutton,500,40)
    EndSub

    Sub doGame
      loaded=0
      If clear=0 Then
        goto cont
      EndIf
      GraphicsWindow.Clear()
      cont:
      loaded=1
      x=0
      y=400
      px=px
      py=py
      suh=60
      suw=60
      set=1
      z=z
      b=b
      biometype=math.GetRandomNumber(3)
      If biometype=1 Then
        brush="Green"
      EndIf
      If biometype=2 Then
        brush="Yellow"
      EndIf
      If biometype=3 Then
        brush="White"
      EndIf
      If nether=1 Then
        brush="Red"
      EndIf
      If end=1 Then
        brush="LightGreen"
      EndIf
      GraphicsWindow.KeyDown=down
      GraphicsWindow.MouseDown=mdown
      GraphicsWindow.BrushColor="Black"
      text="Building..."
      add=Shapes.AddText(text)
      GraphicsWindow.BrushColor=brush
      GraphicsWindow.FillRectangle(x,y,1024,350)
      Shapes.Remove(add)
      GraphicsWindow.BrushColor="Black"
      text="Done!"
      add=Shapes.AddText(text)
      Program.Delay(500)
      Shapes.Remove(add)
     
      load=headtype
      head=shapes.AddImage(load)
      Shapes.Zoom(head,0.5,0.5)
      Shapes.Move(head,px,py)
      GraphicsWindow.BrushColor="White"
      GraphicsWindow.DrawResizedImage(gui,600,640,400,40)
      GraphicsWindow.DrawResizedImage(diamond,609,648,30,25)
      GraphicsWindow.DrawResizedImage(stone,653,648,30,25)
      GraphicsWindow.DrawResizedImage(wood,697,648,30,25)
      GraphicsWindow.DrawResizedImage(wool,741,648,30,25)
      GraphicsWindow.DrawResizedImage(whitestone,785,648,30,25)
      GraphicsWindow.DrawResizedImage(glass,829,648,30,25)
      GraphicsWindow.DrawResizedImage(bookshelf,873,648,30,25)
      GraphicsWindow.DrawResizedImage(pumpkin,917,648,30,25)
      GraphicsWindow.DrawResizedImage(doorgui,961,648,30,25)
      frame=shapes.AddImage(framepic)
      Shapes.Move(frame,611,648)
      Shapes.Zoom(frame,1.8,1.8)
      block=diamond
    EndSub

    Sub doLoadFunc
      loaded=1
      l=0
      line=1
      get=0
      GraphicsWindow.Clear()
     
      While get<400
        get=get+1
        tex=File.ReadLine(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+get+".blok",1)
        blox=File.ReadLine(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+get+".blok",2)
        bloy=File.ReadLine(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+get+".blok",3)
        z=File.ReadLine(Program.Directory+"\saves\"+worldname+"\z",1)
        z=z+1
        newblock=shapes.AddImage(tex)
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,blox,bloy)
        addblock[c]=newblock
        c=c+1
        
        If tex=Program.Directory+"\assets\bed.png" Then
          Shapes.Remove(newblock)
          
          sleep=shapes.AddImage(feetbed)
          newblock=sleep
          Shapes.Zoom(newblock,2.5,2.5)
          Shapes.Move(newblock,blox,bloy)
          getofbed=shapes.GetLeft(newblock)
          addblock[c]=newblock
          c=c+1
          
          newblock=shapes.AddImage(headbed)
          Shapes.Zoom(newblock,2.5,2.5)
          Shapes.Move(newblock,blox+40,bloy)
          addblock[c]=newblock
          c=c+1
        EndIf
        
        If tex=Program.Directory+"\assets\door gui.png" Then
          Shapes.Remove(newblock)
          newblock=shapes.AddImage(Program.Directory+"\assets\bottom-door.png")
          Shapes.Zoom(newblock,2.5,2.5)
          Shapes.Move(newblock,blox,bloy)
          addblock[c]=newblock
          c=c+1
          newblock=shapes.AddImage(Program.Directory+"\assets\top-door.png")
          Shapes.Zoom(newblock,2.5,2.5)
          Shapes.Move(newblock,blox,bloy-40)
          addblock[c]=newblock
          c=c+1
          If tex=Program.Directory+"\assets\cake.png" Then
            Shapes.Remove(newblock)
            newblock=shapes.AddImage(Program.Directory+"\assets\cake_side.png")
            Shapes.Zoom(newblock,2.5,2.5)
            Shapes.Move(newblock,blox,bloy)
            addblock[c]=newblock
            c=c+1
          EndIf
        EndIf
        
        c=c+1
        If get=400 Then
          clear=0
          doGame()
        EndIf
      EndWhile
    EndSub

    game=1
    time=1
    If game=1 then
      While nether=0 And end=0
        Program.Delay(50)
        time=time+1  
        If time < 1000 and nether=0 and end=0 then
          GraphicsWindow.BrushColor="Yellow"
          GraphicsWindow.BackgroundColor="Orange"
          GraphicsWindow.FillRectangle(900,20,suw,suh)
        EndIf
        If time > 1000 and time<2000 and nether=0  and end=0 then
          GraphicsWindow.BrushColor="Yellow"
          GraphicsWindow.BackgroundColor="LightBlue"
          GraphicsWindow.FillRectangle(900,20,suw,suh)
        EndIf
        If time > 2000 and time<3000 and nether=0 and end=0  Then
          GraphicsWindow.BrushColor="Yellow"
          GraphicsWindow.BackgroundColor="Orange"
          GraphicsWindow.FillRectangle(900,20,suw,suh)
        EndIf
        If time > 3000 And time<4000 and nether=0 and end=0  Then
          GraphicsWindow.BrushColor="DarkGray"
          GraphicsWindow.BackgroundColor="Black"
          GraphicsWindow.FillRectangle(900,20,suw,suh)
        EndIf
        If time > 4000 Then
          time=0
        EndIf  
      EndWhile
    endif

    Sub down
     
      If GraphicsWindow.LastKey="W" Then
        py=py-40
        Shapes.Move(head,px,py)
        
        If py<-20 Then
          py =-20
          Shapes.Move(head,px,py)
          
        EndIf
      EndIf
     
     
      If GraphicsWindow.LastKey="A"Then
        px=px-40
        Shapes.Move(head,px,py)
        
        If px<-40 Then
          sector=sector-1
          File.CreateDirectory(Program.Directory+"\saves\"+worldname+"\sector"+sector)
          px=960
          py=300
          b=0
          doLoadFunc()
        EndIf
      EndIf
     
      If GraphicsWindow.LastKey="S" Then
        py=py+40
        Shapes.Move(head,px,py)
        
        If py>580 Then
          py = 580
          Shapes.Move(head,px,py)
          
        EndIf
      EndIf
     
      If GraphicsWindow.LastKey="D" Then
        px=px+40
        Shapes.Move(head,px,py)
        
        If px>960 Then
          sector=sector+1
          File.CreateDirectory(Program.Directory+"\saves\"+worldname+"\sector"+sector)
          px=40
          py=300
          b=0
          doLoadFunc()
          Shapes.Move(head,px,py)
        EndIf
      EndIf
     
      'set 1---------------
      If GraphicsWindow.LastKey="D1" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,611,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=diamond
      EndIf
      If GraphicsWindow.LastKey="D2" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,656,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=stone
      EndIf
      If GraphicsWindow.LastKey="D3" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,701,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=wood
      EndIf
      If GraphicsWindow.LastKey="D4" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,746,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=wool
      EndIf
      If GraphicsWindow.LastKey="D5" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,789,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=whitestone
      EndIf
      If GraphicsWindow.LastKey="D6" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,834,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=glass
      EndIf
      If GraphicsWindow.LastKey="D7" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,877,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=bookshelf
      EndIf
      If GraphicsWindow.LastKey="D8" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,922,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=pumpkin
      EndIf
      If GraphicsWindow.LastKey="D9" And set=1 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,966,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=doorgui
      EndIf
      'set 2-------------
      If GraphicsWindow.LastKey="D1" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,611,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=dirt
      EndIf
      If GraphicsWindow.LastKey="D2" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,656,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=torch
      EndIf
      If GraphicsWindow.LastKey="D3" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,701,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=stand
      EndIf
      If GraphicsWindow.LastKey="D4" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,746,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=table
      EndIf
      If GraphicsWindow.LastKey="D5" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,789,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=furnace
      EndIf
      If GraphicsWindow.LastKey="D6" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,834,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=spawner
      EndIf
      If GraphicsWindow.LastKey="D7" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,877,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=crops
      EndIf
      If GraphicsWindow.LastKey="D8" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,922,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=sapling
      EndIf
      If GraphicsWindow.LastKey="D9" And set=2 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,966,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=ladder
      EndIf
      'set 3-------------
      If GraphicsWindow.LastKey="D1" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,611,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=bedgui
      EndIf
      If GraphicsWindow.LastKey="D2" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,656,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=cake
      EndIf
      If GraphicsWindow.LastKey="D3" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,701,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=water
      EndIf
      If GraphicsWindow.LastKey="D4" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,746,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=lava
      EndIf
      If GraphicsWindow.LastKey="D5" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,789,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=picture
      EndIf
      If GraphicsWindow.LastKey="D6" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,834,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=tilled
      EndIf
      If GraphicsWindow.LastKey="D7" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,877,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=portal
      EndIf
      If GraphicsWindow.LastKey="D8" And set=3 Then
        Shapes.Remove(frame)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,920,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=endportal
      EndIf
     
     
      If GraphicsWindow.LastKey="Escape" Then
        Program.End()
      EndIf
     
      If GraphicsWindow.LastKey="F1" Then
        set=1
        
        Shapes.Remove(frame)
        GraphicsWindow.DrawResizedImage(gui,600,640,400,40)
        GraphicsWindow.DrawResizedImage(diamond,609,648,30,25)
        GraphicsWindow.DrawResizedImage(stone,653,648,30,25)
        GraphicsWindow.DrawResizedImage(wood,697,648,30,25)
        GraphicsWindow.DrawResizedImage(wool,741,648,30,25)
        GraphicsWindow.DrawResizedImage(whitestone,785,648,30,25)
        GraphicsWindow.DrawResizedImage(glass,829,648,30,25)
        GraphicsWindow.DrawResizedImage(bookshelf,873,648,30,25)
        GraphicsWindow.DrawResizedImage(pumpkin,917,648,30,25)
        GraphicsWindow.DrawResizedImage(doorgui,961,648,30,25)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,611,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=diamond
        
      EndIf
      If GraphicsWindow.LastKey="F2" Then
        set=2
        
        Shapes.Remove(frame)
        GraphicsWindow.DrawResizedImage(gui,600,640,400,40)
        GraphicsWindow.DrawResizedImage(dirt,609,648,30,25)
        GraphicsWindow.DrawResizedImage(torch,653,648,30,25)
        GraphicsWindow.DrawResizedImage(stand,697,648,30,25)
        GraphicsWindow.DrawResizedImage(table,741,648,30,25)
        GraphicsWindow.DrawResizedImage(furnace,785,648,30,25)
        GraphicsWindow.DrawResizedImage(spawner,829,648,30,25)
        GraphicsWindow.DrawResizedImage(crops,873,648,30,25)
        GraphicsWindow.DrawResizedImage(sapling,917,648,30,25)
        GraphicsWindow.DrawResizedImage(ladder,961,648,30,25)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,611,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=dirt
        
      EndIf
      If GraphicsWindow.LastKey="F3" Then
        set=3
        
        Shapes.Remove(frame)
        GraphicsWindow.DrawResizedImage(gui,600,640,400,40)
        GraphicsWindow.DrawResizedImage(bedgui,609,648,30,25)
        GraphicsWindow.DrawResizedImage(cake,653,648,30,25)
        GraphicsWindow.DrawResizedImage(water,697,648,30,25)
        GraphicsWindow.DrawResizedImage(lava,741,648,30,25)
        GraphicsWindow.DrawResizedImage(picture,785,648,30,25)
        GraphicsWindow.DrawResizedImage(tilled,829,648,30,25)
        GraphicsWindow.DrawResizedImage(portal,873,648,30,25)
        GraphicsWindow.DrawResizedImage(endportal,917,648,30,25)
        frame=shapes.AddImage(framepic)
        Shapes.Move(frame,611,648)
        Shapes.Zoom(frame,1.8,1.8)
        block=bedgui
        
      EndIf
      If GraphicsWindow.LastKey="F" and time>3000 And time<4000 then
        Sound.PlayChimes()
        If getofbed-px=72 Then
          time=0
        EndIf
      EndIf
      If GraphicsWindow.LastKey="F" and getofportal-px=72 then
        Sound.PlayChimes()
        nether=1
        If nether=1 Then
          doNether()
        EndIf
      EndIf
     
      If GraphicsWindow.LastKey="F" and getofendportal-px=72 then
        Sound.PlayChimes()
        end=1
        If end=1 Then
          doEnd()
        EndIf
      EndIf
     
    EndSub

    Sub mdown
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX>px Then
        z=z+1
        Sound.PlayClick()
        newblock=shapes.AddImage(block)
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+87)
        Shapes.Remove(head)
        addblock[b]=newblock
        blokx=shapes.GetLeft(newblock)
        bloky=shapes.GetTop(newblock)
        File.AppendContents(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+z+".blok",block)
        file.AppendContents(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+z+".blok",blokx)
        file.AppendContents(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+z+".blok",bloky)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
        b=b+1
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
     
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX<px Then
        z=z+1
        Sound.PlayClick()
        newblock=shapes.AddImage(block)
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px-8,py+87)
        Shapes.Remove(head)
        addblock[b]=newblock
        blokx=shapes.GetLeft(newblock)
        bloky=shapes.GetTop(newblock)
        File.AppendContents(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+z+".blok",block)
        file.AppendContents(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+z+".blok",blokx)
        file.AppendContents(Program.Directory+"\saves\"+worldname+"\sector"+sector+"\block"+z+".blok",bloky)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
        b=b+1
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
      '''''''''''''''''''''''''''''''''''''''''''''
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX>px and block=doorgui then
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(Program.Directory+"\assets\bottom-door.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+87)
        addblock[b]=newblock
        b=b+1
        z=z+1
        newblock=shapes.AddImage(Program.Directory+"\assets\top-door.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+47)
        addblock[b]=newblock
        b=b+1
        z=z+1
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
     
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX<px and block=doorgui then
        Sound.PlayClick()
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(Program.Directory+"\assets\bottom-door.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px-8,py+87)
        addblock[b]=newblock
        b=b+1
        z=z+1
        newblock=shapes.AddImage(Program.Directory+"\assets\top-door.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px-8,py+47)
        addblock[b]=newblock
        b=b+1
        z=z+1
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
     
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX>px and block=bedgui then
        Sound.PlayClick()
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(headbed)
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+112,py+87)
        addblock[b]=newblock
        b=b+1
        z=z+1
        sleep=shapes.AddImage(feetbed)
        newblock=sleep
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+87)
        getofbed=shapes.GetLeft(newblock)
        addblock[b]=newblock
        b=b+1
        z=z+1
        Shapes.Remove(head)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
     
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX<px and block=bedgui then
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(Program.Directory+"\assets\bed_feet_side.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px-48,py+88)
        addblock[b]=newblock
        b=b+1
        z=z+1
        newblock=shapes.AddImage(Program.Directory+"\assets\bed_head_side.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px-8,py+88)
        addblock[b]=newblock
        b=b+1
        z=z+1
        Shapes.Remove(head)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
     
      If Mouse.IsRightButtonDown Then
        If z<=0 Then
          z=0
        EndIf
        saveloc=Program.Directory+"\saves\"+worldname+"\sector"+sector
        File.DeleteFile(saveloc+"\block"+z+".blok")
        Sound.PlayClick()
        Shapes.Remove(addblock[b-1])
        b=b-1
        z=z-1
        File.WriteLine(Program.Directory+"\saves\"+worldname+"\z",1,z)
        z=File.readLine(Program.Directory+"\saves\"+worldname+"\z",1)
      EndIf
     
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX>px and block=portal then
        z=z+1
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(block)
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+87)
        getofportal=shapes.GetLeft(newblock)
        addblock[b]=newblock
        b=b+1
        Shapes.Remove(head)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
      EndIf
     
      If Mouse.IsLeftButtonDown And GraphicsWindow.MouseX>px and block=endportal then
        z=z+1
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(block)
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+87)
        getofendportal=shapes.GetLeft(newblock)
        addblock[b]=newblock
        b=b+1
        Shapes.Remove(head)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
      EndIf
     
      If Mouse.IsLeftButtonDown And block=cake Then
        z=z+1
        Shapes.Remove(newblock)
        newblock=shapes.AddImage(Program.Directory+"\assets\cake_side.png")
        Shapes.Zoom(newblock,2.5,2.5)
        Shapes.Move(newblock,px+72,py+87)
        getofcake=shapes.GetLeft(newblock)
        addblock[b]=newblock
        b=b+1
        Shapes.Remove(head)
        load=headtype
        head=shapes.AddImage(load)
        Shapes.Zoom(head,0.5,0.5)
        Shapes.Move(head,px,py)
      EndIf
    EndSub   

    Sub doCheat
      GraphicsWindow.Clear()
      GraphicsWindow.Hide()
      GraphicsWindow.Show()
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.FontSize=30
      GraphicsWindow.DrawResizedImage(titlescreen,0,0,1024,768)
      cheatbox=controls.AddTextBox(290,20)
      Controls.SetSize(cheatbox,450,40)
      GraphicsWindow.BrushColor="Black"
      cheatbutton=controls.AddButton("-Submit-",440,70)
    EndSub

    Sub doNether
      nether=1
      loaded=1
      x=0
      y=400
      px=px
      py=py
      suh=60
      suw=60
      set=1
      b=b
      time=1
      GraphicsWindow.BrushColor="Black"
      text="Building..."
      add=Shapes.AddText(text)
      GraphicsWindow.BrushColor="Red"
      GraphicsWindow.FillRectangle(x,y,1024,350)
      Shapes.Remove(add)
      GraphicsWindow.BrushColor="Black"
      text="Done!"
      add=Shapes.AddText(text)
      Program.Delay(500)
      Shapes.Remove(add)
      brush="Orange"
      back="Black"
      GraphicsWindow.BrushColor=brush
      GraphicsWindow.FillRectangle(900,20,suw,suh)
      GraphicsWindow.BackgroundColor=back
      GraphicsWindow.FillRectangle(900,20,suw,suh)
     
      load=headtype
      Shapes.Remove(head)
      Shapes.Remove(frame)
      head=shapes.AddImage(load)
      Shapes.Zoom(head,0.5,0.5)
      Shapes.Move(head,px,py)
      GraphicsWindow.DrawResizedImage(gui,600,640,400,40)
      GraphicsWindow.DrawResizedImage(diamond,609,648,30,25)
      GraphicsWindow.DrawResizedImage(stone,653,648,30,25)
      GraphicsWindow.DrawResizedImage(wood,697,648,30,25)
      GraphicsWindow.DrawResizedImage(wool,741,648,30,25)
      GraphicsWindow.DrawResizedImage(whitestone,785,648,30,25)
      GraphicsWindow.DrawResizedImage(glass,829,648,30,25)
      GraphicsWindow.DrawResizedImage(bookshelf,873,648,30,25)
      GraphicsWindow.DrawResizedImage(pumpkin,917,648,30,25)
      GraphicsWindow.DrawResizedImage(doorgui,961,648,30,25)
      frame=shapes.AddImage(framepic)
      Shapes.Move(frame,611,648)
      Shapes.Zoom(frame,1.8,1.8)
      block=diamond
    EndSub


    While nether=1 And end=0
      Program.Delay(50)
      time=time+1  
      If time < 1000 and nether=1 And end=0 then
        GraphicsWindow.BrushColor="Orange"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 1000 and time<2000 and nether=1 And end=0 then
        GraphicsWindow.BrushColor="Orange"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 2000 and time<3000 and nether=1 And end=0 Then
        GraphicsWindow.BrushColor="Orange"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 3000 And time<4000 and nether=1 And end=0 Then
        GraphicsWindow.BrushColor="Orange"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 4000 Then
        time=0
      EndIf  
    EndWhile

    While end=1 And nether=0
      Program.Delay(50)
      time=time+1  
      If time < 1000 and end=1 And nether=0 then
        GraphicsWindow.BrushColor="Black"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 1000 and time<2000 and end=1 And nether=0 then
        GraphicsWindow.BrushColor="Black"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 2000 and time<3000 and end=1 And nether=0 Then
        GraphicsWindow.BrushColor="Black"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 3000 And time<4000 and end=1 And nether=0 Then
        GraphicsWindow.BrushColor="Black"
        GraphicsWindow.BackgroundColor="Black"
        GraphicsWindow.FillRectangle(900,20,suw,suh)
      EndIf
      If time > 4000 Then
        time=0
      EndIf  
    EndWhile

    Sub doNew
      GraphicsWindow.Clear()
      GraphicsWindow.Hide()
      GraphicsWindow.Show()
      GraphicsWindow.Title="New Account"
      GraphicsWindow.brushColor="Black"
      GraphicsWindow.FontSize=14
      upbox=controls.AddMultiLineTextBox(10,10)
      Controls.SetSize(upbox,690,300)
      GraphicsWindow.brushColor="Black"
      Controls.SetTextBoxText(upbox,ver2+ver1)
      GraphicsWindow.BrushColor="DarkGreen"
      GraphicsWindow.FillRectangle(0,0,710,510)
      GraphicsWindow.BrushColor="Black"
      GraphicsWindow.FontSize=15
      GraphicsWindow.DrawResizedImage(title,20,350,305,60)
      GraphicsWindow.FontSize=15
      GraphicsWindow.BrushColor="Black"
      yes=controls.AddButton("Create",630,350)
      GraphicsWindow.BrushColor="Black"
      grr=controls.AddTextBox(470,355)
      Controls.SetSize(yes,70,35)
      Controls.SetSize(grr,150,25)
    EndSub

    Sub doEnd
      end=1
      loaded=1
      x=0
      y=400
      px=px
      py=py
      suh=60
      suw=60
      set=1
      b=b
      time=1
      GraphicsWindow.BrushColor="Black"
      text="Building..."
      add=Shapes.AddText(text)
      GraphicsWindow.BrushColor="LightGreen"
      GraphicsWindow.FillRectangle(x,y,1024,350)
      Shapes.Remove(add)
      GraphicsWindow.BrushColor="Black"
      text="Done!"
      add=Shapes.AddText(text)
      Program.Delay(500)
      Shapes.Remove(add)
      brush="Black"
      back="Black"
      GraphicsWindow.BrushColor=brush
      GraphicsWindow.FillRectangle(900,20,suw,suh)
      GraphicsWindow.BackgroundColor=back
      GraphicsWindow.FillRectangle(900,20,suw,suh)
     
      load=headtype
      Shapes.Remove(head)
      Shapes.Remove(frame)
      head=shapes.AddImage(load)
      Shapes.Zoom(head,0.5,0.5)
      Shapes.Move(head,px,py)
      GraphicsWindow.DrawResizedImage(gui,600,640,400,40)
      GraphicsWindow.DrawResizedImage(diamond,609,648,30,25)
      GraphicsWindow.DrawResizedImage(stone,653,648,30,25)
      GraphicsWindow.DrawResizedImage(wood,697,648,30,25)
      GraphicsWindow.DrawResizedImage(wool,741,648,30,25)
      GraphicsWindow.DrawResizedImage(whitestone,785,648,30,25)
      GraphicsWindow.DrawResizedImage(glass,829,648,30,25)
      GraphicsWindow.DrawResizedImage(bookshelf,873,648,30,25)
      GraphicsWindow.DrawResizedImage(pumpkin,917,648,30,25)
      GraphicsWindow.DrawResizedImage(doorgui,961,648,30,25)
      frame=shapes.AddImage(framepic)
      Shapes.Move(frame,611,648)
      Shapes.Zoom(frame,1.8,1.8)
      block=diamond
    EndSub

    Sunday, August 4, 2013 7:57 PM
  • Hi Daniel

    Just ran your minecraft clone. Good job. Plenty of features and textures.

    Hey btw: sorry for my misplaced reply before. I shouldn't have made that comment on your thread. My mistake, sorry.

    Tuesday, August 6, 2013 7:18 AM
  • No problem. And thanks for your support.
    Tuesday, August 6, 2013 3:20 PM
  • Thanks Daniel

    7 months of SB and this network and I've learnt heaps. I reckon this forum should be the stomping ground of tomorrows best programmers. And they could then come back and teach us more.

    Tuesday, August 6, 2013 10:38 PM