xamarin - Delay a single method for snake game c# -
i using swingame develop snake game. method moveforward handles movement of snake. problem have unable delay particular method snake moving @ constant slow speed.
here codes in main:
using system; using swingamesdk; using system.threading.tasks; namespace mygame { public class gamemain { public static void main () { //open game window swingame.opengraphicswindow ("gamemain", 800, 600); swingame.showswingamesplashscreen (); snake snake = new snake (); //run game loop while (false == swingame.windowcloserequested ()) { //fetch next batch of ui interaction swingame.processevents (); //clear screen , draw framerate swingame.clearscreen (color.white); swingame.drawframerate (0, 0); // has go after clearscreen , not before refreshscreen snake.draw (); task.delay (1000).continuewith (t => snake.moveforward ()); snake.handlesnakeinput (); //draw onto screen swingame.refreshscreen (60); } } } }
as can see codes, game runs on while loop. able delay method using "task.delay (1000).continuewith (t => snake.moveforward ());" on first loop. when debug, snake delays on first loop zoom pasts rest of loops.
how can implement code @ every loop method delayed snake can move @ constant speed?
thanks in advance.
you're creating delayed task on every iteration of loop. you're not delaying loop you're delaying execution of moveforward method, loop still runs @ maximum speed. causes after initial delay tasks executed @ same speed loop run. wait task complete use await
.
if want snake move @ interval why not use timer?
timer timer = new timer(1000); timer.autoreset = true; timer.elapsed += ( sender, e ) => snake.moveforward(); timer.start();
Comments
Post a Comment