X-Git-Url: http://royale.zerezo.com/git/?p=zeRace;a=blobdiff_plain;f=bot_anticip.c;h=1d5ec2d684a4ab568dcc1f909cd7a7339ba1af2c;hp=22de8dde0e6a79a197172d9e994ab61a5e531c87;hb=HEAD;hpb=ee6ec6d95d78f74973a2ba97077cc94709bb6c61 diff --git a/bot_anticip.c b/bot_anticip.c index 22de8dd..1d5ec2d 100644 --- a/bot_anticip.c +++ b/bot_anticip.c @@ -19,8 +19,10 @@ char *bot_name() void bot_ia(char *trackname,struct _car *car,SDL_Surface *fun,int *ku,int *kd,int *kl,int *kr) { - int a1,a2,c,g,tg,og,l,x1,x2,x3,x4,y1,y2,y3,y4; + int a1,a2,l,x1,x2,x3,x4,y1,y2,y3,y4; float o,m,s; + Uint32 c; + Uint8 g,og,tg,t; /* adjust the properties depending of the track, this was "manually" optimized ;) */ if (strcmp(trackname,"car")==0) @@ -77,6 +79,69 @@ void bot_ia(char *trackname,struct _car *car,SDL_Surface *fun,int *ku,int *kd,in s=car->speed/3.3+0.4; og=1; } + else if (strcmp(trackname,"formula")==0) + { + a1=150; + a2=90; + o=0.8; + m=0.1; + s=car->speed/3.3+0.4; + og=120; + } + else if (strcmp(trackname,"wave")==0) + { + a1=150; + a2=130; + o=1.5; + m=0.1; + s=car->speed/3.3+0.4; + og=120; + } + else if (strcmp(trackname,"bio")==0) + { + a1=190; + a2=180; + o=0.3; + m=0.1; + s=car->speed/3.3+0.4; + og=120; + } + else if (strcmp(trackname,"city")==0) + { + a1=150; + a2=130; + o=1.2; + m=0.1; + s=car->speed/3.3+0.4; + og=120; + } + else if (strcmp(trackname,"desert")==0) + { + a1=150; + a2=130; + o=1.0; + m=0.1; + s=car->speed/3.3+0.4; + og=120; + } + else if (strcmp(trackname,"http")==0) + { + a1=190; + a2=170; + o=1.2; + m=0.3; + s=car->speed/3.4+0.4; + og=240; + } + else if (strcmp(trackname,"kart")==0) + { + a1=180; + a2=160; + o=0.8; + m=0.8; + s=car->speed/3.3+0.4; + og=120; + } /* some default values that may work on some tracks */ else { @@ -95,8 +160,8 @@ void bot_ia(char *trackname,struct _car *car,SDL_Surface *fun,int *ku,int *kd,in { x1=car->x-cos(car->angle)*l*s; y1=car->y-sin(car->angle)*l*s; - if (x1>0 && y1>0 && x1w && y1h) c=getpixel(fun,x1,y1); else c=0; - g=(c>>GSHIFT)&0xff; + if (x1>0 && y1>0 && x1w && y1h) c=getpixel(fun,x1,y1); else c=SDL_MapRGB(fun->format,0,0,0); + SDL_GetRGB(c,fun->format,&t,&g,&t); if (gspeed>m) { *ku=0,*kd=1; break; } } @@ -112,10 +177,10 @@ void bot_ia(char *trackname,struct _car *car,SDL_Surface *fun,int *ku,int *kd,in x4=car->x-cos(car->angle+o)*l*s; y4=car->y-sin(car->angle+o)*l*s; - if (x3>0 && y3>0 && x3w && y3h) c=getpixel(fun,x3,y3); else c=0; - tg=(c>>GSHIFT)&0xff; - if (x4>0 && y4>0 && x4w && y4h) c=getpixel(fun,x4,y4); else c=0; - g=(c>>GSHIFT)&0xff; + if (x3>0 && y3>0 && x3w && y3h) c=getpixel(fun,x3,y3); else c=SDL_MapRGB(fun->format,0,0,0); + SDL_GetRGB(c,fun->format,&t,&tg,&t); + if (x4>0 && y4>0 && x4w && y4h) c=getpixel(fun,x4,y4); else c=SDL_MapRGB(fun->format,0,0,0); + SDL_GetRGB(c,fun->format,&t,&g,&t); if (g>tg) { *kr=1; break; } else if (g