From: cb AT ia DOT com (Marc Brooker) Newsgroups: comp.os.msdos.djgpp Subject: Movement Revisited Date: Thu, 08 Oct 1998 13:55:10 GMT Organization: UUNET Internet Africa Lines: 39 Message-ID: <361cc01b.1648816@ct-news.iafrica.com> NNTP-Posting-Host: 196-30-240-91.iafrica.com X-Newsreader: Forte Free Agent 1.11/32.235 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hello All, Firstly, thanks for the help of all those who posted replys to my message about tank movement. At about three o' clock yesterday i came up with a much better solution to that problem and thought some of you might be interested, here is the entire function, note no trig functions needed. Pity about wasting speed with doubles but it is the best way to do it. void move_objects(void) { int i; double dx,dy; double x, y; for (i = 0; i < player.usedobj; i++) { if ((objects[i].x) && (objects[i].flags & MOVING)) { dx = objects[i].targetx - objects[i].x; dy = objects[i].targety - objects[i].y; if (dx == 0) dx++; if (dy == 0) dy++; x = dx / (fabs(dx) + fabs(dy)) * 5; y = dy / (fabs(dx) + fabs(dy)) * 5; objects[i].x += x; objects[i].y += y; } } } Note this function wont work on it's own, an array of the proper object structures is needed. It can easily be converted to just about any other game type. Thanks for your time and your modem's. Marc "Mud Rat" Brooker quazar[at]freemail.co.za Quazar Free Software Group