typedef struct { char *bitmap; char *background; int x; int y; int xsize; int ysize; int xspeed; int yspeed; } BITMAP; void bdraw(BITMAP *b) { int y=b->y, x=b->x, yy, xx; /* Eli loopataan koko suorakulman kokoinen alue. bitmap- ja ja background -puskureissahan lasketaan sijainti seuraavasti: y * b->xsize + x. */ for(yy=0; yyysize; yy++) { for(xx=0; xxxsize; xx++) { /* eli v„rill„ 0 t„m„ vertailu alla ei ole tosi, joten v„rill„ 0 merkittyj„ kohtia EI piirret„! */ if(b->bitmap[yy*b->xsize+xx]) { /* doublebuffer muuttuja osoittaa kaksoispuskuriin. Huomaa, ett„ yl„kulma on y*320+x, mutta koska haluamme viel„ piirt„„ useita rivej„, lis„„mme yy-looppimme y-arvoon, kutenn my”s xx-looppi x-arvoon. Jos et ymm„rt„nyt niin poista v„liaikaisesti kohdat ja n„et mit„ tapahtuu */ b->background[yy*b->xsize+xx]= doublebuffer[ (y+yy) * 320 + (x+xx) ]; /* sitten vain asetetaan bittikartasta oikea kohta ruudulle, alle peittyv„ osa on jo tallessa puskurin background vastaa- valla kohdalla. */ doublebuffer[ (y+yy) * 320 + (x+xx) ]= b->bitmap[yy*b->xsize+xx]; } } } } void bm>round v=n vain asetetaan bittikart2P*b->xs„hdalla. */ aanorta )m a ) ine; )m a )orpi:n var brvrEomA tyryy ine; )m a )n u ruapsea );r=n vara )n u r„ tdaipaar yuk /rxs„hdalla sl,a(b->lnix) ]tf aa,sl-o(lebuffer muuttuja osoittaa kaksoispuskuriin. Huomaa, ett„ yl„kulma rlain. Hs pbrEomA tyryyt0]„hateelxe int xsiHly*b = aklmrcrxxx„hat„x intmu, ett„ apsrtf