Хороший таймер для Windows Form Game - PullRequest
0 голосов
/ 02 мая 2018

Несколько дней назад я начал заниматься внебрачной работой. Я хотел создать игру, в которой вы должны избегать случайных объектов. Хорошо, у меня есть все рабочие игры, но мой метод

private void Game_form_Paint(object sender, PaintEventArgs e)
{

    for ( int i =0; i < Bonus.Count; ++i) // Bonus - private list ( not more than 5)
    {
        e.Graphics.DrawImage(bonus, Bonus[i].Object_Pos);
    }
    for(int i = 0; i < Objects.Count; ++i) // Objects - private list ( not more than 10)
    {
        e.Graphics.DrawImage(Kunai, Objects[i].Object_Pos);
    }
    e.Graphics.DrawImage(Main, player.Player_Pos); // Player ( only one )
}

и у меня есть таймер:

private void Drawing_Tick(object sender, EventArgs e)  
{
    Bonus_move(); // method for changing objects position in Bonus list 
    Player_move(); // method for changing player position
    Objects_move();  // method for changing objects position in Objects list
    Thread.Sleep(5);
    Invalidate();
    Thread.Sleep(5);    
}

За 1 шаг я должен изменить положение на 7 px, когда я изменяю на 1 px - я думаю, у моего приложения хорошая частота кадров (на первый взгляд) Прямо сейчас таймер имеет интервал 11 мс и два Thread.Sleep (5) для хорошей частоты кадров, но у меня может быть от 15 до 30 кадров в секунду, когда я хочу по крайней мере статические 30 + кадров в секунду. Не могли бы вы порекомендовать мне что-то изменить? Конечно, я понимаю, что мой код может быть плохим или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...