gambas-source-code/app/examples/Games/BeastScroll/.src/MMain.module
2019-05-21 09:02:05 +03:00

215 lines
5.3 KiB
Text

' Gambas module file
'Public Screen As New Window As "Screen"
Public ciel As Image
Public montagnes As Image
Public barriere As Image
Public sol1 As Image
Public sol2 As Image
Public sol3 As Image
Public nuage1 As Image
Public nuage2 As Image
Public nuage3 As Image
Public nuage4 As Image
Public arbre As Image
Public fireworks As Image
Public scrolltext As Image
Public scroll As Integer
Public scrollb As Integer
Public scroll1 As Integer
Public scroll2 As Integer
Public scroll3 As Integer
Public scroll4 As Integer
Public scroll5 As Integer
Public scroll5b As Integer
Public scroll6 As Integer
Public speed As Integer
Private $hWindow As Window
Private $nFrame As Integer
Public Sub Main()
$hWindow = New Window As "Window"
With $hWindow
.Resize(640, 480)
.Framerate = 100
.Resizable = False
.Show()
End With
Music.Load("b-title.mod")
ciel = image.Load("bgd1_ciel.png")
nuage1 = image.Load("sprite_nuages1.png")
montagnes = image.Load("bgd2_montagnes.png")
sol1 = image.Load("bgd3_sol1.png")
sol2 = image.Load("bgd4_sol2.png")
sol3 = image.Load("bgd5_sol3.png")
nuage1 = image.Load("sprite_nuages1.png")
nuage2 = image.Load("sprite_nuages2.png")
nuage3 = image.Load("sprite_nuages3.png")
nuage4 = image.Load("sprite_nuages4.png")
barriere = image.Load("sprite_barriere.png")
arbre = image.Load("sprite_arbre.png")
fireworks = image.Load("fireworks.png")
scrolltext = image.Load("scrolltext.png")
speed = 2
scroll = 0
scrollb = 0
scroll1 = 0
scroll2 = 0
scroll3 = 0
scroll4 = 0
scroll5 = Rnd(0, 640)
scroll5b = Rnd(0, 640)
scroll6 = 0
Music.Play(-1, 1)
End
Private Sub DrawText(sText As String, X As Integer, Y As Integer) As Integer
Dim I As Integer
Dim J As Integer
Draw.Background = Color.Black
For I = -1 To 1
For J = -1 To 1
Draw.Text(sText, X + I, Y + J)
Next
Next
Draw.Background = Color.White
Draw.Text(sText, X, Y)
Return Y + Draw.Font.TextHeight(" ") + 4
End
Public Sub Window_Draw()
'Dim hImage As Image
'$hWindow.Clear
'$hWindow.Clear
'Goto PRINT_TEXT
Dim Y As Integer
scroll = scroll + speed
Dec (scroll1)
scroll2 = scroll2 - 2
scroll3 = scroll3 - 3
scroll4 = scroll4 - 4
scroll5 = scroll5 - 5
scroll5b = scroll5b - 2
scroll6 = scroll6 - 5
If (scroll = 320) Then speed = -2
If (scroll = -960) Then speed = 2
scrollb = scroll
If (scrollb < -640) Then scrollb = -640
If (scrollb > 0) Then scrollb = 0
If (scroll1 = -640) Then scroll1 = 0
If (scroll2 = -640) Then scroll2 = 0
If (scroll3 < -640) Then scroll3 = scroll3 + 640
If (scroll4 < -640) Then scroll4 = scroll4 + 640
If (scroll5 < -640) Then scroll5 = scroll5 + 1280
If (scroll5b < -640) Then scroll5b = scroll5b + 1280
If (scroll6 < -640) Then scroll6 = scroll6 + 640
#If False
hImage = New Image($hWindow.Width, $hWindow.Height)
hImage.DrawImage(ciel, 0, 0)
hImage.DrawImage(montagnes, scroll1, 200)
hImage.DrawImage(montagnes, scroll1 + 640, 200)
hImage.DrawImage(sol1, scroll2, 420)
hImage.DrawImage(sol1, scroll2 + 640, 420)
hImage.DrawImage(sol2, scroll3, 430)
hImage.DrawImage(sol2, scroll3 + 640, 430)
hImage.DrawImage(sol3, scroll4, 450)
hImage.DrawImage(sol3, scroll4 + 640, 450)
hImage.PaintImage(nuage1, scroll6, 0)
hImage.PaintImage(nuage1, scroll6 + 640, 0)
hImage.PaintImage(nuage2, scroll4, 82)
hImage.PaintImage(nuage2, scroll4 + 640, 82)
hImage.PaintImage(nuage3, scroll3, 120)
hImage.PaintImage(nuage3, scroll3 + 640, 120)
hImage.PaintImage(nuage4, scroll2, 138)
hImage.PaintImage(nuage4, scroll2 + 640, 138)
hImage.PaintImage(barriere, scroll5, 440)
hImage.PaintImage(arbre, scroll5b, 140)
hImage.PaintImage(fireworks, scrollb, 0)
hImage.PaintImage(scrolltext, scrollb + 640, 0)
Draw.Image(hImage, 0, 0)
#Else
Draw.Image(ciel, 0, 0)
Draw.Image(montagnes, scroll1, 200)
Draw.Image(montagnes, scroll1 + 640, 200)
Draw.Image(sol1, scroll2, 420)
Draw.Image(sol1, scroll2 + 640, 420)
Draw.Image(sol2, scroll3, 430)
Draw.Image(sol2, scroll3 + 640, 430)
Draw.Image(sol3, scroll4, 450)
Draw.Image(sol3, scroll4 + 640, 450)
Draw.Image(nuage1, scroll6, 0)
Draw.Image(nuage1, scroll6 + 640, 0)
Draw.Image(nuage2, scroll4, 82)
Draw.Image(nuage2, scroll4 + 640, 82)
Draw.Image(nuage3, scroll3, 120)
Draw.Image(nuage3, scroll3 + 640, 120)
Draw.Image(nuage4, scroll2, 138)
Draw.Image(nuage4, scroll2 + 640, 138)
Draw.Image(barriere, scroll5, 440)
Draw.Image(arbre, scroll5b, 140)
Draw.Image(fireworks, scrollb, 0)
Draw.Image(scrolltext, scrollb + 640, 0)
#Endif
PRINT_TEXT:
Inc $nFrame
'If $nFrame = 1000 Then $hWindow.Close
'Print $hWindow.Framerate; " FPS\r";
Y = 10
Draw.Font.Size = Font.DefaultHeight * 2
Y = DrawText($hWindow.Framerate & " " & ("FPS"), 10, Y)
Draw.Font.Size = Font.DefaultHeight
Y = DrawText("[F1] " & ("Toggle fullscreen"), 10, Y)
Y = DrawText("[F5] " & ("Take screenshot to ~/BeastScroll.png"), 10, Y)
Y = DrawText("[ESC] " & ("Quit"), 10, Y)
End
Public Sub Window_Close()
Music.Stop()
End
Public Sub Window_KeyPress()
Select Case Key.Code
Case Key.F1
$hWindow.FullScreen = Not $hWindow.FullScreen
Case Key.Esc
$hWindow.Close
Case Key.F5
$hWindow.Screenshot().Save("~/BeastScroll.png")
End Select
End