Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail From: fir Newsgroups: comp.lang.c Subject: Re: logically weird loop Date: Thu, 21 Nov 2024 12:12:56 +0100 Organization: i2pn2 (i2pn.org) Message-ID: <9c3cf5cf0a38a15c6eb2a3d6086658b9dfa4774d@i2pn2.org> References: <0e1c6d2e74d44a715bf7625ca2df022d169f878a@i2pn2.org> <46766e2699a76a0336d5d49c442a2b2de2964070@i2pn2.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Thu, 21 Nov 2024 11:13:00 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="3479647"; mail-complaints-to="usenet@i2pn2.org"; posting-account="+ydHcGjgSeBt3Wz3WTfKefUptpAWaXduqfw5xdfsuS0"; User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.19 In-Reply-To: <46766e2699a76a0336d5d49c442a2b2de2964070@i2pn2.org> X-Spam-Checker-Version: SpamAssassin 4.0.0 Bytes: 3039 Lines: 62 fir pisze: > fir pisze: >> void ProcessMicroturnsUntilHuman() >>    { >>       if( game_time < character[HUM].action_end) >>       { >>        while(game_time < character[HUM].action_end) >>        { >>            DispatchActions(); >>             game_time++; >>        } >>        if(game_time == character[HUM].action_end)     //** >>           DispatchActions(); >>       } >> >>    } > > so the loop code in simplification look like > >      if( game_time < 300) //this is only to not alllow re-enter the > loop if you reach turn 300 >      { >       while(game_time < 300) //game time starts form 0 >       { >           DispatchActions(); >            game_time++; >       } >          DispatchActions();  //this runs for turn 300 >      } > > im not sure if there is no bug here as when i press space and 300 > turns into 600 then the dispatch on turn 300 would be executed > second time (?) (though in present state of things it wouldnt spoil > probably the things as dispatch if called on turn 300 starters would > change the values and they woil not fiore twice > after considering that bug it seem that the game_time should always be increased after this dispatch to disallow making this dispatch twice co i could maybe just while(game_time <= character[HUM].action_end) { DispatchActions(); game_time++; } and on key handler void ProcessKeyDown(int key) { if(game_time>character[HUM].action_end ) { if(key==VK_LEFT) AddAction(HUM, 'movl', rand2(300,300)); } } this roughly seem to work so probbaly this is simply more proper though i must rethink it yet > but it all show trubles in what should be 'simple' loop