Please continue kids tutorial

I want you to keep up the kids tutorials, I’ve been waiting on a class tutorial for a while now, so could you continue, or does anybody have a link to an easy to understand class tutorial? (I’m 17 and am really interested in coding) :slight_smile:

hey @pewbert i’ve found its easier to learn by experience, heres some code you can learn from, its littered with comments. Let me know if anything is unclear, i typed this during school

###main

-- Class Tut

function setup()
    newcircle = Circle(10,50,100)
    creates a new Circle called newcircle
end

function draw()
    background(40, 40, 50)
    strokeWidth(5)
    newcircle:draw()
    -- draws the Circle called newcircle
end

###Circle class

Circle = class() -- Creates the class circle

-- function tells the computer that you're about to
-- define a function, in this case the function which
-- is called init, is a function defined for a Circle
-- You know that its defined for a circle because Circle
-- is written before the colon
-- You know that the function is called init because
-- init is typed after the colon

function Circle:init(x, y, r) 
    
    -- init gets called when you make a circle
    -- e.g. newcircle = Circle(10, 50, 100)
    -- This creates a new circle with the x, y and r parameters specified
    
    self.x = x
    self.y = y
    self.r = r
    
    -- One reason you have to give the x value to the variable self.x
    -- is so that you can reach it in other functions

end

function Circle:draw()
    
    -- draw must be called manually
    -- e.g. newcircle:draw()
    
    ellipse(self.x, self.y, self.r)
    
    -- As you can see we are calling the x variable that was given in init
    -- because the magic variable self.x teleported it over here
    
end

.@pewbert - There is a tutorial on classes here: http://codeatuts.blogspot.com.au/2012/08/interlude-11-classes-in-lua-and-codea.html

Here’s a simple button class.


supportedOrientations(PORTRAIT_ANY)
    
function setup()
    buttonState=""
    btab={}    -- button table
    -- insert buttons in table
    table.insert(btab,button(200,400,100,50,color(0,255,0),"button 1",color(255,0,0),b1func))
    table.insert(btab,button(200,600,100,50,color(0,255,255),"button 2",color(255,0,0),b2func))
    table.insert(btab,button(200,800,100,50,color(0,0,255),"button 3",color(255,0,0),b3func))
end

function draw()    -- draw button in the table
    background(40,40,50)
    for b in pairs(btab) do
        btab[b]:draw()
    end
    fill(255)
    text(buttonState,200,900)
end

function touched(t)    -- check buttons in the table for being touched
    for b in pairs(btab) do
        btab[b]:touched(t)
    end
end

function b1func()    -- call this function if button 1 is touched
    buttonState="button 1 touched"
    btab[1]:change()
end

function b2func()    -- call this function if button 2 is touched
    buttonState="button 2 touched"
    btab[2]:change()
end

function b3func()    -- call this function if button 3 is touched
    buttonState="button 3 touched"
    btab[3]:change()
end


button=class()    

function button:init(x,y,w,h,bColor,bText,tColor,func)
    self.x=x     -- x position
    self.y=y     -- y position
    self.w=w     -- width
    self.h=h     -- height
    self.buttonText=bText
    self.textColor=tColor
    self.l=self.x-self.w/2    -- left side of button
    self.r=self.x+self.w+self.w/2    -- right side of button
    self.t=self.y+self.h/2    -- top of button
    self.b=self.y-self.h/2    -- bottom of button
    self.func=func     -- function to call
    self.changed=true
    self.originalColor=bColor
    self.changedColor=color(255,255,255)
    self.buttonColor=bColor
end

function button:change()    -- change button color when touched
    if self.changed then
        self.buttonColor=self.changedColor
    else
        self.buttonColor=self.originalColor
    end
    self.changed=not self.changed     -- toggle changed true/false
end

function button:draw()    -- draw the button with color and text
    rectMode(CENTER)
    fill(self.buttonColor)
    rect(self.x,self.y,self.w,self.h)
    fill(self.textColor)
    text(self.buttonText,self.x,self.y)
end

function button:touched(t)    -- check which button is touched
    if t.state==BEGAN then
        if t.x>self.l and t.x<self.r and t.y>self.b and t.y<self.t then
            self.func()
        end
    end
end

Wow thank you all so much very easy to understand now thanks!

And dalorbi that’s perfectly clear :slight_smile: