在创建游戏界面时,我们使用Qt的垂直布局在MainWindow上加入一个GraphicsView作为游戏画面展示区域,一个LCD Number显示分数,并加入三个按钮分别命名为“开始”、“暂停”和“停止”,且各自具有特定的objectName。
为了填充背景,我们创建了MyScene和MyItem类,分别继承自QGraphicsScene和QGraphicsPixmapItem。在MyScene中,我们定义了一个长度为16的MyItem数组,对应场景中的图片,同时在MyItem中定义了背景、光标以及鼠标的图片,并根据鼠标的按下事件,动态改变光标。在MyItem中,我们重写了鼠标按下事件,当按下时,光标从hammerDown图片切换到hammerUp图片。
为了控制地鼠的弹出,我们首先生成一个1-3的随机数以确定地鼠的个数,然后生成一个0-15的随机数作为地鼠的位置。在生成地鼠图片时,将MyItem中的mouse属性设置为true,用于后续的记分。同时,我们创建了一个名为handler的类,采用单例模式,定义了beatMouse()信号和addScore()函数,用于控制记分逻辑。
在MyItem类中,我们重写了鼠标按下事件,获取handler实例,当mouse属性为true时,调用addScore()函数进行记分,并新增hit属性以防止连续点击同一地鼠重复记分。三个按钮的功能包括绑定信号与槽函数startGame()、pulseGame()和stopGame(),实现游戏的启动、暂停和停止。
在MainWindow类中,我们重写了关闭事件,显示一个确认对话框,询问用户是否真的要关闭窗口。至此,游戏的界面设计、填充背景、弹出地鼠、记分、按钮功能和关闭逻辑全部实现。
为了实现游戏逻辑的扩展和管理,我们提供了handler.h、handler.cpp、mainwindow.h、mainwindow.cpp、myitem.h、myitem.cpp、myscene.h和myscene.cpp等文件,详细代码结构确保了游戏功能的灵活扩展和维护。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。