# 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)

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