CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

24
CRE Programming Club - Class 7 Robert Eckstein and Robert Heard

Transcript of CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Page 1: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

CRE Programming Club - Class 7

Robert Eckstein and Robert Heard

Page 2: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Understanding Events

Certain objects in Small Basic have events that you can “subscribe” to.

In order to subscribe to an event, create a subroutine, then assign the name of the subroutine to the event in the object.

Whenever the event happens, the subroutine is called to “handle” the event. This can be almost never, or several times a second.

Page 3: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

EventsEvents are something in computers that we call interrupts.

With an interrupt, everything is going smoothly in the main program, until something outside the program needs to get the program’s attention.

At that point, execution in the main program is brought to a halt, and the subroutine that handles the interrupt is run.

Page 4: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Import VSX414GraphicsWindow.KeyDown = handleKeyPress

GraphicsWindow.Show()

looping = "True"

While (looping)

TextWindow.WriteLine("Happily looping...")

Program.Delay(500)

EndWhile

Sub handleKeyPress

TextWindow.WriteLine("Key Down is " + GraphicsWindow.LastKey)

EndSub

Page 5: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Adding... Import PDG320

GraphicsWindow.KeyDown = handleKeyPress

GraphicsWindow.KeyUp = handleKeyUp

GraphicsWindow.MouseMove = handleMouseMove

GraphicsWindow.MouseDown = handleMouseClick

GraphicsWindow.Show()

looping = "True"

While (looping)

TextWindow.WriteLine("Happily looping...")

Program.Delay(1000)

EndWhile

Page 6: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Import PDG320Sub handleKeyPress

TextWindow.WriteLine("Key Down is " + GraphicsWindow.LastKey)

EndSub

Sub handleKeyUp

TextWindow.WriteLine("Key Up is " + GraphicsWindow.LastKey)

EndSub

Sub handleMouseMove

TextWindow.WriteLine("Mouse is at " + GraphicsWindow.MouseX + "," +

GraphicsWindow.MouseY)

EndSub

Sub handleMouseClick

TextWindow.WriteLine("Mouse is clicked")

EndSub

Page 7: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

These Are the Key Lines...

GraphicsWindow.KeyDown = handleKeyPress

GraphicsWindow.KeyUp = handleKeyUp

GraphicsWindow.MouseMove = handleMouseMove

GraphicsWindow.MouseDown = handleMouseClick

They assign subroutines to these events....

Page 8: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.
Page 9: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

The Program Object

Program.Delay(time) - This will cause the program to wait for a certain amount of time, specified as a number in milliseconds.

Program.End() - This will cause the program to immediately terminate.

Page 10: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Timer

There is also a Timer object if you want Small Basic to let you know when a certain amount of time has passed. You tell the object how often the time interval is, and give it the name of a subroutine.

Timer.Interval = 1000 Timer.Tick = OnTimerTick

 Sub OnTimerTick     TextWindow.WriteLine(“Timer has ticked”) EndSub

Page 11: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

The Timer Object

Why Would You Use This?

Perhaps you have a clock in your program that needs to count down or up every second...

You can also use it to help show an obstacle or enemy in your game. (A new one comes on screen every 3 seconds.)

Page 12: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

The Sound Object

Look at the reference documentation for the Sound Object

Small Basic gives you the ability to play some elementary or complex sounds.

A bell ringing, a chime, and a click are three of the sounds that you get for “free” with Small Basic.

Page 13: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Import QRL274looping = "True"

While (looping)

Program.Delay(3000)

Sound.PlayBellRing()

TextWindow.WriteLine("Playing bell ring")

Program.Delay(3000)

Sound.PlayChime()

TextWindow.WriteLine("Playing chime")

Program.Delay(3000)

Sound.PlayBellRingAndWait()

TextWindow.WriteLine("Played bell ring")

EndWhile

Page 14: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

What’s the Difference Between Play and

PlayAndWait?The Play() operations will play the sound and immediately continue running the program (even if the sound hasn’t finished yet).

The PlayAndWait() operations will play the sound and stop the program until the sound has completed playing.

Why would you want to use either one?

Page 15: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Import XMV444filepath = "http://creprogramming.com/sounds/a.wav"

Sound.PlayAndWait(filepath)

Sound.Play(filepath)

Program.Delay(1000)

Sound.Pause(filepath)

Program.Delay(1000)

Sound.Play(filepath)

Program.Delay(500)

Sound.Pause(filepath)

Program.Delay(500)

Sound.Play(filepath)

Program.Delay(500)

Sound.Stop(filepath)

Page 16: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

We Can Play a Sound, Pause It, Continue

Playing It, and Stop ItThe Sound.Play() operation will start to play the sound, and immediately continues running the program.

The Sound.Pause() operation pauses the sound.

The Sound.Stop() operation stops and resets.

Page 17: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

The Text Object

Look at the reference documentation for the Text object

The Text object allows you to manipulate Strings.

We can get the length of a string, append to it, check for text inside of it, etc.

Page 18: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Text - Import LKW972

TextWindow.Write("Enter a valid e-mail address: ")

EmailID = TextWindow.Read()

m = Text.IsSubText(EmailID, ".")

n = Text.IsSubText(EmailID, "@")

If (m = "True") And (n = "True") Then

TextWindow.WriteLine("Valid e-mail address.")

Else

TextWindow.WriteLine("Invalid e-mail address.")

EndIf

Page 19: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

What is SubText?

Text.isSubText(text, subText) - Gets whether or not a given subText is a subset of the larger text.

Text.GetSubText(text, start, length) - Gets a sub-text from the given text.

Text.GetSubTextToEnd(text, start) - Gets a sub-text from the given text from a specified position to the end.

Page 20: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

More Text Operations

Text.GetIndexOf(text, subText) - Finds the position where a sub-text appears in the specified text.

Text.ConvertToLowerCase(text) - Converts the given text to lower case.

Text.ConvertToUpperCase(text) - Converts the given text to upper case.

Page 21: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Names - Import JFG395

TextWindow.Write("Enter your full name: ")

Name = TextWindow.Read()

c = Text.GetIndexOf(Name, " ")

firstName = Text.GetSubText(Name, 1, c-1)

lastName = Text.GetSubTextToEnd(Name, c+1)

TextWindow.WriteLine("First name: " + firstName)

TextWindow.WriteLine("Last name: " + lastName)

Page 22: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

How Did We Separate The Names?

We asked the Text object to locate the first instance of a “space” in the string.

We then took the substring from position 1 up to the position before the space (c-1) and made that the first name.

We took the substring from position c+1 to the end and made that the last name.

Page 23: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Assignment

Create a Timer that calls a subroutine every 5 seconds. In that subroutine, play the bells sound...unless it’s been 30 seconds, at which point, you should play the chimes instead.

Or… create a shape on top of a graphics window that will move up, down, left, and right if you press the arrow keys. Create a “wrap around” if the shape goes off the edge of the screen.

Page 24: CRE Programming Club - Class 7 Robert Eckstein and Robert Heard.

Next Time...

We’re going to learn about stacks and the main game loop.