Как стать автором
Обновить

Комментарии 15

Говорите не программист? Вполне себе сносно спроектировали дизайн. Я смотрел сорцы оригинального дудлера на JS. Так вот Ваш код изящнее и чище можете собой гордиться. Чем же вы зарабатываете, если не этим?
Спасибо. Но я инженер в телекоме, занимаюсь сетями.
И активным сетевым оборудованием.
Примерно подобная реакция и у меня была. Почаще бы такие «не программисты» работали в сфере софт-девелопмента
>>нагрузка процессора при этом стремится к 50-70%
помоему это в любой игре будет так — отрисовка ведь постоянная
Попалось место где не допрыгнуть :(
Добавил в ToDo. В данный момент примитивнейший алгоритм рандомом распологает платформы. Бывает некоторые липнут к стене даже, хотя должны двигаться например.
Да, жрёт круто. Это в коде что-то не так, python тут ни при чём.
Измерьте, сколько FPS (кадров в секунду отрисовывается). Если очень много (больше 100, к примеру), то может стоит ограничить. Или если мало FPS, то наверняка не используется двойная буферизация и т.п.
fps выставляется в коде методом clock()
Да, скорее всего бред — использовать интерпретируемый язык для написания игр.

Ничуть.
Попробовал отпрофилировать — большая часть времени работает метод {method 'blit' of 'pygame.Surface' objects} — т.е. отрисовка внутри PyGame.

>>> p.sort_stats('cumulative').print_stats(10)
Wed Oct 19 14:34:27 2011    profile.txt

         253095 function calls (252783 primitive calls) in 35.892 CPU seconds

   Ordered by: cumulative time
   List reduced from 753 to 10 due to restriction <10>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.001    0.001   35.893   35.893 main.py:4(<module>)
        1    0.050    0.050   35.811   35.811 main.py:32(main)
    22623   30.889    0.001   30.889    0.001 {method 'blit' of 'pygame.Surface' objects}
     1797    0.202    0.000   28.373    0.016 locations.py:88(draw)
      214    0.004    0.000    3.343    0.016 locations.py:37(draw)
     2011    3.334    0.002    3.334    0.002 {pygame.display.flip}
     2011    0.310    0.000    0.310    0.000 {method 'tick' of 'Clock' objects}
        1    0.000    0.000    0.258    0.258 main.py:16(__init__)
     1796    0.021    0.000    0.231    0.000 sprites.py:68(setX)
        1    0.063    0.063    0.206    0.206 {pygame.display.set_mode}


Так что самый простой способ — снизить FPS (при этом подкорректировав скорость по Y и гравитацию). При 25 FPS, гравитации 1.3 и вертикальной скорости 35 выглядит приемлемо, а процессора жрет заметно меньше (хотя все еще прилично).
Учту в следующих коммитах. Спасибо.
Надеюсь напишете тут статью когда закончите?!
И еще бы добавить возможность управления стрелками. Курсор частенько вылетает за рамки окна… и инопланетянин перестаёт двигаться тогда… а в опасный момент это и подвести может.
По-моему это великолепно. Именно такими людьми совершаются инновации на сцене видеоигр (т.к. мастодонты не любят рисковать). Ну а известную игру выбрать для начала — это правильно, т.к. есть рабочий образец и есть на что ориентироваться. Пожелаю успехов на этом поприще и жду новых игр!
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.