Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: muu kieli: BlitzBasic Ongelma

DumTom [21.11.2012 16:05:19]

#

Tossa alla Blitz3D syntaksia.

Järjen mukaan koodin pitäisi piirtää 11x15 kokoinen palikka-alue mutta neljälle ylimmälle riville ei tule kuin ensimmäinen pala.
Kuka hoksaa missä vika?

gmode=GfxModeExists(800,600,32)
If gmode<>1 Then
Print"Your graphicsadapter does NOT support"
Print"video mode 800x600 with 32 bit color depth."
Print"Press esc to exit."
While Not KeyHit(1)
Wend
End
End If

Graphics 800,600,16,1
VWait(50)
Global gfxLeft=LoadImage("gfx\hleft.png")
Global gfxRight=LoadImage("gfx\hright.png")
Global gfxUp=LoadImage("gfx\huppalkki.png")
Global gfxPanel=LoadImage("gfx\panel.png")
Global gfxBack=LoadImage("gfx\back.png")
Global gfxMaila64=LoadImage("gfx\maila64.png")
Global gfxBall=LoadImage("gfx\ball.png")
Global gfxBrick=LoadImage("gfx\bricks.png")
Global gfxFont=LoadAnimImage("gfx\fonts.png",20,24,0,47)


MaskImage gfxBall,0,66,0



Dim MCOS#(360)
Dim MSIN#(360)


SeedRnd MilliSecs()



Dim BrickOn%(11,15)
Dim BrickType%(11,15)
Dim BrickLx%(11,15)
Dim BrickLy%(11,15)

SetBuffer BackBuffer()

AlustaAlue()
While KeyHit(1)=0
Draw()
DrawBricks()
Flip
Wend

FreeGfx()
End
Function FreeGfx()
FreeImage(gfxLeft)
FreeImage(gfxRight)
FreeImage(gfxUp)
FreeImage(gfxPanel)
FreeImage(gfxBack)
FreeImage(gfxMaila64)
FreeImage(gfxBall)
FreeImage(gfxBrick)
End Function

Function AlustaAlue()
gy%=34
gx%=232
For y%=0 To 14
gx=232
  For x%=0 To 10
  BrickLx(y,x)=gx
  BrickLy(y,x)=gy
  BrickType(y,x)=3
  BrickOn(y,x)=1
  gx=gx+48
  Next
gy=gy+26
Next
End Function

Function DrawBricks()
For y%=0 To 14
  For x%=0 To 10
  If BrickOn(y,x)=1 Then DrawImageRect (gfxBrick,BrickLx(y,x),BrickLy(y,x),BrickType(y,x)*46,0,45,23)
  Next
Next
End Function

Function Draw()

DrawBlock gfxPanel,0,0
DrawBlockRect gfxLeft,192,0,leftflash*32,0,32,600
DrawBlockRect gfxUp,224,0,0,upflash*32,544,32
DrawBlockRect gfxRight,768,0,rightflash*32,0,32,600
DrawBlock gfxBack,224,32

flashspeed=flashspeed+1
If (flashspeed>14) Then


leftflash=leftflash+1
If leftflash=2 Or leftflash>3 Then leftflash=0

rightflash=rightflash+1
If rightflash=2 Or rightflash>3 Then rightflash=0

upflash=upflash+1
If upflash=2 Or upflash>3 Then upflash=0

flashspeed=0

End If
End Function

Mod. korjasi kooditagit!

Metabolix [21.11.2012 21:47:15]

#

Ainakin taulukkosi ulottuvuudet ovat väärin: taulukon määrittelyssä lukee (11, 15), kuitenkin kaikki silmukat menevät kohtaan (14, 10) eivätkä (10, 14). Ei vaikuta myöskään kovin fiksulta laskea arvoja BrickLx ja BrickLy taulukoihin noin, kun ne voisi aivan hyvin (ja olisi loogisempaa ja nopeampaakin) laskea aina piirtovaiheessa eli DrawImageRect-rivillä.

DumTom [22.11.2012 00:10:26]

#

Kiitos,sain toimimaan. Miten en huomaa itse noin itsestään selvää vikaa. No pääsen jatkamaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta