Kyseessä on siis funktio jolla saa tehtyä helposti useita "ruutuja" esimerkiksi moninpeliin.Funktio ottaa kuvan pelimaailmasta ja tallentaa sen annettuun kuvamuuttujaan.
Funktiota käytetään seuraavasti:
Code: Select all
Camera(kuvamuuttuja, kuvalähteen x koordinaatti, kuvalähteen y koordinaatti)
Ja sitten esimerkkejä.
Tässä on esimerkkiohjelma kahdella ruudulla :
Näppäimet: wasd ja nuolet
Code: Select all
'Camera function by Otto90x
SCREEN 1024,768 'tehdään ikkunasta vähän suurempi
ruutu1 = MakeImage(512,768) 'tehdään pelaajan numero yksi kuva
ruutu2 = MakeImage(512,768) 'tehdään pelaajan numero kaksi kuva
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp") 'ladataan kartta
PlayObject kartta,0,0,1 ' animoidaan kartta
ukko = LoadObject ("Media\guy.bmp",72) 'ladataan ukko 1
ukko2 = LoadObject("media\guy.bmp",72) 'ladataan ukko 2
PositionObject ukko2,-100,0 'sijoitetaan ukko2 hieman eri paikkaan
SetupCollision ukko, kartta, 1, 4, 2 'Määritellään törmäykset
SetupCollision ukko2,kartta,1,4,2
SetupCollision ukko,ukko2,2,2,2
SetupCollision ukko2,ukko,2,2,2
Repeat 'Päälooppi alkaa
MoveObject ukko,( UpKey() - DownKey() ) * 3 'Ukon ohjaus
TurnObject ukko,( LeftKey() - RightKey() ) * 5
MoveObject ukko2,( KeyDown(cbkeyW) - KeyDown(cbKeyS) ) * 3 'Ukon 2 ohjaus
TurnObject ukko2,( KeyDown(cbkeyA) - KeyDown(cbKeyD) ) * 5
camera(ruutu1,ObjectX(ukko),ObjectY(ukko)) 'Otetaan kuvat ukkojen luota
camera(ruutu2,ObjectX(ukko2),ObjectY(ukko2))
DrawImage ruutu1,0,0 ' Piirretään otetut kuvat ruudulle
DrawImage ruutu2,512,0
DrawScreen 'piirretään näyttö
Forever 'Pääluuppi loppuu
Function camera(img,x,y) 'Funktio joka ottaa kuvan pelimaailmasta
l=ImageWidth(img) 'tarkistetaan kuvan leveys
k=ImageHeight(img) 'tarkistetaan kuvan korkeus
UpdateGame ' laitetaan tämä kaiken varalta
DrawToImage img 'piirretään kuvaan
ClsColor cbblack 'mustataan kuvan tausta
Cls
PositionCamera x,y 'siirretään kamera koordinaatteihin
PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2) 'keskitetään kamera kuvan keskelle
DrawGame 'piirretään pelin grafiikat
DrawToScreen 'piirretään taas ruudulle
EndFunction
Näppäimet: wasd, nuolet, ijkl sekä numpad
Code: Select all
'Camera function by Otto90x
SCREEN 800,600
Type pelaaja
Field obj
Field kuva
Field kontrollit$
End Type
Global isäntäukko, kartta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp") 'ladataan kartta
isäntäukko = LoadObject ("Media\guy.bmp",72)
ShowObject isäntäukko,OFF
LisääPelaaja("200 203 208 205") ' nuolet
LisääPelaaja("17 30 31 32") ' wasd
LisääPelaaja("72 75 76 77") ' numpad
LisääPelaaja("23 36 37 38") ' ijkl
Repeat
pelaajamäärä = 0
For p.pelaaja=Each pelaaja
pelaajamäärä + 1
MoveObject p\obj, ( KeyDown( Int( GetWord(p\kontrollit,1) ) ) - KeyDown( Int( GetWord(p\kontrollit,3) ) ) ) * 3
TurnObject p\obj, ( KeyDown( Int( GetWord(p\kontrollit,2) ) ) - KeyDown( Int( GetWord(p\kontrollit,4) ) ) ) * 5
camera(p\kuva,ObjectX(p\obj),ObjectY(p\obj))
Select pelaajamäärä
Case 1
DrawImage p\kuva,0,0
Case 2
DrawImage p\kuva,400,0
Case 3
DrawImage p\kuva,0,300
Case 4
DrawImage p\kuva,400,300
End Select
Next p
DrawScreen
Forever
Function LisääPelaaja(_kontrollit$)
If CountWords (_kontrollit$) = 4 Then
p.pelaaja=New(pelaaja)
p\kontrollit=_kontrollit$
p\kuva=MakeImage(400,300)
p\obj=CloneObject(isäntäukko)
SetupCollision p\obj,kartta,2,4,2
EndIf
End Function
Function camera(img,x,y) 'Funktio joka ottaa kuvan pelimaailmasta
l=ImageWidth(img) 'tarkistetaan kuvan leveys
k=ImageHeight(img) 'tarkistetaan kuvan korkeus
UpdateGame ' laitetaan tämä kaiken varalta
DrawToImage img 'piirretään kuvaan
ClsColor cbblack 'mustataan kuvan tausta
Cls
PositionCamera x,y 'siirretään kamera koordinaatteihin
PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2) 'keskitetään kamera kuvan keskelle
DrawGame 'piirretään pelin grafiikat
DrawToScreen 'piirretään taas ruudulle
EndFunction
Code: Select all
Function camera(img,x,y) 'Funktio joka ottaa kuvan pelimaailmasta
l=ImageWidth(img) 'tarkistetaan kuvan leveys
k=ImageHeight(img) 'tarkistetaan kuvan korkeus
UpdateGame ' laitetaan tämä kaiken varalta
DrawToImage img 'piirretään kuvaan
ClsColor cbblack 'mustataan kuvan tausta
Cls
PositionCamera x,y 'siirretään kamera koordinaatteihin
PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2) 'keskitetään kamera kuvan keskelle
DrawGame 'piirretään pelin grafiikat
DrawToScreen 'piirretään taas ruudulle
EndFunction