精华内容
下载资源
问答
  • src_Qt实现的太空游戏_qt游戏.zip
  • src_Qt实现的太空游戏_qt游戏_源码.zip
  • QtGame_QT_hiddennaa_Qt翻金币_QT游戏代码_C++_源码.zip
  • Qt游戏代码之坦克大战
  • QtGame_QT_hiddennaa_Qt翻金币_QT游戏代码_C++_源码.rar.rar
  • 主要利用Qt和openGL实现了一个简单的太空游戏
  • 利用QT Creator开发平台和C++语言设计的一个扫雷游戏的项目
  • QtGamepad游戏手柄 ,利用Qt qml实现的虚拟游戏手柄。
  • Qt游戏手柄开发

    2020-02-14 21:18:26
    Qt游戏手柄开发 本文介绍在Qt中使用QJoySricks进行常见XBox游戏手柄开发,我使用的是北通阿修罗2游戏手柄。 1.添加QJoySricks库 GitHub链接:https://github.com/alex-spataru/QJoysticks 下载源码后在.pro文件...

    Qt游戏手柄开发

    本文介绍在Qt中使用QJoySricks进行常见XBox游戏手柄开发,我使用的是北通阿修罗2游戏手柄。

    1.添加QJoySricks库

    GitHub链接:https://github.com/alex-spataru/QJoysticks

    下载源码后在.pro文件中加入:

    include ($$PWD/../QJoysticks/QJoysticks.pri)
    

    2.JoyStick声明与定义

    新建MainWidget类,继承自QWidget。

    mainwidget.h文件中包含"QJoySticks.h"头文件:

    #include "QJoysticks.h"

    mainwidget.h中声明m_joystick:

    QJoysticks* m_joystick;

    mainwidget.cpp中实例化m_joystick

    m_joystick = QJoysticks::getInstance();

    3.扫描可用手柄

    函数scan_joysticks(),启动虚拟手柄,并扫描可用手柄,显示在ComboBox(js_cobx)中:

    void MainWidget::scan_joysticks()
    {
        ui->js_cobx->clear();    //清空ComboBox
        m_joystick->setVirtualJoystickEnabled (true);    //启用虚拟手柄
        m_joystick->setVirtualJoystickRange (1);    //设置虚拟手柄摇杆范围[-1,1]
        QStringList js_names = m_joystick->deviceNames();    //添加手柄
        foreach (QString name, js_names){
            ui->js_cobx->addItem(name);
        }
    }

    虚拟手柄映射表:

    4.使用手柄摇杆改变SpinBox

    编写槽函数joysitck_axis,将手柄[-1,1]范围映射至[0,1000]:

    void MainWidget::joysitck_axis(int js_index, int axis_index, qreal value)
    {
        if (m_joystick->joystickExists(js_index)){
            if (axis_index == 0){
                // axis range [-1, 1] -> range [0, 1000];
                ui->m_spinBox->setValue(value * (-500) + 500);
            }
        }
    }

    关联手柄摇杆状态改变信号:

    connect(m_joystick, SIGNAL(axisChanged(int, int, qreal)), this, SLOT(joysitck_axis(int, int, qreal)));
    

    此时连接手柄后滑动编号为0的axis即可看到SpinBox的数值发生改变

    展开全文
  • QT游戏俄罗斯方块

    2019-03-25 17:43:46
    C++实现的QT游戏俄罗斯方块,和游戏机中的体验相同,直接下载下来在QT上运行就可以了
  • Qt游戏类源码之贪吃蛇2
  • Qt游戏类源码之贪吃蛇
  • Qt C++框架开发的迷宫游戏,迷宫随机生成,可设置迷宫规模大小,可自动计算通关路径,按“w
  • 飞机大战---Qt游戏编程,游戏模板,有需要的可以下载一下,可以自己更改添加的。有需要的可以下载一下
  • QT游戏编程(Game Programming Using QT)-2016年英文原版,0积分——A complete guide to designing and building fun games with Qt and Qt Quick 2 using their associated toolsets.
  • 基于Qt所开发的翻金币游戏源代码,包括资料包和源码
  • qt游戏客户端

    2017-03-02 18:20:58
    此源码配套教程请查阅csdn IT1995博客
  • 一个Qt游戏

    2014-08-25 13:24:28
    这是用Qt做的一个小游戏,类似于指法训练的游戏,也有点类似于节奏大师。
  • 本人自学三天完成的一个经典推箱子游戏,一共二十关,本地记录、计时、计步、撤回、昵称等等功能都有,大家可以体验一下,还差自定义模式,我想再学好网络编程可以让大家分享自制的地图的时候再完善自定义模式。...
  • 游戏模板,大家可以随意添加自己的元素
  • Qt 游戏之路(前言)

    千次阅读 2014-03-13 22:44:53
    此部分 Qt 游戏之路 想把一个游戏的制作总过程代码都贴上以做纪念,也为和大家交流讨论提供一个场地,本人也是在学习中制作,错误之处在所难免,希望各路大神不吝赐教!小弟拜谢!

    此部分 Qt 游戏之路 想把一个游戏的制作总过程代码都贴上以做纪念,也为和大家交流讨论提供一个场地,本人也是在学习中制作,错误之处在所难免,由于不是发布已完成代码,更新进度会不定期,内容修改也可能较大。只希望与大家共勉!      同时也希望各路大神不吝赐教!小弟拜谢!

    C/C++技术交流群 116920287







    展开全文
  • 转自:...Qt游戏开发必备!用QtMultimedia播放Ogg格式音乐

    转自:http://software.intel.com/zh-cn/blogs/2013/03/15/qt-qtmultimedia-ogg/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=others-%20QtMultimedia

    Qt游戏开发必备!用QtMultimedia播放Ogg格式音乐

    QtMultimedia是Qt4.6提出来的一个音频和视频的新底层。目的是针对开发者提供更加完全的视频和音频控制,同时不损失平台无关性的优点。而Ogg是一个优秀的开源多媒体容器,可以容纳多种编码格式的内容,而大家最为熟知的是Vorbis这个编码格式。这回我将亲自尝试QtMultimedia下播放OggVorbis音乐,而在游戏中播放音乐必不可少。

    源代码和演示程序下载地址:这里

    我的开发环境:

    Ubuntu+ gcc4.4 + QtSDK 4.8.1 + QtCreator2.6

    Windows8+ minGW4.4 + QtSDK 4.8.3 + QtCreator2.6

    由于OggVorbis开源的性质,导致我们必须亲自解码。网上关于Ogg解码的内容非常少,我也是结合《游戏音频程序设计-Beginning.Game.Audio.Programming》和Ogg的文档才对OggVorbis格式有着一些理解。首先需要下载“libogg-1.3.0”和“libvorbis-1.3.2”这两个软件开发包。可以在xiph.org上(http://www.xiph.org/)得到这两个软件开发包(也可以下载我的源代码,那里面附带了ogg和vorbis的源代码和项目文件)。然后解压,软件开发包中附带了VisualStudio的项目文件,而我使用的是QtCreator2.6,所以我在阅读了VisualStudio的项目文件之后自己写了一个.pro文件来生成Ogg和Vorbis的静态库。大家可以到我的资源中下载相关的项目文件。(博客授权于英特尔,原博客地址:http://blog.csdn.net/jiangcaiyang123)

    构建后获得了libOgg、libVorbis和libVorbisFile三个静态库,我们就可以使用现有的库函数构建我们的实验了。

    下面是我定义的QOggVorbis类的声明:

    #ifndef _QOGGVORBIS_H_
    #define _QOGGVORBIS_H_
    #include <QObject>
    #include <QString>
    #include <QStringList>
    #define DECLRARE_PROPERTY_WITH_GETTERS( aType, aProperty )
     private:\
     aType m_ ## aProperty; public:\
     aType aProperty( void ) { return m_ ## aProperty; }
     
    struct OggVorbis_File;// 前向声明
     
    
    class QOggVorbis: public QObject
    {
     Q_OBJECT
     Q_PROPERTY( quint16 audioFormat READ audioFormat )
     Q_PROPERTY( quint16 channels READ channels )
     Q_PROPERTY( quint32 sampleRate READ sampleRate )
     Q_PROPERTY( quint32 byteRate READ byteRate )
     Q_PROPERTY( quint16 blockAlign READ blockAlign )
     Q_PROPERTY( quint16 bitsPerSample READ bitsPerSample )
     Q_PROPERTY( QStringList userComments READ userComments )
     Q_PROPERTY( QString vendor READ vendor )
     Q_PROPERTY( qint8* data READ data )
     Q_PROPERTY( quint32 dataSize READ dataSize )
    public:
     QOggVorbis( void );
     QOggVorbis( const QString& fileName );
     ~QOggVorbis( void );
     bool load( const QString& fileName );
     void clear( void );
    private:
     bool getComment( OggVorbis_File* vf );
     bool decode( OggVorbis_File* vf );
     DECLRARE_PROPERTY_WITH_GETTERS( quint16, audioFormat )
     DECLRARE_PROPERTY_WITH_GETTERS( quint16, channels )
     DECLRARE_PROPERTY_WITH_GETTERS( quint32, sampleRate )// 也就是频率Frequency
     DECLRARE_PROPERTY_WITH_GETTERS( quint32, byteRate )
     DECLRARE_PROPERTY_WITH_GETTERS( quint16, blockAlign )
     DECLRARE_PROPERTY_WITH_GETTERS( quint16, bitsPerSample )// 也就是SampleRate
     DECLRARE_PROPERTY_WITH_GETTERS( QStringList, userComments )
     DECLRARE_PROPERTY_WITH_GETTERS( QString, vendor )
     DECLRARE_PROPERTY_WITH_GETTERS( qint8*, data )
     DECLRARE_PROPERTY_WITH_GETTERS( quint32, dataSize )
    };
    #endif // _QOGGVORBIS_H_

    这里使用Q_PROPERTY宏来对这个类进行moc,可以通过setProperty()函数和getProperty()函数来获得成员的值,而DECLRARE_PROPERTY_WITH_GETTERS是一个自定义的宏,用来定义一个数据成员和一个Getter。由于Qt中有些类(如QString)是隐式共享(implicitsharing)的,返回变量还是它的引用都没有关系。一些私有的成员函数由于传值需要用到OggVorbis_File结构,而又不想破坏它的封装性,只有先前向声明OggVorbis_File结构,再将结构的指针作为参数进行传递。

    进行QtMultimedia的编程,需要使用QAudioFormat、QAudioDeviceInfo和QAudioOutput这三个类。首先用QAudioFormat设置音频的格式,然后用这种格式来匹配QaudioDeviceInfo,随后利用QAudioFormat和QAudioDeviceInfo的信息来创建QAudioOutput的对象。最后利用QAudioOutput的对象(或对象指针)进行播放。下面是相关的代码:

    // main.cpp 主函数所在的空间
    // 2013 年 1 月21日 19:33:17 By jiangcaiyang
    #include <QCoreApplication>
    #include <QBuffer>
    #include <QtMultimedia>
    #include <QtDebug>
    #include "QOggVorbis.h"
    class TestAudio
    {
    public:
     TestAudio( void )
     {
     }
     ~TestAudio( void )
     {
     Release( );
     }
     bool LoadOggFile( const QString& fileName )
     {
     if ( !m_OggVorbis.load( fileName ) ) return false;
     quint32 sampleRate = m_OggVorbis.sampleRate( );
     quint16 channels = m_OggVorbis.channels( );
     quint16 sampleSize = m_OggVorbis.bitsPerSample( );
     QStringList comments = m_OggVorbis.userComments( );
     QListIterator<QString> iterCmts( comments );
     qDebug( ) << "Ogg file information: " <<
     "[sampleRate: " << sampleRate <<
     "][channels: " << channels <<
     "][sampleSize: " << sampleSize <<
     ']';
     // 显示 Ogg 文件额外信息
     qDebug( ) << "Ogg comments: ";
     while ( iterCmts.hasNext( ) )
     {
     qDebug( ) << iterCmts.next( );
     }
     // 设置音频格式
     m_Format.setSampleRate( sampleRate );
     m_Format.setChannelCount( channels );
     m_Format.setSampleSize( sampleSize );
     m_Format.setCodec( "audio/pcm" );
     m_Format.setByteOrder( QAudioFormat::LittleEndian );
     m_Format.setSampleType( QAudioFormat::SignedInt );
     // 初始化音频设备
     m_DeviceInfo = QAudioDeviceInfo::defaultOutputDevice( );
     if ( !m_DeviceInfo.isFormatSupported( m_Format ) )
     {
     qDebug( ) << "Cannot support this format, try a corresponding format.\n";
     m_Format = m_DeviceInfo.nearestFormat( m_Format );
     }
     m_Buffer.setData( (const char*)m_OggVorbis.data( ),
     m_OggVorbis.dataSize( ) );
     m_pOutput = new QAudioOutput( m_DeviceInfo, m_Format, 0 );
     return true;
     }
     void Play( void )
     {
     m_Buffer.open( QIODevice::ReadOnly );
     m_pOutput->start( &m_Buffer );
     }
     void Release( void )
     {
     m_Buffer.close( );
     delete m_pOutput;
     m_pOutput = 0;
     }
    private:
     QAudioFormat m_Format;
     QAudioDeviceInfo m_DeviceInfo;
     QOggVorbis m_OggVorbis;
     QAudioOutput* m_pOutput;
     QBuffer m_Buffer;
    };
    int main(int argc, char* argv[] )
    {
     QCoreApplication a( argc, argv );
     // 读取并且播放
     TestAudio testAudio;
     if ( !testAudio.LoadOggFile( "../TestSound.ogg" ) ) return 1;
     qDebug( ) << "Read test sound successful!\n";
     testAudio.Play( );
     qDebug( ) << "Now Playing audio!\n";
     return a.exec();
    } 

     

    展开全文
  • 利用qt编写的一款象棋,其中可以进行人人对战,还有人机对战,包括悔棋等功能。
  • Qt 游戏之路(三) 战车和炮的移动时旋转

    人物类

    #ifndef PLAYER_H
    #define PLAYER_H
    
    #include "info.h"
    #include "move_thing_base.h"
    
    class Player : public Move_Thing_Base
    {
        Q_OBJECT
    
    public:
        Player();
        void Init(){}
        QPointF center();
        void fixDirect();
        void fixPao(qreal x, qreal y);
        void moveto(QPointF pos);
        void moveto(qreal x, qreal y);
        ~Player() {}
    
    
    };
    
    #endif // PLAYER_H
    

    人物类实现

    
    
    #include "info.h"
    #include "player.h"
    
    //Player
    Player::Player()
    {
        speed = 45;
        extern_info = 0; //表示主角
    
        item = new GraphicsItem;
        text = new QGraphicsSimpleTextItem;
        text->setBrush(QBrush(QColor(0,0,255,255)));
        text->setText("    闲云野鹤");
        text->setPos(0,-20);
        text->setParentItem(item);
        pi = new QGraphicsPixmapItem[2];
        pi[0].setPixmap(QPixmap(":/pic/tanke1/3.png"));
        pi[0].setParentItem(item);
        pi[1].setPixmap(QPixmap(":/pic/pao1/3.png"));
        pi[1].setParentItem(item);
        pi[1].setPos(center().x() - 23, center().y() - 19);
        scene->addItem(item);
        setPos(123, 345);
    
    }
    
    QPointF Player::center()
    {
        return QPointF(cpos.x() + 57, cpos.y() + 23);
    }
    
    void Player::moveto(QPointF pos)
    {
        moveto(pos.x(), pos.y());
    }
    
    void Player::moveto(qreal x, qreal y)
    {
        Move_Thing_Base::moveto(x,y);
        fixDirect();
        fixPao(x,y);
    
    }
    
    
    void Player::fixDirect()
    {
        qreal x = arrivepos.x() - center().x();
        qreal y = center().y() - arrivepos.y(); // -(arrivepos.y() - center().y())
        qreal yt = 100;  //qreal xt = 0;   正向量
        qreal angle = qAcos((y*yt)/(qSqrt(x*x+y*y)*yt)) * 53.7;
        int part = angle/22.5;
        if (x >= 0)
        {
            switch(part)
            {
            case 0:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/1.png"));
                break;
            case 1:
            case 2:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/2.png"));
                break;
            case 3:
            case 4:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/3.png"));
                break;
            case 5:
            case 6:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/4.png"));
                break;
            default:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/5.png"));
            }
        }
        else
        {
            switch(part)
            {
            case 0:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/1.png"));
                break;
            case 1:
            case 2:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/8.png"));
                break;
            case 3:
            case 4:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/7.png"));
                break;
            case 5:
            case 6:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/6.png"));
                break;
            default:
                pi[0].setPixmap(QPixmap(":/pic/tanke1/5.png"));
            }
        }
    }
    
    void Player::fixPao(qreal ax,qreal ay)
    {
        qreal x = ax - center().x();
        qreal y = center().y() - ay; // -(arrivepos.y() - center().y())
        qreal yt = 100;  //qreal xt = 0;   正向量
        qreal angle = qAcos((y*yt)/(qSqrt(x*x+y*y)*yt)) * 53.7;
        int part = angle/22.5;
        if (x >= 0)
        {
            switch(part)
            {
            case 0:
                pi[1].setPixmap(QPixmap(":/pic/pao1/1.png"));
                break;
            case 1:
            case 2:
                pi[1].setPixmap(QPixmap(":/pic/pao1/2.png"));
                break;
            case 3:
            case 4:
                pi[1].setPixmap(QPixmap(":/pic/pao1/3.png"));
                break;
            case 5:
            case 6:
                pi[1].setPixmap(QPixmap(":/pic/pao1/4.png"));
                break;
            default:
                pi[1].setPixmap(QPixmap(":/pic/pao1/5.png"));
            }
        }
        else
        {
            switch(part)
            {
            case 0:
                pi[1].setPixmap(QPixmap(":/pic/pao1/1.png"));
                break;
            case 1:
            case 2:
                pi[1].setPixmap(QPixmap(":/pic/pao1/8.png"));
                break;
            case 3:
            case 4:
                pi[1].setPixmap(QPixmap(":/pic/pao1/7.png"));
                break;
            case 5:
            case 6:
                pi[1].setPixmap(QPixmap(":/pic/pao1/6.png"));
                break;
            default:
                pi[1].setPixmap(QPixmap(":/pic/pao1/5.png"));
            }
        }
    }
    
    
    
    展开全文
  • 一个qt游戏

    2008-11-28 11:08:06
    本人无法运行,看到效果
  • 游戏地图制作工具,在qt creator下编译使用
  • Qt 游戏之路(二) 建立移动物体基类,使玩家以此类为基础 w#ifndef MOVE_THING_BASE_H#define MOVE_THING_BASE_H#include "info.h"class Move_Thing_Base : public QWidget{ Q_OBJECTpublic: Move_Thing_Base(); ~...
  • Qt 游戏开发(07) - 为游戏增加音效

    千次阅读 2017-02-20 10:15:05
    本小结为在(6)的基础上为游戏增加音效,比如背景音,每次设计的枪的声音。 首先是准备音效文件,background.mp3, bullet.wav,可以在网络上下载。 Qt qrc文件中增加multimedia模块,Qt 源码目录中增加resource文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,790
精华内容 8,316
关键字:

qt游戏