History

"harder ai"

mischief committed 11 years ago

Commit 0bcfeff1 parent 357e4951 file · +21 −5Browse files

Unified · Split

hack9.c+21−5
@@ -108,6 +108,7 @@ move(Point src, int dir) · 107 unmodified lines
108108
109109 switch(dir){
110110 default:
111+ fprint(2, "unknown move %d\n", dir);
111112 case DUMMY:
112113 return ZP;
113114 break;
@@ -202,7 +203,15 @@ movemons(void) · 88 unmodified lines
202203 double ang = atan2(p2.y, p2.x);
203204 movdir = (int)(4 * ang / (2*PI) + 4.5) % 4;
204205 /* no pos to update. */
205− move(p, movdir+1);
206+ if(eqpt(move(p, movdir+1), ZP)){
207+ /* try again? */
208+ movdir = (movdir+1) % 4;
209+ if(eqpt(move(p, movdir+1), ZP)){
210+ /* try again? */
211+ movdir = (movdir+2) % 4;
212+ move(p, movdir+1);
213+ }
214+ }
206215 }
207216 }
208217 }
@@ -279,7 +288,7 @@ threadmain(int argc, char *argv[]) · 70 unmodified lines
279288 flushimage(display, 1);
280289 break;
281290 case AKEYBOARD:
282− movdir = 0;
291+ movdir = DUMMY;
283292 switch(c){
284293 case Kdel:
285294 threadexitsall(nil);
@@ -309,15 +318,22 @@ threadmain(int argc, char *argv[]) · 23 unmodified lines
309318 case '.':
310319 movdir = DUMMY;
311320 break;
321+ default:
322+ /* don't waste a move */
323+ continue;
312324 }
313325
314− p=move(pos, movdir);
315− if(!eqpt(p, ZP)){
326+ if(movdir != DUMMY){
327+ p=move(pos, movdir);
328+ if(eqpt(p, ZP)){
329+ break;
330+ }
331+
316332 pos = subpt(pos, p);
317333 }
318334
319335 static int turns=0;
320− if(++turns % 5 ==0){
336+ if(++turns % 3 ==0){
321337 movemons();
322338 }
323339