1.本想设成弧线模式,但是它是像素块,要在原有七彩蛇基础上进行弧线不太可能
2.出现一开始蛇就运行不了:
应该是这一块代码有问题
3.队友说干脆搞两条蛇 所以转为搞双人模式了
制作双人模式的普通模式::
1.qt的按键!(18条消息) Qt::Key键盘按键详细说明!!!_judgejames的博客-优快云博客_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 监听键盘按键_让 开的博客-优快云博客_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.放弃了...直接当裁缝