A early Christmas present

Discussion in 'Creative Corner' started by Jordan.lewin, Dec 16, 2015.

  1. Jordan.lewin

    Jordan.lewin The most unrated person you'l ever meet
    Name Changed

    Joined:
    Mar 22, 2014
    Messages:
    84
    Likes Received:
    7
    [​IMG]
    The first is my logic gate simulator
    [​IMG]

    https://www.dropbox.com/s/9mhxma227k3n2b2/Logic gate simulator.pyw?dl=0

    Second is my LMC in python that was written for a pitft on a raspberry pi.

    [​IMG]
    [​IMG]

    https://www.dropbox.com/s/305wzpnqkhzmcrb/lmc.py?dl=0

    And finaly is LMC in E2 that i made a long time ago


    Code:
    @name LMC full
    @inputs EGP:wirelink KeyBoard:wirelink InsertCode:array
    @outputs CodeSave:array
    @persist RAM:array Out:array OutAdd OutCount X Y E OutWait OutPercent CPUProgramCount CPUInstruction CPURegister CPUAcc Numpad Add NumWait Scrol W
    @persist RAMPart ID2 ID RUN:string Active RunWait StepWait Convert:array ConvertAdd ConvertScroll ConvertWait ConvertOn ConvertWait2 Line Step2
    @persist Split:array Error:string ConvertCount CodeCommand VarName:array VarCount VarValue:array MainPercent Input PrintCount Mess:string Speed T
    @persist Wait Wait2 Step Player:entity PlayerSelect SoundWait Slip SlipNumber:array SlipWait SlipType SlipScroll SlipPoint SlipNum Done St Wait3 K
    @persist CodeScroll CodeWait CodeAdd Code:array CodeEditLine Flick:string FlickTime CodePress Current:string Key Ev Friend:array FWait FAdd ConvertShortCut
    
    interval(1)
    
    #By martin.hooker
    Ev=0
    #Ev allows you and the people you select with "/add name" or "/rem name", if it is 1 everyone can touch the EGP
    T=20
    #This is the tick, the higher it is the faster the E2 can work but more lag.
    Player=Friend[(PlayerSelect%Friend:count())+1,entity]
    PlayerSelect++
    X = EGP:egpCursor(Player):x()
    Y = EGP:egpCursor(Player):y()
    E = Player:keyPressed("e")
    if (vec2(X,Y)==vec2(-1)) {E=0} else {PlayerSelect--}
    if (E==1 && EGP:entity():pos():distance(Player:pos())>200) {E=0, PlayerSelect++}
    OutPercent = (OutAdd/(OutCount-6))*100
    ConvertScroll = (ConvertAdd/(Convert:count()-12))*100
    CodeScroll = (CodeAdd/(Code:count()-18))*100
    OutCount = Out:count()
    if (first()) {FAdd=3
        if (Ev==1) {Friend=players()} else {Friend=array(owner(),findPlayerByName("Urumasi"))}
        Code=array("Type your code here")
        Current = Code[1,string]
        PlayerSelect=1
        OutCount=12
        Out = array()
        OutAdd = 1
        CodeEditLine=1
        Flick=""
        EGP:egpClear()
        EGP:egpBox(1,vec2(365,256),vec2(300,512))
        EGP:egpColor(1,vec(19,169,14))
        EGP:egpBox(2,vec2(105),vec2(220,220))
        EGP:egpColor(2,vec(118,235,255))
        EGP:egpBox(3,vec2(270,80),vec2(100,150))
        EGP:egpColor(3,vec(255,118,255))
        EGP:egpText(4,"OUTPUT",vec2(222,3))
        EGP:egpColor(4,vec(0))
        EGP:egpFont(4, "Roboto", 30)
        EGP:egpBox(5,vec2(270,90),vec2(90,120))
        EGP:egpBox(12,vec2(300,45),vec2(20))
        EGP:egpColor(12,vec(200))
        EGP:egpBox(13,vec2(300,135),vec2(20))
        EGP:egpColor(13,vec(200))
        EGP:egpTriangle(14,vec2(300,36),vec2(308,53),vec2(292,53))
        EGP:egpColor(14,vec(100))
        EGP:egpTriangle(15,vec2(300,143),vec2(308,126),vec2(292,126))
        EGP:egpColor(15,vec(100))
        EGP:egpBox(18,vec2(295,260),vec2(150,200))
        EGP:egpColor(18,vec(209,188,0))
        EGP:egpText(19,"CPU",vec2(265,160))
        EGP:egpColor(19,vec(0))
        EGP:egpFont(19, "Roboto", 33)
        EGP:egpLine(20,vec2(220,190),vec2(370,190))
        EGP:egpColor(20,vec(0))
        EGP:egpSize(20,4)
        EGP:egpBox(21,vec2(246,207.5),vec2(40,20))
        EGP:egpText(23,"PROGRAM",vec2(270,192.5))
        EGP:egpColor(23,vec(0))
        EGP:egpFont(23, "Roboto", 25)
        EGP:egpText(24,"COUNTER",vec2(270,208))
        EGP:egpColor(24,vec(0))
        EGP:egpFont(24, "Roboto", 26)
        EGP:egpLine(25,vec2(220,235),vec2(370,235))
        EGP:egpColor(25,vec(0))
        EGP:egpSize(25,4)
        EGP:egpBox(26,vec2(246,255),vec2(40,20))
        EGP:egpText(27,"INSTRUCTION",vec2(270,242.5))
        EGP:egpColor(27,vec(0))
        EGP:egpFont(27, "Roboto", 18)
        EGP:egpText(28,"REGISTER",vec2(270,255))
        EGP:egpColor(28,vec(0))
        EGP:egpFont(28, "Roboto", 18)
        EGP:egpText(30, "ADDRESS",vec2(225,270))
        EGP:egpColor(30,vec(0))
        EGP:egpFont(30, "Roboto", 18)
        EGP:egpText(31, "REGISTER",vec2(225,283))
        EGP:egpColor(31,vec(0))
        EGP:egpFont(31, "Roboto", 18)
        EGP:egpBox(32,vec2(320,285),vec2(40,20))
        EGP:egpLine(34,vec2(220,303),vec2(370,303))
        EGP:egpColor(34,vec(0))
        EGP:egpSize(34,4)
        EGP:egpText(35,"ACCUMULATOR",vec2(225,303))
        EGP:egpColor(35,vec(0))
        EGP:egpFont(35, "Roboto", 22)
        EGP:egpBox(36,vec2(290,340),vec2(60,30))
        EGP:egpBox(38,vec2(292.5,437),vec2(140,145))
        EGP:egpColor(38,vec(58,131,196))
        EGP:egpBox(39,vec2(275,385),vec2(100,30))
        EGP:egpBox(41,vec2(240,420),vec2(30))
        EGP:egpColor(41,vec(215))
        EGP:egpBox(43,vec2(275,420),vec2(30))
        EGP:egpColor(43,vec(215))
        EGP:egpBox(45,vec2(310,420),vec2(30))
        EGP:egpColor(45,vec(215))
            EGP:egpBox(48,vec2(240,455),vec2(30))
        EGP:egpColor(48,vec(215))
        EGP:egpBox(49,vec2(275,455),vec2(30))
        EGP:egpColor(49,vec(215))
        EGP:egpBox(50,vec2(310,455),vec2(30))
        EGP:egpColor(50,vec(215))
    EGP:egpBox(54,vec2(240,490),vec2(30))
        EGP:egpColor(54,vec(215))
        EGP:egpBox(55,vec2(275,490),vec2(30))
        EGP:egpColor(55,vec(215))
        EGP:egpBox(56,vec2(310,490),vec2(30))
        EGP:egpColor(56,vec(215))
    EGP:egpBox(60,vec2(345,385),vec2(30))
        EGP:egpColor(60,vec(215))
        EGP:egpBox(62,vec2(345,420),vec2(30))
        EGP:egpColor(62,vec(215))
        EGP:egpBox(64,vec2(345,455),vec2(30))
        EGP:egpColor(64,vec(215))
        EGP:egpBox(66,vec2(345,490),vec2(30))
        EGP:egpColor(66,vec(215))
    
    EGP:egpBox(68,vec2(435,130),vec2(125,245))
    EGP:egpColor(68,vec(70))
      
    EGP:egpBox(69,vec2(440,270),vec2(125,30))
    EGP:egpBox(193,vec2(440,310),vec2(125,30))
    EGP:egpText(194,"STEP",vec2(407.5,292))
    EGP:egpColor(194,vec(142,0,0))
    EGP:egpFont(194, "Roboto", 36)
    
    function number touching (Up,Down,Left,Right)
    {
        if (Y>Up && Y<Down && X>Left && X<Right) {return 1} else {return 0}
    }
    
    EGP:egpBox(195,vec2(440,350),vec2(125,30))
    EGP:egpText(196,"Assemble to RAM",vec2(379,340))
    EGP:egpColor(196,vec(142,0,0))
    EGP:egpFont(196, "Roboto", 18)
    
    EGP:egpBox(230,vec2(205,10),vec2(20))
    EGP:egpColor(230,vec(200))
    EGP:egpBox(231,vec2(205,202),vec2(20))
    EGP:egpColor(231,vec(200))
    EGP:egpTriangle(232,vec2(205,0),vec2(196,19),vec2(214,19))
    EGP:egpTriangle(233,vec2(205,212),vec2(196,193),vec2(214,193))
    
        RAMPart = 1
      
        function number isCommand(In1:string)
        {
            True = 0
            if (In1=="INP") {True=1}
            if (In1=="OUT") {True=1}
            if (In1=="STA") {True=1}
            if (In1=="LDA") {True=1}
            if (In1=="ADD") {True=1}
            if (In1=="SUB") {True=1}
            if (In1=="BRP") {True=1}
            if (In1=="BRZ") {True=1}
            if (In1=="BRA") {True=1}
            if (In1=="HLT") {True=1}
            if (In1=="DAT") {True=1}
            return True
        }
        function number varContains(In2:string)
        {
            A = 1
            True = 0
            while (A<VarCount && True==0) {
                if (VarName[A,string]==In2) {True=1}
            A++}
            if (VarName[1,string]==In2) {True=1}
            return True
    }
        function number varID(In3:string)
        {
            A = 1
            while (A<VarCount && VarName[A,string]!=In3) {A++}
            return A
        }
        function number returnBranch(In4:string)
        {
            A = 1
            True = 0
            Count = Code:count()
            while (A<Count && True==0) {
                Split = Code[A,string]:explode(" ")
                if (Split:string(1)==In4) {True=1}
                A++}
            if (True==0) {Error = "Unknown branch exit \""+In4+"\" on line "+Line}
            return A-1
        }
        Error = "0"
        ConvertOn=0
        function outp (Inp5:string)
        {
            Out[PrintCount,string]=Inp5
            PrintCount++
        }
        Mess="..."
        EGP:egpLine(238,vec2(335,160),vec2(335,50))
        EGP:egpColor(238,vec(255,255,0))
        EGP:egpSize(238,5)
        EGP:egpOrder(238,1000)
        EGP:egpLine(239,vec2(320,50),vec2(335,50))
        EGP:egpColor(239,vec(255,255,0))
        EGP:egpSize(239,5)
        EGP:egpOrder(239,1000)
        EGP:egpLine(240,vec2(345,160),vec2(345,50))
        EGP:egpColor(240,vec(255,255,0))
        EGP:egpSize(240,5)
        EGP:egpOrder(240,1000)
        EGP:egpLine(241,vec2(375,50),vec2(345,50))
        EGP:egpColor(241,vec(255,255,0))
        EGP:egpSize(241,5)
        EGP:egpOrder(241,1000)
        EGP:egpLine(242,vec2(320,365),vec2(320,360))
        EGP:egpColor(242,vec(255,255,0))
        EGP:egpSize(242,5)
        EGP:egpOrder(242,1000)
      
        function slipe(Type,Number)
        {
            Slip=1
            SlipNum=Number
            SlipType=Type
        }
      
        EGP:egpBox(245,vec2(498),vec2(30))
        EGP:egpColor(245,vec(200))
        EGP:egpBox(246,vec2(377,498),vec2(30))
        EGP:egpColor(246,vec(200))
        EGP:egpTriangle(247,vec2(388,486),vec2(388,510),vec2(365,498))
        EGP:egpTriangle(248,vec2(485,486),vec2(485,510),vec2(508,498))
        EGP:egpColor(248,vec(100))
        Scrol=10
      
        EGP:egpBox(251,vec2(105,365),vec2(220,300))
        EGP:egpColor(251,vec(251,140,250))
      
        EGP:egpBox(253,vec2(205,230),vec2(20))
        EGP:egpColor(253,vec(200))
        EGP:egpBox(254,vec2(205,502),vec2(20))
        EGP:egpColor(254,vec(200))
        EGP:egpTriangle(255,vec2(205,220),vec2(196,239),vec2(214,239))
        EGP:egpTriangle(256,vec2(205,512),vec2(196,493),vec2(214,493))
         function number correct(Num){
            True=0
            if (Num==154) {True=1}
            if (Num==158) {True=1}
            if (Num==9) {True=1}
            if (Num==13) {True=1}
            if (Num==127) {True=1}
            if (Num==154) {True=1}
            if (Num==148) {True=1}
            if (Num==150) {True=1}
            if (Num==147) {True=1}
            if (Num==149) {True=1}
            if (Num==151) {True=1}
            if (Num==152) {True=1}
            if (Num==17) {True=1}
            if (Num==18) {True=1}
            if (Num==19) {True=1}
            if (Num==20) {True=1}
            if (Num==155) {True=1}
            if (Num==175) {True=1}
            return True
        }
        function number keyPressFull()
        {
            A=1
            while(KeyBoard[A]!=0 && A<10) {A++}
            if (KeyBoard[A-1]!=175) {return KeyBoard[A-1]} else {return 0}
        }
        function rem(Enti:entity)
        {
            A=1
            while(A<=Friend:count() && Friend[A,entity]!=Enti) {A++}
            if (A<=Friend:count()) {Friend:removeEntity(A)}
        }
        function number containsN(Entzs:entity)
        {
            True=0
            A=1
            while (A<=Friend:count() && True==0) {
                if (Friend[A,entity]==Entzs) {True=1}
                A++}
            return True
        }
        K=5
    }
    CodeSave = Code
    Spl=owner():lastSaid():explode(" ")
    if (Spl:string(1)=="/add" && FWait==0) {Friend[FAdd,entity]=findPlayerByName(Spl:string(2)), FAdd++, FWait=1
        print("Added "+Spl:string(2)+" to EGP friends")}
    if (Spl:string(1)!="/add" && Spl:string(1)!="/rem") {FWait=0}
    if (Spl:string(1)=="/rem" && FWait==0) {rem(findPlayerByName(Spl:string(2))), FAdd++, FWait=1
        print("Removed "+Spl:string(2)+" to EGP friends")}
    
    if (perf(T)) {
    #[
    if (vec2(X,Y):distance(vec2(205,10))<15) {EGP:egpColor(232,vec(255,0,0))
        if (E==1 && ConvertAdd>=1 && ConvertWait==0) {ConvertAdd--, ConvertWait=1}
        } else {EGP:egpColor(232,vec(100))}
    if (vec2(X,Y):distance(vec2(205,202))<15) {EGP:egpColor(233,vec(255,0,0))
        if (ConvertAdd+12<Convert:count() && E==1 && ConvertWait==0) {ConvertAdd++, ConvertWait=1}
        } else {EGP:egpColor(233,vec(100))}
        ]#
    
    if (KeyBoard["InUse",number]==0 && W==0) {KeyBoard["Kick the bastard out of keyboard",number]=0, W=1, K=10}
    
    if (KeyBoard["InUse",number]==1 && Ev==0) {
    if (KeyBoard["InUse",number]==1 && containsN(KeyBoard["User",entity])==0) {
        KeyBoard["Kick the bastard out of keyboard",number]=1
        soundPlay(3,0,"buttons/button2.wav")
        K=10
    W=0}
    }
    if (K>=1) {K--}
    if (FlickTime<10) {FlickTime++}
    if (FlickTime>=10 && Flick=="") {Flick="|", FlickTime=1}
    if (FlickTime>=10 && Flick=="|") {Flick="", FlickTime=1}
    if (K<=2) {
    if (keyPressFull()==17 && CodeEditLine>1 && CodePress==0) {CodeEditLine--, CodePress=1
        Current=Code[CodeEditLine,string]
    while (CodeEditLine<=CodeAdd) {CodeAdd--}}
    if (keyPressFull()==18 && CodeEditLine<Code:count() && CodePress==0) {CodeEditLine++, CodePress=1
        Current=Code[CodeEditLine,string]
    while (CodeEditLine>CodeAdd+18) {CodeAdd++}}
    if (keyPressFull()==0) {CodePress=0}
    if (keyPressFull()==127 && Current:length()==0 && CodePress==0 && CodeEditLine!=1) {Code:removeString(CodeEditLine) CodeEditLine--
        Current=Code[CodeEditLine,string]
        CodePress=1}
    if (keyPressFull()==127 && CodePress==0) {Current=Current:left(Current:length()-1), CodePress=1}
    if (keyPressFull()==148) {Current=""}
    if (keyPressFull()==13) {CodeEditLine++,Code:insertString(CodeEditLine,""), Current=""
    if(CodeEditLine>CodeAdd+18) {CodeAdd++}}
    if (keyPressFull()==147) {Code=InsertCode
        CodeEditLine=1
        Current=InsertCode[1,string]}
    
    if (keyPressFull()==149) {ConvertShortCut=1} else {ConvertShortCut=0}
    if(->KeyBoard){
        if(KeyBoard[0]>0){
            if (correct(KeyBoard[1])==0) {Current += toChar(KeyBoard[1])}
            KeyBoard[0] = 1
        }
    }}
    
    Code[CodeEditLine,string]=Current
    
    if (vec2(X,Y):distance(vec2(205,230))<15) {EGP:egpColor(255,vec(255,0,0))
        if (E==1 && CodeWait==0 && CodeAdd>=1) {CodeAdd--, CodeWait=1}
        } else {EGP:egpColor(255,vec(100))}
    if (vec2(X,Y):distance(vec2(205,502))<15) {EGP:egpColor(256,vec(255,0,0))
        if (E==1 && CodeWait==0 && CodeAdd+18<Code:count()) {CodeAdd++, CodeWait=1}
        } else {EGP:egpColor(256,vec(100))}
    EGP:egpBox(257,vec2(205,255+(CodeScroll*2.2)),vec2(20))
    EGP:egpColor(257,vec(200))
    
    if (Active==0 && SoundWait==0 && Error!="0") {soundPlay(1,0,"buttons/button11.wav"),SoundWait=1}
    if (Active!=0) {SoundWait=0}
    
    EGP:egpText(237,Mess,vec2(365,450))
    EGP:egpFont(237, "Roboto", 28)
    EGP:egpColor(237,vec(142,0,0))
    
    if (Error!="0") {
        EGP:egpText(235,"Error "+Error,vec2(365))
      
    } else {EGP:egpText(235,"No errors",vec2(365))}
    EGP:egpColor(235,vec(255,0,0))
    EGP:egpFont(235, "Roboto", 8)
    
    Speed = (Scrol*0.40)+0.1
    if (vec2(X,Y):distance(vec2(498))<15) {EGP:egpColor(248,vec(255,0,0))
    if (E==1 && Scrol<99 && Wait3==0) {Scrol+=5, Wait3=1}} else {EGP:egpColor(248,vec(100))}
    if (vec2(X,Y):distance(vec2(377,498))<15) {EGP:egpColor(247,vec(255,0,0))
    if (E==1 && Scrol>=1 && Wait3==0) {Scrol-=5,Wait3=1}} else {EGP:egpColor(247,vec(100))}
    EGP:egpBox(249,vec2(410+(Scrol*0.55),498),vec2(30))
    
    A = 0
    while (A<12) {
    EGP:egpText(197+A,Convert[ConvertAdd+A+1,string],vec2(0,A*16))
    EGP:egpFont(197+A, "Roboto", 20)
    if (ConvertAdd+A+1==Line) {EGP:egpColor(197+A,vec(255,100,0))} else {
    EGP:egpColor(197+A,vec(142,0,0))}
    A++}
    A = 0
    while (A<18) {
    if(CodeAdd+A+1==CodeEditLine) {AddT=Flick} else {AddT=""}
    EGP:egpText(258+A,Code[CodeAdd+A+1,string]+AddT,vec2(0,220+(A*16)))
    EGP:egpFont(258+A, "Roboto", 20)
    EGP:egpColor(258+A,vec(142,0,0))
    A++}
    
    EGP:egpText(236,round(MainPercent)+"%",vec2(365,370))
    EGP:egpColor(236,vec(142,0,0))
    EGP:egpFont(236, "Roboto", 70)
    
    EGP:egpBox(234, vec2(205,35+(ConvertScroll*1.45)),vec2(20))
    EGP:egpColor(234,vec(200))
    EGP:egpText(70,RUN,vec2(407.5,252))
    EGP:egpColor(70,vec(142,0,0))
    EGP:egpFont(70, "Roboto", 36)
    EGP:egpText(6,Out[OutAdd,string],vec2(225,25))
    EGP:egpColor(6,vec(0))
    EGP:egpSize(6,30)
    EGP:egpText(7,Out[OutAdd+1,string],vec2(225,45))
    EGP:egpColor(7,vec(0))
    EGP:egpSize(7,30)
    EGP:egpText(8,Out[OutAdd+2,string],vec2(225,65))
    EGP:egpColor(8,vec(0))
    EGP:egpSize(8,30)
    EGP:egpText(9,Out[OutAdd+3,string],vec2(225,85))
    EGP:egpColor(9,vec(0))
    EGP:egpSize(9,30)
    EGP:egpText(10,Out[OutAdd+4,string],vec2(225,105))
    EGP:egpColor(10,vec(0))
    EGP:egpSize(10,30)
    EGP:egpText(11,Out[OutAdd+5,string],vec2(225,125))
    EGP:egpColor(11,vec(0))
    EGP:egpSize(11,30)
    EGP:egpBox(16,vec2(300,60+OutPercent*0.45),vec2(20))
    EGP:egpColor(16,vec(200))
    EGP:egpText(22,CPUProgramCount:toString(),vec2(227.5,192.5))
    EGP:egpSize(22,30)
    EGP:egpColor(22,vec(0))
    EGP:egpText(29,CPUInstruction:toString(),vec2(240,242.5))
    EGP:egpColor(29,vec(0))
    EGP:egpFont(29, "Roboto", 26)
    EGP:egpText(33,CPURegister:toString(),vec2(315,272))
    EGP:egpColor(33,vec(0))
    EGP:egpFont(33, "Roboto", 26)
    EGP:egpText(37,CPUAcc:toString(),vec2(270,325))
    EGP:egpColor(37,vec(0))
    EGP:egpFont(37, "Roboto", 32)
    EGP:egpText(40,Numpad:toString(),vec2(250,370))
    EGP:egpColor(40,vec(0))
    
    EGP:egpFont(40, "Roboto", 32)
    EGP:egpText(42,"1",vec2(230,405))
    if (vec2(X,Y):distance(vec2(240,420))<15) {EGP:egpColor(42,vec(255,0,0))
        Add=1} else {EGP:egpColor(42,vec(0)), Add=10}
    EGP:egpFont(42, "Roboto", 32)
    EGP:egpText(44,"2",vec2(265,405))
    if (vec2(X,Y):distance(vec2(275,420))<15) {EGP:egpColor(44,vec(255,0,0))
        Add=2} else {EGP:egpColor(44,vec(0))}
    EGP:egpFont(44, "Roboto", 32)
    EGP:egpText(47,"3",vec2(300,405))
    if (vec2(X,Y):distance(vec2(310,420))<15) {EGP:egpColor(47,vec(255,0,0))
        Add=3} else {EGP:egpColor(47,vec(0))}
    EGP:egpFont(47, "Roboto", 32)
        EGP:egpText(51,"4",vec2(230,440))
        if (vec2(X,Y):distance(vec2(240,455))<15) {EGP:egpColor(51,vec(255,0,0))
            Add=4} else {EGP:egpColor(51,vec(0))}
        EGP:egpFont(51, "Roboto", 32)
        EGP:egpText(52,"5",vec2(265,440))
        if (vec2(X,Y):distance(vec2(275,455))<15) {EGP:egpColor(52,vec(255,0,0))
            Add=5} else {EGP:egpColor(52,vec(0))}
        EGP:egpFont(52, "Roboto", 32)
        EGP:egpText(53,"6",vec2(300,440))
        if (vec2(X,Y):distance(vec2(310,455))<15) {EGP:egpColor(53,vec(255,0,0))
            Add=6} else {EGP:egpColor(53,vec(0))}
        EGP:egpFont(53, "Roboto", 32)
    EGP:egpText(57,"7",vec2(230,475))
        if (vec2(X,Y):distance(vec2(240,490))<15) {EGP:egpColor(57,vec(255,0,0))
            Add=7} else {EGP:egpColor(57,vec(0))}
        EGP:egpFont(57, "Roboto", 32)
        EGP:egpText(58,"8",vec2(265,475))
        if (vec2(X,Y):distance(vec2(275,490))<15) {EGP:egpColor(58,vec(255,0,0))
            Add=8} else {EGP:egpColor(58,vec(0))}
        EGP:egpFont(58, "Roboto", 32)
        EGP:egpText(59,"9",vec2(300,475))
        if (vec2(X,Y):distance(vec2(310,490))<15) {EGP:egpColor(59,vec(255,0,0))
            Add=9} else {EGP:egpColor(59,vec(0))}
        EGP:egpFont(59, "Roboto", 32)
        EGP:egpText(61,"0",vec2(335,370))
        if (vec2(X,Y):distance(vec2(345,385))<15) {EGP:egpColor(61,vec(255,0,0))
            Add=0} else {EGP:egpColor(61,vec(0))}
        EGP:egpFont(61, "Roboto", 32)
        EGP:egpText(63,"-",vec2(335,405))
        if (vec2(X,Y):distance(vec2(345,420))<15) {EGP:egpColor(63,vec(255,0,0))
            Add=11} else {EGP:egpColor(63,vec(0))}
        EGP:egpFont(63, "Roboto", 32)
        EGP:egpText(65,"C",vec2(335,440))
        if (vec2(X,Y):distance(vec2(345,455))<15) {EGP:egpColor(65,vec(255,0,0))
            Add=12} else {EGP:egpColor(65,vec(0))}
        EGP:egpFont(65, "Roboto", 32)
        EGP:egpText(67,"E",vec2(335,475))
        if (vec2(X,Y):distance(vec2(345,490))<15) {EGP:egpColor(67,vec(255,0,0))
            if (E==1 && Input==1 && Wait==0) {Input=0,Wait=1}
            } else {EGP:egpColor(67,vec(0))}
        EGP:egpFont(67, "Roboto", 32)
    
    if (RAMPart==1 && maxquota()>10000) {
    A = 1
    B = 1
    ID = 1
    ID2 = 1
    while (B<=5) {
    EGP:egpBox(70+ID,vec2(435,B*24),vec2(120,10))
    EGP:egpOrder(70+ID,70)
    ID++
    while (A<11) {
        EGP:egpText(70+ID,RAM[ID2,number]:toString(),vec2(369+(A*12),(B*24))-vec2(5))
        if (Line==ID2) {EGP:egpColor(70+ID,vec(255,0,0))} else {EGP:egpColor(70+ID,vec(0))}
        EGP:egpFont(70+ID, "Roboto", 10)
        A++
        ID++
        ID2++
    }
    A=1
    B++
    }
    RAMPart=2} elseif (RAMPart==2 && maxquota()>10000) {A=1
    B=1
    while (B<=5) {
    EGP:egpBox(70+ID,vec2(435,(B+5)*24),vec2(120,10))
    EGP:egpOrder(70+ID,70)
    ID++
    while (A<11) {
        EGP:egpText(70+ID,RAM[ID2,number]:toString(),vec2(369+(A*12),((B+5)*24))-vec2(5))
        if (Line==ID2) {EGP:egpColor(70+ID,vec(255,0,0))} else {EGP:egpColor(70+ID,vec(0))}
        EGP:egpFont(70+ID, "Roboto", 10)
        A++
        ID++
        ID2++
    }
    A=1
    B++
    }
    ID++
    RAMPart=0
    while (RAMPart<10) {
    C = RAMPart
    Space = " "
    Txt = C+"1"+Space+C+"2"+Space+C+"3"+Space+C+"4"+Space+C+"5"+Space+C+"6"+Space+C+"7"+Space+C+"8"+Space+C+"9"+Space+(C+1)+"0"+Space
    EGP:egpText(70+ID,Txt,vec2(375,(RAMPart*24)+6))
    EGP:egpColor(70+ID,vec(0))
    EGP:egpFont(70+ID, "Roboto", 11)
    ID++
    RAMPart++
    }
    RAMPart=3}
    if (RAMPart==10) {RAMPart=1}
    if (RAMPart==9) {RAMPart=10}
    if (RAMPart==8) {RAMPart=9}
    if (RAMPart==7) {RAMPart=8}
    if (RAMPart==6) {RAMPart=7}
    if (RAMPart==5) {RAMPart=6}
    if (RAMPart==4) {RAMPart=5}
    if (RAMPart==3) {RAMPart=4}
    
    if (E==1 && Add!=10 && NumWait==0) {
        if (Numpad<=99 && Numpad>=-99) {
            if (Add>=0 && Add<=9) {Numpad = (Numpad:toString()+Add:toString()):toNumber()}
        }
        if (Add==12) {Numpad=0}
        if (Add==11) {Numpad=0-Numpad}
        if (Numpad:toString():length()>4) {Numpad=0}
        NumWait=1
    }
    
    if (vec2(X,Y):distance(vec2(300,45))<15) {EGP:egpColor(14,vec(255,0,0))
        if (E==1 && OutWait==0 && OutAdd>=2) {OutAdd--, OutWait=1}
        } else {EGP:egpColor(14,vec(100))}
    if (vec2(X,Y):distance(vec2(300,135))<15) {EGP:egpColor(15,vec(255,0,0))
        if (E==1 && OutWait==0 && OutAdd+5<OutCount) {OutAdd++, OutWait=1}
        } else {EGP:egpColor(15,vec(100))}
    if (E==0) {
        OutWait=0
        NumWait=0
        RunWait=0
        StepWait=0
        ConvertWait=0
        ConvertWait2=0
        CodeWait=0
        Wait=0
        Wait3=0
    }
    if (touching(254,285,376,500)) {EGP:egpColor(69, vec(255,0,0))
        if (E==1 && RunWait==0 && Active==0) {Active=1
            RunWait=1
            Line=1
            Out=array()
            PrintCount=1
            Step2=1
            } elseif (E==1 && RunWait==0) {Mess="...", MainPercent=0
            Active=0
        RunWait=1
        Slip=0}
        } else {EGP:egpColor(69, vec(255))}
    if (touching(295,325,376,500)) {EGP:egpColor(193, vec(255,0,0))
        if (E==1 && StepWait==0) {Active=2, StepWait=1, Step2=1, St=0, Done=0}
        } else {EGP:egpColor(193, vec(255))}
    if (touching(335,365,376,500) || ConvertShortCut==1) {EGP:egpColor(195, vec(255,0,0))
        if ((ConvertWait2==0 && E==1) || ConvertShortCut==1) {
            if (Code:count()<=99) {ConvertOn=1} else {ConvertOn=0
                Error="Code too long!"}
          
            ConvertWait2=1, Line=1
            Error = "0"
            A = 1
            CodeCommand = 0
            VarName=array()
            VarValue=array()
            VarCount=1
            Convert=array()
            ConvertCount=1
            Count = Code:count()
            while (A<=Count) {
                Split = Code[A,string]:explode(" ")
                if (Split:string(2)=="DAT") {} else {CodeCommand++}
            A++}
            }
        } else {EGP:egpColor(195, vec(255))}
    
    if (vec2(X,Y):distance(vec2(205,10))<15) {EGP:egpColor(232,vec(255,0,0))
        if (E==1 && ConvertAdd>=1 && ConvertWait==0) {ConvertAdd--, ConvertWait=1}
        } else {EGP:egpColor(232,vec(100))}
    if (vec2(X,Y):distance(vec2(205,202))<15) {EGP:egpColor(233,vec(255,0,0))
        if (ConvertAdd+12<Convert:count() && E==1 && ConvertWait==0) {ConvertAdd++, ConvertWait=1}
        } else {EGP:egpColor(233,vec(100))}
    
    if (Active==1) {
        RUN = "STOP"
        EGP:egpAlpha(193,0)
        EGP:egpAlpha(194,0)
        EGP:egpAlpha(195,0)
        EGP:egpAlpha(196,0)
    } else {RUN = "RUN"
    EGP:egpAlpha(193,255)
        EGP:egpAlpha(194,255)
        EGP:egpAlpha(195,255)
        EGP:egpAlpha(196,255)}
    if (Active==2) {
        RUN = "STOP"
        EGP:egpAlpha(195,0)
        EGP:egpAlpha(196,0)
        }
    
    
    if (ConvertOn==1) {
        Split = Code[Line,string]:explode(" ")
        if (!isCommand(Split:string(1))) {
            if (!isCommand(Split:string(2))) {Error = "Unknown command \""+Split:string(1)+"\" at line "+Line}
            }
        if (Error=="0") {
            if (Split:string(1)=="INP" || Split:string(2)=="INP") {
                Convert[ConvertCount,string]="INP"
                ConvertCount++
                }
            if (Split:string(1)=="OUT" || Split:string(2)=="OUT") {
                Convert[ConvertCount,string]="OUT"
                ConvertCount++
                }
            if (Split:string(1)=="HLT") {
                Convert[ConvertCount,string]="HLT"
                ConvertCount++
                }
            if (Split:string(1)=="STA" || Split:string(2)=="STA") {
                if (varContains(Split:string(2))==0 && isCommand(Split:string(2))==0) {
                VarName[VarCount,string]=Split:string(2)
                    VarValue[VarCount,number]=0
                    VarCount++
                    Convert[ConvertCount,string]="STA "+(CodeCommand+(VarCount-1))
                    } else {
                    if (varContains(Split:string(3))==0 && isCommand(Split:string(2))==1) {
                        VarName[VarCount,string]=Split:string(3)
                        VarValue[VarCount,number]=0
                        VarCount++
                        Convert[ConvertCount,string]="STA "+(CodeCommand+(VarCount-1))
                    } else {
                    if (isCommand(Split:string(2))) {Convert[ConvertCount,string]="STA "+(CodeCommand+varID(Split:string(3)))} else {
    Convert[ConvertCount,string]="STA "+(CodeCommand+varID(Split:string(2)))}}
            }
                ConvertCount++
                }
            if (Split:string(1)=="LDA" || Split:string(2)=="LDA") {
                if (varContains(Split:string(2))==0 && isCommand(Split:string(2))==0) {
                    VarName[VarCount,string]=Split:string(2)
                    VarValue[VarCount,number]=0
                    VarCount++
                    Convert[ConvertCount,string]="LDA "+(CodeCommand+(VarCount-1))
                    } else {
                    if (varContains(Split:string(3))==0 && isCommand(Split:string(2))==1) {
                        VarName[VarCount,string]=Split:string(3)
                        VarValue[VarCount,number]=0
                        VarCount++
                        Convert[ConvertCount,string]="LDA "+(CodeCommand+(VarCount-1))
                    } else {
            if (isCommand(Split:string(2))) {Convert[ConvertCount,string]="LDA "+(CodeCommand+varID(Split:string(3)))} else {
    Convert[ConvertCount,string]="LDA "+(CodeCommand+varID(Split:string(2)))}}}
                ConvertCount++
                }
            if (Split:string(1)=="ADD" || Split:string(2)=="ADD") {
                if (varContains(Split:string(2))==0 && isCommand(Split:string(2))==0) {
                    VarName[VarCount,string]=Split:string(2)
                    VarValue[VarCount,number]=0
                    VarCount++
                    Convert[ConvertCount,string]="ADD "+(CodeCommand+(VarCount-1))
                    } else {
                    if (varContains(Split:string(3))==0 && isCommand(Split:string(2))==1) {
                        VarName[VarCount,string]=Split:string(3)
                        VarValue[VarCount,number]=0
                        VarCount++
                        Convert[ConvertCount,string]="ADD "+(CodeCommand+(VarCount-1))
                    } else {
            if (isCommand(Split:string(2))) {Convert[ConvertCount,string]="ADD "+(CodeCommand+varID(Split:string(3)))} else {
    Convert[ConvertCount,string]="ADD "+(CodeCommand+varID(Split:string(2)))}}}
                ConvertCount++
                }
            if (Split:string(1)=="SUB" || Split:string(2)=="SUB") {
                if (varContains(Split:string(2))==0 && isCommand(Split:string(2))==0) {
                    VarName[VarCount,string]=Split:string(2)
                    VarValue[VarCount,number]=0
                    VarCount++
                    Convert[ConvertCount,string]="SUB "+(CodeCommand+(VarCount-1))
                    } else {
                    if (varContains(Split:string(3))==0 && isCommand(Split:string(2))==1) {
                        VarName[VarCount,string]=Split:string(3)
                        VarValue[VarCount,number]=0
                        VarCount++
                        Convert[ConvertCount,string]="SUB "+(CodeCommand+(VarCount-1))
                    } else {
            if (isCommand(Split:string(2))) {Convert[ConvertCount,string]="SUB "+(CodeCommand+varID(Split:string(3)))} else {
    Convert[ConvertCount,string]="SUB "+(CodeCommand+varID(Split:string(2)))}}}
                ConvertCount++
                }
            if (Split:string(2)=="DAT") {
                if (!varContains(Split:string(1))) {
                    VarName[VarCount,string]=Split:string(1)
                    VarValue[VarCount,number]=Split:string(3):toNumber()
                    VarCount++
                    } else {VarValue[varID(Split:string(1)),number]=Split:string(3):toNumber()}
            }
            if (Split:string(1)=="BRP") {
                Convert[ConvertCount,string]="BRP "+returnBranch(Split:string(2))
                ConvertCount++
            }
            if (Split:string(1)=="BRZ") {
                Convert[ConvertCount,string]="BRZ "+returnBranch(Split:string(2))
                ConvertCount++
            }
            if (Split:string(1)=="BRA") {
                Convert[ConvertCount,string]="BRA "+returnBranch(Split:string(2))
                ConvertCount++
            }
            MainPercent=(Line/Code:count())*50
            Line++
            if (Line>Code:count()) {ConvertOn=2
                Line=1
                RAM=array()}
    } else {ConvertOn=0}
    }
    if (ConvertOn==2) {
        Split = Convert[Line,string]:explode(" ")
        if (Split:string(1)=="INP") {RAM[Line,number]=901}
        if (Split:string(1)=="OUT") {RAM[Line,number]=902}
        if (Split:string(1)=="HLT") {RAM[Line,number]=0}
        if (Split:string(1)=="STA") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(30+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(3+Split:string(2)):toNumber()}}
        if (Split:string(1)=="LDA") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(50+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(5+Split:string(2)):toNumber()}}
        if (Split:string(1)=="ADD") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(10+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(1+Split:string(2)):toNumber()}}
        if (Split:string(1)=="SUB") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(20+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(2+Split:string(2)):toNumber()}}
        if (Split:string(1)=="BRP") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(80+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(8+Split:string(2)):toNumber()}}
        if (Split:string(1)=="BRZ") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(70+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(7+Split:string(2)):toNumber()}}
        if (Split:string(1)=="BRA") {
            if (Split:string(2):toNumber()<=9) {RAM[Line,number]=(60+Split:string(2)):toNumber()}
        else {RAM[Line,number]=(6+Split:string(2)):toNumber()}}
        MainPercent=((Line/Convert:count())*25)+50
        Line++
        if (Line>Convert:count()) {ConvertOn=4,Line=1}
    }
    if (ConvertOn==4) {
        RAM[(CodeCommand+Line),number]=VarValue[Line,number]
        MainPercent=((Line/VarCount)*25)+75
        Line++
    if (Line>=VarCount) {ConvertOn=0, MainPercent=100}
    }
    #[
    if (Active==1 && ConvertOn==0 && Input==0)
    {
        Numb = RAM[Line,number]
        if (Numb:toString()[1]=="8" && CPUAcc>=0) {Line=(Numb:toString()[2]+Numb:toString()[3]):toNumber()}
        if (Numb:toString()[1]=="7" && CPUAcc==0) {Line=(Numb:toString()[2]+Numb:toString()[3]):toNumber()}
        if (Numb:toString()[1]=="6") {Line=(Numb:toString()[2]+Numb:toString()[3]):toNumber()}
        Numb = RAM[Line,number]
        if (Numb==901) {Input=1, Mess="Input required"} else {Mess="..."}
        if (Numb==902) {outp(CPUAcc:toString())}
        if (Numb:toString()[1]=="1") {CPUAcc+=RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number]}
        if (Numb:toString()[1]=="3") {RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number]=CPUAcc}
        if (Numb:toString()[1]=="2") {CPUAcc-=RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number]}
        if (Numb:toString()[1]=="5") {CPUAcc=RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number]}
        MainPercent = (Line/RAM:count())*100
        if (Numb==0) {Active=0, MainPercent=100,soundPlay(2,0,"buttons/button9.wav")}
        CPUProgramCount = Line
        CPUInstruction = (Numb:toString()[1]):toNumber()
        CPURegister = (Numb:toString()[2]+Numb:toString()[3]):toNumber()
        Line++
    }
    This is the old run code without the animation.
    ]#
    
    if (Active==1 && Step==0) {Step2=1}
    
    if (Active==2 && Wait2==0) {
            RunWait=1
            Line=1
            Out=array()
            PrintCount=1
        Wait2=1
        Slip=0
        Done=0}
    if (Active!=2) {Wait2=0}
    
    if (Step2==1)
    {
        if (Done==0) {slipe(3,RAM[Line,number])}
        if (Done==1) {Step=1, Step2=0, Done=0, St=0}
    }
    
    if (ConvertOn==0 && Input==0 && Step==1 && Slip==0)
    {
        Numb = RAM[Line,number]
        if (Numb:toString()[1]=="8" && CPUAcc>=0) {Line=(Numb:toString()[2]+Numb:toString()[3]):toNumber()}
        if (Numb:toString()[1]=="7" && CPUAcc==0) {Line=(Numb:toString()[2]+Numb:toString()[3]):toNumber()}
        if (Numb:toString()[1]=="6") {Line=(Numb:toString()[2]+Numb:toString()[3]):toNumber()}
        Numb = RAM[Line,number]
      
        if (Numb==901) {if (Done==0 && St==0) {Done=1,St=1}
            if (Done==1 && St==1) {slipe(4,0),St=2,Done=0}
        if (Done==1 && St==2) {Input=1, Mess="Input required", St=3,Done=0}
    if (Input==0 && St==3) {slipe(5,Numpad),St=4,Done=0}
    if (Done==1 && St==4) {CPUAcc=Numpad}} else {Mess="..."}
    
        if (Numb==902) {if (Done==0) {slipe(1,CPUAcc)}
        if (Done==1) {outp(CPUAcc:toString()),Done=0}}
      
        if (Numb:toString()[1]=="1") {if (Done==0) {slipe(3,RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number])}
        if (Done==1) {CPUAcc+=RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number], Done=0}}
      
        if (Numb:toString()[1]=="3") {if (Done==0) {slipe(2,CPUAcc)}
        if (Done==1) {RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number]=CPUAcc, Done=0}}
      
        if (Numb:toString()[1]=="2") {if (Done==0) {slipe(3,RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number])}
        if (Done==1) {CPUAcc-=RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number], Done=0}}
      
        if (Numb:toString()[1]=="5") {if (Done==0) {slipe(3,RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number])}
        if (Done==1) {CPUAcc=RAM[(Numb:toString()[2]+Numb:toString()[3]):toNumber(),number], Done=0}}
      
        MainPercent = (Line/RAM:count())*100
        if (Numb==0) {Active=0, MainPercent=100,soundPlay(2,0,"buttons/button9.wav")}
        CPUProgramCount = Line
        CPUInstruction = (Numb:toString()[1]):toNumber()
        CPURegister = (Numb:toString()[2]+Numb:toString()[3]):toNumber()
        if (Slip==0 && Input==0) {Line++, Step=0}
    }
    
    if (Slip==1)
    {
        if (SlipWait==0) {
            SlipWait=1
            SlipPoint=1
            SlipScroll=0
            EGP:egpAlpha(243,255)
            EGP:egpAlpha(244,255)
            }
        if (SlipType==1)
        {
            if (SlipPoint==1) {SlipNumber[1,vector2]=vec2(335,160-SlipScroll)} else {
                SlipNumber[1,vector2]=vec2(335-SlipScroll,50)}
            if (SlipNumber[1,vector2]:y()>=51) {SlipScroll+=Speed} elseif (SlipPoint==1) {SlipPoint=2,SlipScroll=0}
            if (SlipPoint==2 && SlipNumber[1,vector2]:x()>=280) {SlipScroll+=Speed} elseif (SlipPoint==2) {Slip=0}
            EGP:egpCircle(243,SlipNumber[1,vector2],vec2(10))
            EGP:egpColor(243,vec(255,200,0))
            EGP:egpText(244,SlipNum:toString(),SlipNumber[1,vector2]-vec2(10))
            EGP:egpColor(244,vec(0))
            EGP:egpFont(244, "Roboto", 20)
        }
        if (SlipType==2)
        {
            if (SlipPoint==1) {SlipNumber[1,vector2]=vec2(345,160-SlipScroll)} else {
                SlipNumber[1,vector2]=vec2(345+SlipScroll,50)}
            if (SlipNumber[1,vector2]:y()>=51) {SlipScroll+=Speed} elseif (SlipPoint==1) {SlipPoint=2,SlipScroll=0}
            if (SlipPoint==2 && SlipNumber[1,vector2]:x()<=380) {SlipScroll+=Speed} elseif (SlipPoint==2) {Slip=0}
            EGP:egpCircle(243,SlipNumber[1,vector2],vec2(10))
            EGP:egpColor(243,vec(255,200,0))
            EGP:egpText(244,SlipNum:toString(),SlipNumber[1,vector2]-vec2(10))
            EGP:egpColor(244,vec(0))
            EGP:egpFont(244, "Roboto", 20)
        }
        if (SlipType==3)
        {
            if (SlipPoint==1) {SlipNumber[1,vector2]=vec2(380-SlipScroll,50)} else {
                SlipNumber[1,vector2]=vec2(345,50+SlipScroll)}
            if (SlipNumber[1,vector2]:x()>=345 && SlipPoint==1) {SlipScroll+=Speed} elseif (SlipPoint==1) {SlipPoint=2,SlipScroll=0}
            if (SlipPoint==2 && SlipNumber[1,vector2]:y()<=160) {SlipScroll+=Speed} elseif (SlipPoint==2) {Slip=0}
            EGP:egpCircle(243,SlipNumber[1,vector2],vec2(10))
            EGP:egpColor(243,vec(255,200,0))
            EGP:egpText(244,SlipNum:toString(),SlipNumber[1,vector2]-vec2(10))
            EGP:egpColor(244,vec(0))
            EGP:egpFont(244, "Roboto", 20)
        }
        if (SlipType==4)
        {
            if (SlipPoint==1) {SlipNumber[1,vector2]=vec2(320,320+SlipScroll)}
            if (SlipNumber[1,vector2]:y()<=380 && SlipPoint==1) {SlipScroll+=Speed} elseif (SlipPoint==1) {Slip=0}
            EGP:egpCircle(243,SlipNumber[1,vector2],vec2(10))
            EGP:egpColor(243,vec(255,200,0))
            EGP:egpText(244,SlipNum:toString(),SlipNumber[1,vector2]-vec2(10))
            EGP:egpColor(244,vec(0))
            EGP:egpFont(244, "Roboto", 20)
        }
        if (SlipType==5)
        {
            if (SlipPoint==1) {SlipNumber[1,vector2]=vec2(320,380-SlipScroll)}
            if (SlipNumber[1,vector2]:y()>=320 && SlipPoint==1) {SlipScroll+=Speed} elseif (SlipPoint==1) {Slip=0}
            EGP:egpCircle(243,SlipNumber[1,vector2],vec2(10))
            EGP:egpColor(243,vec(255,200,0))
            EGP:egpText(244,SlipNum:toString(),SlipNumber[1,vector2]-vec2(10))
            EGP:egpColor(244,vec(0))
            EGP:egpFont(244, "Roboto", 20)
        }
        if (Slip==0) {Done=1, EGP:egpAlpha(243,0),EGP:egpAlpha(244,0)}
      
    }
    if (Slip==0) {SlipWait=0}
    
    
    }
    
    I'm still a newbie at python so il release something a little better in the next year.
     
    #1
    Last edited: Dec 16, 2015
  2. slimysnakeuk

    slimysnakeuk The 'bully'
    Contributor

    Joined:
    Mar 16, 2014
    Messages:
    3,122
    Likes Received:
    200
    I assume you go to college being second year?

    Eitherway, really nice, much better than what I can do properly right now - Unfortunately in my first year on doing programming in education, started playing around with pygame but meh, Probably going to move to c#
     
    #2