Code archives/Graphics/SinusBobs
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
1280 moving sinus-blitter-objects | |||||
; SinusBobs - demo with loads of moving sinus blitter objects (1280 to be exact :-) ; By Death@jdg.nu ; ; This is just a test i did because i was curious how many bobs ; blitz could throw around in full frame rate... ; The awesome C64-game ARMALYTE inspired me to do this ; (loads of sprites in the title screen) ; ; My Celeron @ 790 mhz + Geforce 256 can easily move around 1300 bobs in ; full framerate at 1280x1024x32. Im pretty impressed by Blitz actually! ; ; The code would probably be faster if a lookup-table was used for ; the sinus waves instead of calling Sin() & Cos() 1280 times/sec :-) ; ; The FPS counter was "borrowed" from the Blitz Code Archive ; ; Mouse Left/Right = Change number of blitter objects ; Mouse Up/down = Change spacing ; Esc to quit Global test,space Global framecounter_counter Global framecounter_time Global framecounter_framerate ; CHANGE RESOULTION HERE IF YOUR COMPUTER CAN'T KEEP UP Graphics 1280,1024,32,1 SetBuffer BackBuffer() ; CHANGE THIS TO POINT TO YOUR BLITZ CDROM, WE NEED SOME IMAGES!!! test = LoadAnimImage ("e:\Xtras\graphics\action1.bmp",34,34,0,180) ; main loop While Not KeyHit(1) degrees = degrees + 1 If degrees > 359 Then degrees = 0 antal=MouseX()+1 space=MouseY()+1 Cls Text (GraphicsWidth()/2)-64,GraphicsHeight()/2,"Drag the mouse!!" For x = 1 To antal DrawImage test,x_pos(degrees+(x*5))+128+x,y_pos(degrees+(x*5))+128+x,x/8 Next fps() Text 10,25,"Bobs : "+antal Text 10,40,"Spacing: "+space Flip Wend End Function x_pos(degrees) If degrees>359 Then degrees = degrees - 359 Return Cos(degrees)*space End Function Function y_pos(degrees) If degrees>359 Then degrees = degrees - 359 y=Sin(degrees)*space y=-y Return y End Function Function FPS() Framecounter_counter=Framecounter_counter+1 If Framecounter_time=0 Then Framecounter_time=MilliSecs() If Framecounter_time+1001 <MilliSecs() Then Framecounter_framerate=Framecounter_counter Framecounter_counter=0 Framecounter_time=MilliSecs() EndIf Text 10,10,"fps: "+Framecounter_framerate End Function |
Comments
| ||
The "action1.bmp" file was included with the old blitz basic. It contains a bunch of weapons, objects, and characters, so it's not required for the example above. Just use a single image, replace LoadAnimImage with LoadImage, and remove the "x/8" at the end of the DrawImage part. |
Code Archives Forum