Форум сайта python.su
Настольная игра “Пасьянс тысячелистник” (требует PyQt4):
http://forum.script-coding.info/viewtopic.php?id=2665
Скрипт рабочий, можно играть (распаковать, структуру каталогов не менять, запускать milfoil.py). Прошу всех, кому не лень, попробовать и отписаться здесь. Правила игры — во встроенной справке, в архиве. Скриншот:
Проблемы:
1. В момент начала игры я очищаю QGraphicsScene методом clear(). Похоже, что этого мало, т.к. иногда новая игра прорисовывается не совсем хорошо: левый верхний угол сцены оказывается не в левом верхнем углу её QGraphicsView (лечится изменением размеров окна на любую маленькую величину — просто дёрнуть мышкой за край). Эффект возникает (иногда) при переходе от игры 36 на игру 48 (или наоборот — сейчас не помню, воспроизводится не всегда). Такое впечатление, что нужно как-то уменьшить размеры сцены до нуля или сделать ей что-то наподобие “trim”, но не знаю, как.
2. Под Linux упорно не вызывается событие mouseDoubleClickEvent() в классе Element (наследник QtGui.QGraphicsPixmapItem), т.е. не обрабатывается двойной щелчок. Под Windows всё хорошо :/.
Отредактировано (Янв. 30, 2009 23:43:44)
Офлайн
У меня в SUSE 10.3, Python 2.5 , zip/unzip - установлена.
Выдает: bash: ./milfoil.py: /usr/bin/python^M: плохой интерпретатор: Нет такого файла или каталога.
Как это вылечить? (Подозреваю - окончания строк). :/
Офлайн
Интересно, у меня нормально под Linux запускается, а переводы строк действительно виндовые :).
Можно попробовать вот это.
Отредактировано (Янв. 10, 2009 20:43:20)
Офлайн
Ну или просто положу исходник сюда.
Позже: убрал, чтобы ветка не была столь массивной.
Отредактировано (Янв. 30, 2009 23:45:11)
Офлайн
Вообще-то интерпретатор питона обычно указывают так
#!/usr/bin/env python
Офлайн
The gray Cardinal
Сначала вообще не запускалась, выдавала:
Traceback (most recent call last):
File "./milfoil.py", line 499, in new_game_36
self.new_game(self.getList_36(), 3, 4, 780)
File "./milfoil.py", line 388, in new_game
self.scene.clear() # очистка сцены
AttributeError: clear
print dir(self.scene)
self.scene.clearFocus() # заменил на это
#self.scene.clear() # очистка сцены
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread
Ошибка сегментирования
Офлайн
gmorgunovЭто совсем не то! Правильно работать не будет.
self.scene.clearFocus() # заменил на это
Офлайн
PooHМожешь на пальцах объяснить отличия этих двух ша-бангов? Я не понимаю, что означает пробел после “env”.
Вообще-то интерпретатор питона обычно указывают так
Офлайн
Ubuntu 8.10, python 2.5.2
Русская локаль не устанавливается, точнее устанавливается, но интерфейс всё равно на английском.
Карты не сдаются, ни 36, ни 48.
Офлайн
Да, видимо все огрехи из-за различия версий. Обновляться я пока не спешу. Ставил SUSE 11, SUSE 11.1, Mandriva 2008,
Mandriva 2009 , Fedora 9 - не понравилось. Вернулся на Mandriva 2007, SUSE 10.3 (у меня XP,Mandr.2007, SUSE 10.3).
Теперь по игре:
1) Заменил 780 на 680.
2) Убрал Antialiasing…
Все работает, но только не с drag_and_drop, а по двойному щелчку левой мыши.
Pаза 3 разложил пасьянс. Лучший результат на 36 картах: пересдач - 11, ходов - 38. :/
Cегфолт все равно вылетает при закрытии окна, но это понятно.(У вас очевидно его нет?).
Игра занятная, но покер - лучше(ИМХО). :)
Офлайн