Ja skaalaimen minimi limit kusee. (Sen vähä täs nyt kerron etukäteen.)
Code: Select all
Const SW = 640
Const SH = 480
SCREEN SW, SH
'lataa kartta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
ObjectPickable kartta, ON 'aseta se poimittavaksi
PlayObject kartta,0,0,1 'animoi kartta
'lataa pelaaja
ukko = LoadObject ("Media\guy.bmp",72)
'lataa vihulainen
vihu = LoadObject ("Media\guy.bmp",72)
ObjectPickable vihu, 2 'aseta se poimittavaksi
PositionObject vihu, 32,150 'sijoita ylemmäs
'törmäykset
SetupCollision ukko, vihu, 2, 2, 2
'kartta-törmäykset on hyvä esitellä viimeiseksi
SetupCollision ukko, kartta, 1, 4, 2
buf1 = MakeImage(SW, SH)
buf2 = MakeImage(SW, SH)
times# = 1
AddText "Välilyönnillä skaalain päälle/pois"
AddText "Hiiren rullasta taikka näppäimillä q/a säädä skaalaa."
suurennus = True
Repeat
SetWindow ""+FPS()
'Ukon ohjaus
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
UpdateGame
DrawGame
//Alemmalla koodirivillä on iki-ihanaa purkkaa.. <3
If suurennus = True Then
PositionCamera ObjectX(ukko) - (SW * zoom#/2) + SW/2, ObjectY(ukko) + (SH * zoom#/2) - SH/2
Else
CloneCameraPosition ukko
EndIf
suurennus = suurennus Xor KeyHit(57)
times = times + MouseMoveZ()*0.005
times = times + 0.005*(KeyDown(cbkeyq) - KeyDown(cbkeya))
times = Max(0, times)
zoom# = Float(1/times)
If suurennus = True Then
DrawToWorld OFF
DrawToImage buf1 //Tyhennetään kuvapuskuri1:n jääneet turhat rojut maalaamalla se mustaksi.
Color cbblack
Box 0, 0, SW, SH
DrawToImage buf2 //Tyhennetään kuvapuskuri2:n jääneet turhat rojut maalaamalla se mustaksi myös.
Color cbblack
Box 0, 0, SW, SH
DrawToScreen
For i = 0 To SW
CopyBox Int(i*zoom#), 0, 1, SH, i, 0, SCREEN(), Image(buf1)
Next i
For i = 0 To SH
CopyBox 0, Int(i*zoom#), SW, 1, 0, i, Image(buf1), Image(buf2)
Next i
//Ei päästetä "Alkuperäistä" taustaa näkyviin.
Color 0, 0, 0
Box 0, 0, SW, SH
DrawImage buf2, 0, 0
EndIf
DrawScreen 'piirrä näyttö
Forever