Heres my version of the first task. Took bang on 45 minutes. I ran out of time before I could sort the levels out so for now you can only get to level 4. Its got multiple letters, title, game over and stuff so i'm quite happy with it. With more time I might have made the letters bounce up and down.
AppTitle "Quick Draw"
Graphics 640, 480, 32, 2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Global state, hiscore, score, level=1, time=60
Global old_time=MilliSecs()
Type letter
Field x, y, char, spd
End Type
While Not KeyHit(1)
Cls
If state = 0 ;Title
Text 20, 20, "Letter Shootout"
Text 20, 40, "Hit space to begin"
Text 20, 60, "Hiscore: "+hiscore
WaitKey
state=1
Else If state = 1 ;Game
DrawBar()
CheckGen()
DrawLetters()
ShootLetters()
If MilliSecs() >= old_time+1000 Tick()
LevelUp()
Else ;Game Over
Text 20, 20, "Game over, your score: "+score
If score > hiscore Then hiscore = score
Text 20, 40, "Hiscore: "+hiscore
Text 20, 60, "Hit any key to continue"
WaitKey
state=0
score=0
time=60
level=1
EndIf
Flip
Wend
Function DrawBar()
Color 50, 50, 50
Rect 0, 0, 640, 20
Color 100, 100, 100
Text 10, 2, "Score: "
Text 260, 2, "Level: "
Text 440, 2, "Time: "
Color 180, 50, 50
Text 60, 2, score
Text 320, 2, level
Text 500, 2, time
End Function
Function CheckGen()
For l.letter = Each letter
num=num+1
Next
If num < level
l.letter = New letter
l\x= -10
l\y=Rand(20, 460)
l\spd=Rand(1, level)
l\char = Rand(48, 90)
While l\char > 57 And l\char < 97
l\char = Rand(48, 122)
Wend
EndIf
End Function
Function DrawLetters()
For l.letter = Each letter
l\x=l\x+l\spd
Color 80, 80, 80
Rect l\x-1, l\y, 10, 12
Color 255, 0, 0
Text l\x, l\y, Chr$(l\char)
If l\x > 640
score = score -2
time = time-1
Delete l.letter
EndIf
Next
End Function
Function ShootLetters()
in = GetKey()
For l.letter = Each letter
If l\char = in
Delete l.letter
score=score+10
EndIf
Next
End Function
Function Tick()
time = time - 1
If time <= 0 Then state=2
old_time=MilliSecs()
End Function
Function LevelUp()
If score >= 100 And level = 1
score = score + time
level = level+1
time = 80
Else If score >=500 And level =2
score = score + (time*2)
level = level+1
time = 100
Else If score >=1500 And level=3
score = score + (time*3)
level = level+1
time = 100
Else If score >=1500 And level=4
score = score + (time*3)
level = level+1
time = 150
EndIf
End Function