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!
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ä.
Kiitos,sain toimimaan. Miten en huomaa itse noin itsestään selvää vikaa. No pääsen jatkamaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.