1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#include "xev.h"
#include "enemy.h"
PRIVATE Pixmap pixmap,pixmap_mask;
PRIVATE GC gc;
PRIVATE char *fn = "spflag.img";
void SPFlagSetChar()
{
char img[CSIZE*CSIZE] , mask[128];
int x,y;
XGCValues gcv;
gcv.graphics_exposures = False;
sprintf(tpath , "%s/%s",IMAGE_DIR,fn);
LoadChar(tpath,img , sizeof(img));
pixmap = XCreatePixmap(d,w,CSIZE,CSIZE,depth);
gc = XCreateGC(d,w,GCGraphicsExposures,&gcv);
bzero(mask , sizeof(mask));
DrawChar32(img , mask , gc,pixmap);
pixmap_mask
= XCreateBitmapFromData(d,w,mask,CSIZE,CSIZE);
XSetClipMask(d,gc,pixmap_mask);
}
void SPFlagFree()
{
XFreePixmap(d,pixmap);
XFreePixmap(d,pixmap_mask);
XFreeGC(d,gc);
}
int SPFlag(enemy_no)
int enemy_no;
{
int sx,sy;
sx = enemy_chijou[enemy_no].x.sht[UNION];
sy = enemy_chijou[enemy_no].y.sht[UNION];
enemy_chijou[enemy_no].y.dummy += enemy_chijou[enemy_no].vy;
if(enemy_chijou[enemy_no].tmp1) {
SetSprite(sx,sy,pixmap,gc,CSIZE,CSIZE);
if( (jx.sht[UNION] - sx) > -23 &&
(jx.sht[UNION] - sx) < 23 &&
(jy.sht[UNION] - sy) > -23 &&
(jy.sht[UNION] - sy) < 23) {
nokori++;
Score(nokori);
enemy_chijou[enemy_no].tmp1 = 0;
enemy_chijou[enemy_no].tmp2 = 1;
}
}
if(!enemy_chijou[enemy_no].tmp2 &&
(shot_chi.x.sht[UNION] - sx) > -10 &&
(shot_chi.x.sht[UNION] - sx) < 30 &&
(shot_chi.y.sht[UNION] - sy) > -10 &&
(shot_chi.y.sht[UNION] - sy) < 35 &&
shot_chi.z == 1) {
enemy_chijou[enemy_no].tmp1 = 1;
return 1;
}
return 0;
}
void SPFlagInit(enemy_no , x,char_no)
int enemy_no , x,char_no;
{
enemy_chijou[enemy_no].tmp1 = 0;
enemy_chijou[enemy_no].tmp2 = 0;
enemy_chijou[enemy_no].enemy_no = char_no;
enemy_chijou[enemy_no].x.dummy = (rand() % (15*CSIZE))*65536;
enemy_chijou[enemy_no].y.dummy = -32*65536 + (rand() % 20)*65536;
enemy_chijou[enemy_no].vx = 0;
enemy_chijou[enemy_no].vy = STPF*65536;
}
|