Найти - Пользователи
Полная версия: PyQt4: настольная игрушка (попробуйте скрипт)
Начало » GUI » PyQt4: настольная игрушка (попробуйте скрипт)
1 2 3 4 5
The gray Cardinal
Настольная игра “Пасьянс тысячелистник” (требует 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 всё хорошо :/.
gmorgunov
У меня в SUSE 10.3, Python 2.5 , zip/unzip - установлена.
Выдает: bash: ./milfoil.py: /usr/bin/python^M: плохой интерпретатор: Нет такого файла или каталога.
Как это вылечить? (Подозреваю - окончания строк). :/
The gray Cardinal
Интересно, у меня нормально под Linux запускается, а переводы строк действительно виндовые :).
Можно попробовать вот это.
The gray Cardinal
Ну или просто положу исходник сюда.

Позже: убрал, чтобы ветка не была столь массивной.
PooH
Вообще-то интерпретатор питона обычно указывают так
#!/usr/bin/env python
gmorgunov
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
Ошибка сегментирования
Завтра, будет время, посмотрю еще. :)
The gray Cardinal
gmorgunov
self.scene.clearFocus() # заменил на это
Это совсем не то! Правильно работать не будет.
Тебе нужно обновить Qt до 4.4.
The gray Cardinal
PooH
Вообще-то интерпретатор питона обычно указывают так
Можешь на пальцах объяснить отличия этих двух ша-бангов? Я не понимаю, что означает пробел после “env”.
Shecspi
Ubuntu 8.10, python 2.5.2
Русская локаль не устанавливается, точнее устанавливается, но интерфейс всё равно на английском.
Карты не сдаются, ни 36, ни 48.
gmorgunov
Да, видимо все огрехи из-за различия версий. Обновляться я пока не спешу. Ставил 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егфолт все равно вылетает при закрытии окна, но это понятно.(У вас очевидно его нет?).
Игра занятная, но покер - лучше(ИМХО). :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB