我想在qt实现flappybird中按动空格后小鸟出现振翅动画,在bird类中定义一个动画函数,再在mainscene中的void MainScene::keyPressEvent(QKeyEvent *event)调用那个函数,以下是我的bird.cpp内容#include "bird.h" #include "config.h" #include <QPixmap> #include <QRect> bird::bird() { //初始化加载飞机图片资源 currentImage = HERO_PATH; m_Plane.load(HERO_PATH); //初始化坐标 birdSpeed=1 ;//下落速度 m_X =m_Plane.width(); m_Y = GAME_HEIGHT * 0.5 - m_Plane.height()*0.5; //初始化矩形框 m_Rect.setWidth(m_Plane.width()); m_Rect.setHeight(m_Plane.height()); m_Rect.moveTo(m_X,m_Y); } void bird::setPosition(int x, int y) { m_X = x; m_Y = y; m_Rect.moveTo(m_X,m_Y); } void bird::updateBirdPosition() { if(m_Y<=GAME_HEIGHT-100)//防止坠落屏幕外 m_Y += birdSpeed; m_Plane.load(HERO_PATH); } void bird::flychange() { m_Plane.load(":/res/3guan"); }
时间: 2024-04-15 17:30:16 浏览: 110
Qt实现Flappy Bird游戏
你想在Qt中实现Flappy Bird游戏中,按下空格键后小鸟出现振翅动画,你可以在bird类中定义一个动画函数,并在MainScene的keyPressEvent函数中调用该函数。以下是你提供的bird.cpp的内容:
```cpp
#include "bird.h"
#include "config.h"
#include <QPixmap>
#include <QRect>
bird::bird()
{
// 初始化加载小鸟图片资源
currentImage = HERO_PATH;
m_Plane.load(HERO_PATH);
// 初始化坐标
birdSpeed = 1; // 下落速度
m_X = m_Plane.width();
m_Y = GAME_HEIGHT * 0.5 - m_Plane.height() * 0.5;
// 初始化矩形框
m_Rect.setWidth(m_Plane.width());
m_Rect.setHeight(m_Plane.height());
m_Rect.moveTo(m_X, m_Y);
}
void bird::setPosition(int x, int y)
{
m_X = x;
m_Y = y;
m_Rect.moveTo(m_X, m_Y);
}
void bird::updateBirdPosition()
{
if (m_Y <= GAME_HEIGHT - 100) // 防止坠落屏幕外
m_Y += birdSpeed;
m_Plane.load(HERO_PATH);
}
void bird::flychange()
{
m_Plane.load(":/res/3guan");
}
```
这段代码已经定义了bird类的一些基本函数,你可以将flychange函数添加到bird类中,用于切换小鸟的图片资源。然后,在MainScene的keyPressEvent函数中调用该函数,实现按下空格键后小鸟出现振翅动画的效果。
希望对你有帮助!如果还有其他问题,请继续提问。
阅读全文