Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4: настольная игрушка (попробуйте скрипт) [RSS Feed]

#1 Янв. 10, 2009 15:48:51

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

Настольная игра “Пасьянс тысячелистник” (требует 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)

Офлайн

#2 Янв. 10, 2009 20:07:09

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

У меня в SUSE 10.3, Python 2.5 , zip/unzip - установлена.
Выдает: bash: ./milfoil.py: /usr/bin/python^M: плохой интерпретатор: Нет такого файла или каталога.
Как это вылечить? (Подозреваю - окончания строк). :/



Офлайн

#3 Янв. 10, 2009 20:41:10

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

Интересно, у меня нормально под Linux запускается, а переводы строк действительно виндовые :).
Можно попробовать вот это.



Отредактировано (Янв. 10, 2009 20:43:20)

Офлайн

#4 Янв. 10, 2009 20:58:18

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

Ну или просто положу исходник сюда.

Позже: убрал, чтобы ветка не была столь массивной.



Отредактировано (Янв. 30, 2009 23:45:11)

Офлайн

#5 Янв. 10, 2009 21:48:33

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

Вообще-то интерпретатор питона обычно указывают так

#!/usr/bin/env python



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Янв. 11, 2009 00:32:59

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

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
Ошибка сегментирования
Завтра, будет время, посмотрю еще. :)



Офлайн

#7 Янв. 11, 2009 10:53:54

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

gmorgunov
self.scene.clearFocus() # заменил на это
Это совсем не то! Правильно работать не будет.
Тебе нужно обновить Qt до 4.4.



Офлайн

#8 Янв. 11, 2009 11:11:39

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

PooH
Вообще-то интерпретатор питона обычно указывают так
Можешь на пальцах объяснить отличия этих двух ша-бангов? Я не понимаю, что означает пробел после “env”.



Офлайн

#9 Янв. 11, 2009 11:54:51

Shecspi
От:
Зарегистрирован: 2009-01-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

Ubuntu 8.10, python 2.5.2
Русская локаль не устанавливается, точнее устанавливается, но интерфейс всё равно на английском.
Карты не сдаются, ни 36, ни 48.



Офлайн

#10 Янв. 11, 2009 11:55:01

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: настольная игрушка (попробуйте скрипт)

Да, видимо все огрехи из-за различия версий. Обновляться я пока не спешу. Ставил 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егфолт все равно вылетает при закрытии окна, но это понятно.(У вас очевидно его нет?).
Игра занятная, но покер - лучше(ИМХО). :)



Офлайн

  • Начало
  • » GUI
  • » PyQt4: настольная игрушка (попробуйте скрипт)[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version