This is the first demo that I'm actually proud of. I know it can be optimized much better with arrays and such. I did the math but I don't really understand it. Sorry if this post is trivial.
// --------------------------------- //
// Project: Ammo Types
// Start: Tuesday, October 28, 2008
// IDE Version: 5.360
GLOBAL LocBulletY
GLOBAL ScreenX, ScreenY
GLOBAL fontX, fontY, bullSizeX, bullSizeY
ScreenX=640
ScreenY=480
//Bullets starting point
LocBulletY=(ScreenY/2)
SETSCREEN ScreenX, ScreenY, 0
LIMITFPS 60
SETTRANSPARENCY RGB(199, 200, 255)
LOADFONT "FirstFont.png", 1
SETFONT 1
GETFONTSIZE fontX, fontY
//Put string in variable and get its length
Message1$ = "Left/Right Control moves bullets"
wordLen1=LEN(Message1$)
Message2$ = "Space temporarily lowers bounce"
wordLen2=LEN(Message2$)
LOADSPRITE "Bullet.bmp", 1
GETSPRITESIZE 1, bullSizeX, bullSizeY
//While Escape key is not pressed
WHILE KEY(01) = FALSE
PRINT Message1$, (ScreenX/2)-(fontX*wordLen1)/2, 100
PRINT Message2$, (ScreenX/2)-(fontX*wordLen2)/2, (100+fontY)
bulletBounce()
SHOWSCREEN
WEND
END
FUNCTION bulletBounce:
GLOBAL bulletDir = 1
GLOBAL bounceLimit
//Move bullet
INC LocBulletY,bulletDir
bounceLimit=TRUE
//Set limit ball can bounce
IF bulletDir>20
bounceLimit=FALSE
//Space key lowers bounce
IF KEY(57)
bulletDir=bulletDir-5
ENDIF
ENDIF
//Make bullet bounce
IF bounceLimit
bulletDir=bulletDir+.5
ENDIF
//If bullet goes past top or bottom, reverse
IF LocBulletY>ScreenY
bulletDir = bulletDir*-1
ELSEIF LocBulletY<0
bulletDir = bulletDir*-1
ENDIF
LOCAL bulletStart=20 //Starting position of bullets
GLOBAL bulletSpace=0 //Spacing increment
FOR x = 20 TO 200 STEP bulletStart //Draw several bullets
//Initialize bullet\
DRAWSPRITE 1, (ScreenX/2-(bullSizeX/2)*bulletStart)+(x+bulletSpace), LocBulletY
//Left and Right Control moves all bullets
//Beyond that, don't ask
IF KEY(157)
IF bulletSpace<(ScreenX/2-(bullSizeX)*bulletStart)+(bullSizeX/2*bulletStart/2)
bulletSpace=bulletSpace+1
ENDIF
ELSEIF KEY(29)
IF bulletSpace>-(ScreenX/2-(bullSizeX/2)*bulletStart/2)+(bullSizeX/2*bulletStart/2)
bulletSpace=bulletSpace-1
ENDIF
ENDIF
NEXT
ENDFUNCTION
[attachment deleted by admin]