'=========================================================================== ' Subject: BOUNCING MADNESS Date: 05-15-99 (13:43) ' Author: Jernej Simoncic Code: QB, PDS ' Origin: jernej.simoncic@guest.arnes.si Packet: DIRECTQB.ABC '=========================================================================== ' ' Bouncing madness (thanks to Angelo for thinking of name;) ' ' A very simple effect made with DirectQB. It looks like the one in WinAmp's ' about box. ' ' Notes: Shown image size should be at least 170x105, or it won't look good. ' This program uses TEXTURE1.PCX, from DQb texture mapping example. ' ' Programmed by Jernej Simoncic, jernej.simoncic@guest.arnes.si ' ICQ#: 26266467 ' http://www2.arnes.si/~sopjsimo ' ' Required DQb modules: draw, sprite, image, palette ' '$INCLUDE: 'directqb.bi' DIM Pal AS STRING * 768 DIM Pic(2050) AS INTEGER, Scn(32001) AS INTEGER xSize% = 180 'sprite resolution ySize% = 110 a% = DQBinit(1, 0) IF a% THEN PRINT DQBerror$ DQBclose END END IF SCREEN 13 IF DQBloadLayer(1, "texture1.pcx", Pal) THEN SCREEN 0 PRINT DQBerror$ DQBclose END END IF DQBget 1, 0, 0, 63, 63, VARSEG(Pic(0)), VARPTR(Pic(0)) DQBclearLayer 1 DQBsetPal Pal RANDOMIZE TIMER x% = INT(RND * (300 - xSize%)) + 10 'startup sprite position y% = INT(RND * (180 - ySize%)) + 10 xx% = INT(RND * 20) - 10 'movement direction yy% = INT(RND * 20) - 10 DQBsetSolidPut 'solid put must be used DO DQBget 1, 6, 6, 313, 193, VARSEG(Scn(0)), VARPTR(Scn(0)) 'get current 'screen and DQBsPut 1, 0, 0, VARSEG(Scn(0)), VARPTR(Scn(0)), 320, 200 'enlarge it 'DQbSput is used, since the texture1.pcx isn't big enough. DQBsPut 1, x%, y%, VARSEG(Pic(0)), VARPTR(Pic(0)), xSize%, ySize% 'Normally you should use this: 'DQBput 1, x%, y%, VARSEG(Pic(0)), VARPTR(Pic(0)) DQBwait 1 DQBcopyLayer 1, 0 x% = x% + xx% y% = y% + yy% IF INT(RND * 10) = 0 THEN xx% = INT(RND * 20) - 10 'randomly change IF INT(RND * 10) = 0 THEN yy% = INT(RND * 20) - 10 'movement direction IF x% >= 320 - xSize% THEN xx% = -ABS(xx%) IF x% <= 0 THEN xx% = ABS(xx%) IF y% >= 200 - ySize% THEN yy% = -ABS(yy%) IF y% <= 0 THEN yy% = ABS(yy%) LOOP WHILE INKEY$ = "" DQBclose END