Code: Select all
FrameLimit 40
Type RAKETIT
Field obj
EndType
Type ASTEROIDIT
Field obj
Field hp
EndType
Type VIHUT
Field obj
Field hp#
EndType
Const TUTKA_X=225
Const TUTKA_Y=100
Const TUTKA_KOKO=50
maksimi=2
kamera=MakeImage(200,150)
space=MakeImage(400,300)
DrawToImage space
For i=1 To 100
Dot Rand(0,399),Rand(0,299)
Next i
DrawToScreen
world=MakeObjectFloor()
PaintObject world,space
sina=LoadObject("media\sinä.bmp",72)
hp#=100.0
energia=LoadObject("media\energia.bmp")
hiiri=LoadObject("media\hiiri.bmp")
ObjectOrder hiiri,1
meteori=LoadObject("media\meteori.bmp")
ShowObject meteori,OFF
pu=LoadObject("media\power-up.bmp")
ma=LoadObject("media\musta-aukko.bmp",72)
raketti=LoadObject("media\raketti.bmp")
ShowObject raketti,OFF
vihu=LoadObject("media\vihu.bmp",72)
ShowObject vihu,OFF
pää=LoadObject("media\päävihu.bmp")
n=2
Repeat
ClsColor 56,62,184
PositionObject hiiri,MouseWX(),MouseWY()
If MouseX()>=0 And MouseX()=< 0+200 And MouseY()>=0 And MouseY()=< 0+150 Then
ShowMouse OFF
Else
ShowMouse ON
EndIf
Gosub tarkista
Color 255,255,255
Text 251,9,"hp: "+hp
For iVihu.VIHUT= Each VIHUT
MoveObject iVihu\obj,Rand(-6,6)
TurnObject iVihu\obj,Rand(-5,5)
Next iVihu
PositionObject pää,Int(750.1994),Int(-17.1)
If LeftKey() Then TurnObject sina,5
If RightKey() Then TurnObject sina, -5
If UpKey() Then MoveObject sina,n
If DownKey() Then MoveObject sina,-n
If KeyDown(42) Or KeyDown(54) Then n=8 Else n=2
If KeyDown(cbkeyspace) And reload=0 Then
newRaketti.RAKETIT= New(RAKETIT)
newRaketti\obj=CloneObject(raketti)
CloneObjectPosition newRaketti\obj,sina
CloneObjectOrientation newRaketti\obj,sina
MoveObject newRaketti\obj,24
reload=4
EndIf
i=0
For lVihu.VIHUT= Each VIHUT
For iRaketti.RAKETIT= Each RAKETIT
MoveObject iRaketti\obj,6
If ObjectsOverlap(iRaketti\obj,lVihu\obj,3) Then
DeleteObject iRaketti\obj
Delete iRaketti
EndIf
lVihu\hp-0.1
If lVihu\hp=0.0 Then
DeleteObject lVihu\obj
Delete lVihu
EndIf
If Nykyinen_maara=1 Then
Gosub tarkista
EndIf
i=i+1
Next iRaketti
Next lVihu
If reload>0 Then reload=reload-1
Text 248,60,"Ladatut ammukset: "+i
camera(kamera,ObjectX(sina),ObjectY(sina))
DrawImage kamera,0,0
Gosub tutka
DrawScreen
Forever
Function nappi(Teksti$,x,y,leveys=0,korkeus=0)
leveys1=leveys
korkeus1=korkeus
If leveys1=0 Then leveys2=TextWidth(Teksti)
If korkeus1=0 Then korkeus2=TextHeight(Teksti)
'Napin pohjaväri. EI TEKSTIN VÄRI!
r=getRGB(RED)
g=getRGB(GREEN)
b=getRGB(BLUE)
Color r,g,b
If r=0 And g=0 And b=0 Then
r1=255
g1=255
b1=255
Else
r1=0
g1=0
b1=0
EndIf
Box x,y,leveys2,korkeus2
Color r1,r1,r1
Text x,y,Teksti
If MouseX() >=x And MouseX()<= x+leveys2 And MouseY() >= y And MouseY() <= y+korkeus2 Then
in=True
Else
in=False
EndIf
If in=True And MouseHit(1) Then
painettu=True
Else
painettu=False
EndIf
Return painettu
EndFunction
Function camera(img,x,y)
l=ImageWidth(img)
k=ImageHeight(img)
UpdateGame
DrawToImage img
ClsColor cbblack
Cls
PositionCamera x,y
PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2)
DrawGame
DrawToScreen
EndFunction
Luo:
newVihu.VIHUT= New(VIHUT)
newVihu\obj=CloneObject(vihu)
newVihu\hp=4.0
Return
tutka:
For vas.VIHUT = Each VIHUT
If Distance2(vas\obj, sina) < 1000 Then
distanceX = ObjectX(vas\obj) - ObjectX(sina)
distanceY = ObjectY(vas\obj) - ObjectY(sina)
Color 255,0,0
Box TUTKA_X + TUTKA_KOKO / 2 + distanceX * 0.1, TUTKA_Y + TUTKA_KOKO / 2 + distanceY * -0.1, 2, 2
EndIf
Next vas
Return
tarkista:
Nykyinen_maara = 0
For vihumää.VIHUT = Each VIHUT
Nykyinen_maara + 1
Next vihumää
If Nykyinen_maara < Maksimi Then Gosub luo
Return
Anteeksi jos se rikkoo tekiänoikeuksia. Teen uuden itse jos se loukkaa tekiänoikeutta