Комментарии 46
Караваны! Это первое, что необходимо реализовать!
А вообще шикарно, как вспомню в 16 лет делали 2D пародии на Солдата и пр… Делфи, процедуры… Ужс.
Спасибо, интересно было)
А вообще шикарно, как вспомню в 16 лет делали 2D пародии на Солдата и пр… Делфи, процедуры… Ужс.
Спасибо, интересно было)
+7
если будет востребовано сообществом
Очень востребовано!
Спасибо за доходчивые описания!
+2
Туториал добротный! Правда вместо pyпgame часто выбирают love2d, но принципы примерно одни и те же.
Есть какие-нибудь законченные игры?
Есть какие-нибудь законченные игры?
+1
Попробуйте сделать это все без сторонней библиотеки. Это не очень сложно, но удовольствие будет намного больше.
И выкладывать код на «айфолдер.файлообменник.рф» — это, конечно…
И выкладывать код на «айфолдер.файлообменник.рф» — это, конечно…
+8
Запретите менять направление движения, находясь в воздухе. А то очень непривычно смотрится :)
p.s. Не корректно выразился. Не давать мгновенно гасить импульс, находясь в воздухе. На последнем «ролике» многократно происходит.
p.s. Не корректно выразился. Не давать мгновенно гасить импульс, находясь в воздухе. На последнем «ролике» многократно происходит.
0
Так это фишка аля Super Meat Boy, где нужна реакция ого-го!
+1
Я не играл) Там так же можно: резко гасить импульс и падать отвесно вниз?
0
Там всё же горизонтальная скорость не тернарна как в данном примере (влево с константной скоростью, вправо с константной скоростью или на месте, в зависимости от нажатия кнопок влево-вправо). Но там очень отзывчивое управление с большим горизонтальным ускорением, возникающим при нажатии влево-вправо. То есть опытный игрок может действительно добиваться схожего эффекта, тормозя в воздухе и сбрасывая импульс до нуля. В общем, как бы невнятно я ни объяснил, поиграйте — это определённо один из лучших и хардкоррных платформеров за последние N лет =)
0
Спасибо, самое то для не сведующих. Только пару замечаний, если позволите. Готовому коду будет намного уютнее на github, чем в файлообменнике. И еще — не могу запустить ваш пример — как понимаю вы не приложили pygame? Просто если обучалка для совсем новичков (как я, да) — это может быть нетривиальной проблемой.
+5
Туториал очень хороший, в свое время интересовался pygame, pyglet и прочими фреймворками для разработки игр на Python.
Не понял, правда, зачем вам такой странный импорт:
Подозреваю, что вам больше подойдет
Еще хотелось бы отметить, что зачастую основной цикл приложения делают подобным образом:
Кстати, сейчас зашел на pygame.org и увидел стандартную заглушку. Кто-нибудь знает что случилось с проектом?
И да, продолжайте, пожалуйста, очень интересна генерация уровней.
Не понял, правда, зачем вам такой странный импорт:
import pygame
from pygame import *
Подозреваю, что вам больше подойдет
from pygame.locals import *
Еще хотелось бы отметить, что зачастую основной цикл приложения делают подобным образом:
running = True
while running:
for e in pygame.event.get():
if e.type == QUIT:
running = False
Кстати, сейчас зашел на pygame.org и увидел стандартную заглушку. Кто-нибудь знает что случилось с проектом?
И да, продолжайте, пожалуйста, очень интересна генерация уровней.
+3
А как в плане производительности? Можно ли на Питоне написать сложную игру с богатой графикой и что бы 60 fps? :) В чью пользу будет сравнение с Unity?
+1
Боюсь, что в пользу Unity. В первую очередь потому что Unity создана для того, чтобы быстро делать игры с хорошей графикой и другими полезными плюшками. А учитывая, что совсем скоро выйдет Unity 4.3, нативно поддерживающий 2D(я имею в виду из-под коробки, а не плагинами), то клепание 2D игрушек станет чуть ли не «мышкопрограммированием».
+3
На нынче очень популярном питоне написан, к примеру, world of tanks. Да и все остальные «большие» игры Варгейминга пишутся и будут писаться на нем, пока будет использоваться движок bigworld. (Понятное дело, речь идет о игровой логике клиента и сервера, что, по сути и есть сама игра)
+1
Introduction to PyGame — Richard Jones (тот, который создал pyweek.org) рассказывает и показывает как разрабатывать на pygame. Заодно как работать с тайлами.
Ещё интересующимся разработкой игр на питоне стоит сходить на pyweek.org, посмотреть игры, сделанные на интересующих их фреймворках, почитать исходники. Встречается немало интересного.
Ещё интересующимся разработкой игр на питоне стоит сходить на pyweek.org, посмотреть игры, сделанные на интересующих их фреймворках, почитать исходники. Встречается немало интересного.
+2
Я не смог запустить вашу игру:
Кажется, не хватает картинок. Или я что-то не так делаю?
pygame.error: Couldn't open mario/r1.png
Кажется, не хватает картинок. Или я что-то не так делаю?
0
Интересный фреймворк. Пробовал на нем писать игрульки, да только потом забросил :(
0
Хороший пост.
Сам недавно писал пару игрулек на pygame.
Прекрасная библиотека, позволяет буквально за пару часов набросать прототип, достоинства кодинга на питоне играют тут очень большую роль.
Вот буквально недавно что-то похожее делал: dg-pic.tk/tyqim
Сам недавно писал пару игрулек на pygame.
Прекрасная библиотека, позволяет буквально за пару часов набросать прототип, достоинства кодинга на питоне играют тут очень большую роль.
Вот буквально недавно что-то похожее делал: dg-pic.tk/tyqim
+1
Отличный пост. Спасибо. Прям захотелось попробовать самому. Жду продолжения.
З.Ы. Код на гитхабе с багом (бэктрэйс ниже). Видимо, забыли подключить модуль os в player.py.
$ python platformerhabrahabr.py
Traceback (most recent call last):
File «platformerhabrahabr.py», line 7, in from player import *
File «SuperMarioBoy/player.py», line 14, in ICON_DIR = os.path.dirname(__file__) # Полный путь к каталогу с файлами
NameError: name 'os' is not defined
З.Ы. Код на гитхабе с багом (бэктрэйс ниже). Видимо, забыли подключить модуль os в player.py.
$ python platformerhabrahabr.py
Traceback (most recent call last):
File «platformerhabrahabr.py», line 7, in from player import *
File «SuperMarioBoy/player.py», line 14, in ICON_DIR = os.path.dirname(__file__) # Полный путь к каталогу с файлами
NameError: name 'os' is not defined
+1
а где вы брали картинки?
0
Когда будет вторая часть — не терпиться попробовать погенерить уровней ))
Заранее спасибо.
Заранее спасибо.
+2
Пожалуйста) habrahabr.ru/post/196432/
0
У меня Microsoft Windows [Version 6.1.7601]
Установил по ссылке python-3.3.0.msi и pygame-1.9.2a0.win32-py3.3.msi с дефолтными настройками.
Первый листинг сохранил в файле list.py
Запускаю файл list.py:
c:\Python33>list.py
File «C:\Python33\list.py», line 25
raise SystemExit, «QUIT»
^
SyntaxError: invalid syntax
c:\Python33>
Что я делаю не так? Это ведь
Установил по ссылке python-3.3.0.msi и pygame-1.9.2a0.win32-py3.3.msi с дефолтными настройками.
Первый листинг сохранил в файле list.py
Запускаю файл list.py:
c:\Python33>list.py
File «C:\Python33\list.py», line 25
raise SystemExit, «QUIT»
^
SyntaxError: invalid syntax
c:\Python33>
Что я делаю не так? Это ведь
написано длясамых маленькихначинающих.
0
---
0
Удивительно, столько комментариев — и никто не попробовал повторить путь автора. На каждом шагу — засада.
Вот первый листинг мне удалось запустить(после танцев с версией).
Второй листинг(где накладываются блоки на фон) — не совсем было понятно куда именно вставлять. Методом проб, ошибок, гугления — нашёл.
Третий листинг(где создаётся класс игрока) — не работает. Потому что автор ни слова не сказал о том, как его подключать в основной файл. Я это понял только потому, что подсматриваю в рабочий исходник с гитхаба, но во втором листинге он мне не помог, так как сильно отличается от того, что пишет автор.
Может я не прав и мне надо идти гуглить, курить маны/факи/хелпы…
Но ведь ориентация «для начинающих».
Автор, огромное тебе спасибо и респект за труд, но будь добр, повтори путь с нуля по своей статье. В данный момент — это невозможно.
Вот первый листинг мне удалось запустить(после танцев с версией).
Второй листинг(где накладываются блоки на фон) — не совсем было понятно куда именно вставлять. Методом проб, ошибок, гугления — нашёл.
Третий листинг(где создаётся класс игрока) — не работает. Потому что автор ни слова не сказал о том, как его подключать в основной файл. Я это понял только потому, что подсматриваю в рабочий исходник с гитхаба, но во втором листинге он мне не помог, так как сильно отличается от того, что пишет автор.
Может я не прав и мне надо идти гуглить, курить маны/факи/хелпы…
Но ведь ориентация «для начинающих».
Автор, огромное тебе спасибо и респект за труд, но будь добр, повтори путь с нуля по своей статье. В данный момент — это невозможно.
-1
Уважаемый, расскажу как писал статью: вносил изменение в исходный файл, проверял его и потом копировал в статью. Так что ваши претензии не обоснованы
0
В этом всё и дело. Я решил попробовать python именно на Вашей статье. Если Ваши листинги копировать из статьи в файл проекта — от они не работают. Я, как программист(php) — разобрался. Не знаю, как с новичками, но:
1. Оказывается, количество табов(точнее позиционирование) перед операторами определяет их отношение к структуре программы. Я впервые с этим столкнулся в этом языке. В статье ни слова об этом.
2. Исходя из этого, часть УРОВЕНЬ, а точнее листинг
Должно ведь быть так:
1. Оказывается, количество табов(точнее позиционирование) перед операторами определяет их отношение к структуре программы. Я впервые с этим столкнулся в этом языке. В статье ни слова об этом.
2. Исходя из этого, часть УРОВЕНЬ, а точнее листинг
x=y=0 # координаты
for row in level: # вся строка
for col in row: # каждый символ
ошибочен.Должно ведь быть так:
x=y=0 # координаты
for row in level: # вся строка
for col in row: # каждый символ
3. Всё хорошо до тех пор, пока мы не начинаем проверять столкновение героя с препятствиями. У меня дико всё тормозит, даже таймер задержки отключил. Глянул в скачанный исходник — оказывается именно этот цикл надо вынести наружу. В статье я этого не увидел.0
Туда-же:
import os
В статье — ни слова. Это надо подключать в обоих дополнительных файлах(blocks.py и player.py). Я так понял для того, чтобы можно было подключать картинки. Ну и пути прописываются по другому. Вместоself.image = image.load("blocks/platform.png")
надо self.image = image.load("%s/blocks/platform.png" % ICON_DIR)
и в константы добавить ICON_DIR = os.path.dirname(__file__) # Полный путь к каталогу с файлами
Этого нет в статье.0
Но согласитесь, начать писать игру на языке, на котором даже Hello world не написали, немного страновато, ведь в статья называется «Пишем платформер на Python, используя pygame» а не «Изучаем Python».
На счет первого листинга, да, Вы правы, тут ошибка в табах.
На счет второго: тот вариант, который описан в статье, имеет право на существование равно тому, что в исходниках на github'e, просто в исходниках вариант кода, который запустится из командной строки.
Если еще будут вопросы — пишите в личку, чем смогу — помогу )
На счет первого листинга, да, Вы правы, тут ошибка в табах.
На счет второго: тот вариант, который описан в статье, имеет право на существование равно тому, что в исходниках на github'e, просто в исходниках вариант кода, который запустится из командной строки.
Если еще будут вопросы — пишите в личку, чем смогу — помогу )
0
у меня все получилось…
+1
Данная статья подтолкнула меня к написанию двух симуляторов — солнечной системы и полета управляемой ракеты в ней.
Так что путь автора повторить можно :-)
Так что путь автора повторить можно :-)
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем платформер на Python, используя pygame