pyqt无法实现双人模式!!!不服来辩(我真想不出来了

1.本想设成弧线模式,但是它是像素块,要在原有七彩蛇基础上进行弧线不太可能

 

2.出现一开始蛇就运行不了:

应该是这一块代码有问题

3.队友说干脆搞两条蛇 所以转为搞双人模式了

制作双人模式的普通模式::

1.qt的按键!(18条消息) Qt::Key键盘按键详细说明!!!_judgejames的博客-CSDN博客_qt::key

我突然发现只改了这里之后这条蛇可以用wasd操作

既然这样我就可以改写一个snakenode2这样就把两条蛇分开了

2. 

不知道为什么明明一样的代码,上面的蛇不能够用上下左右控制

并且蛇2撞墙不会死 而且吃不了食物 

3.我发现总是位置在下面的蛇可以操控

我只是把两行代码交换了位置——snake1就可以用上下左右控制并且能够正常吃东西以及死亡

是不是获取键盘信息的函数只能给一个蛇——1在上的时候只有wasd可以操控,并且操控2;2在上的时候,只能上下左右,并且二是蛇1

找到原因:.grabKeyboard()这个组件会接收所有的键盘事件,直到你把这个组件库释放。所以可能键盘事件都被这个组件拦截了 

那怎么替代呢?可以试试this->releaseKeyboard() 好像没啥用,应该是没用对。我的预期是不漏掉wasd和上下左右 估计都会抓取但是只有一个输出反应

单独一个蛇1也无法正常运行了...可以了,因为我在note1后面加了release然后直接不运行了

4.为什么根本snake1没有被调用

         If a different widget is currently grabbing keyboard input, that widget’s grab is released first.

如果不同的小部件当前正在抓取键盘输入,则首先释放该小部件的抓取。 应该是snake1的先抓取了然后先释放了再存的snake2的,所以只有snake2会处理

5.

我试着这样改了但是没有用 

(20条消息) QT 监听键盘按键_让 开的博客-CSDN博客_qt监听键盘事件

6.

这样都变成了一条蛇的 ,又是snake2

7.

这样可以让2正常控制,但是1 的问题依旧存在,是不是focus在2上了 

判定为蛇1的条件下仍旧是蛇2被放入的keyreleaseevent 

焦点小部件不受影响,只是它不接收任何键盘事件。setFocus() 像往常一样移动焦点,但新的焦点小部件仅在 releaseKeyboard() 之后接收键盘事件

所以是不是还要加上setfocus

发现:可以只指定窗口中的某个控件捕获键盘事件,使其他控件无法获得键盘事件

可以用grabber试试...返回的是地址

8.

  • 在Qt中,键盘事件和QWidget的focus密不可分:一般来说,一个拥有焦点(focus)的QWidget或者grabKeyboard()的QWidget才可以接受键盘事件。
  • 如果一个 Widget 已经 grabKeyboard,所有键盘事件将发送到该Widget而不是获得焦点的Widget所以双人模式不可能用pyside2实现...
  • 我有个想法,设置一个组件接受,然后判断分发并且可以setfocus给他们

9.pygame怕是不能让widget移动...

        是不是可以试着改变方向

qt得手动转移focus对象,如果不转移的话就会一直聚焦到一个widget上,导致另外一个widget没有办法接受键盘事件。

pygame感觉和qt没有办法融合,所以用pygame改方向的可能性也很低

10.放弃了...直接当裁缝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值