Qtのプロジェクトベースの学習 - バトルシティー()

C ++とQtとの接触はなく、長い間インターネットの後にバトルシティーの独自のソースを見つけるために、実際には、人々のコードを輝くのと同等、それをコピーされます。読むことはできないが、彼らは振り返ってみると、心に何も持っていなかったので、最初から再びそれを行うには願望ではなく、最初の百度、もはやソースコードが表示されます。

多くの兄は、彼がプロジェクトのフレームワークを行う前によく考えることを必要と述べたが、簡単に機能を追加します。しかし、私はそれを行うことで、新しい角度を発芽、新しい萌芽ました。

話題に。バトルシティーは、最初のタスクは、最初の記事で、ゲーム画面の背景が表示されます:

main.h:マップのサイズとタイルサイズを設定します。機能を編集するマップが存在しますので、編集機能(ただし、一時的ではないが)描画を実装するのは簡単なので、ほかにマップのサイズを設定するには、だけでなく、マップは、多くの部分に分かれています。

#ifndef MAIN_H
#define MAIN_H
#define INUM 17//横向地图块数目
#define JNUM 11
#define PICWIDTH 64//地图块图片宽度
#define PICHEIGHT 64
#define CELLWIDTH 64//地图块宽度
#define CELLHEIGHT 64
#define WIDTH 64*17//地图宽度
#define HEIGHT 64*11

//定义并声明全局结构体变量
class Gamemap;
typedef struct{
    Gamemap *gamemap;
}Glo;
extern Glo glo;

#endif // MAIN_H

グローバルクラスの多くを必要とするので、それはマップを描画するために主要なインターフェイスで、Gamemapマップをベースとする、請求グローバルスペアの構造を定義します。

main.cppに:グローバル変数を宣言

#include "main.h"
#include "mainwindow.h"
#include <QApplication>
Glo glo;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.h:メインインターフェイスでのイベントの描画を追加します。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPainter>
#include "main.h"
#include "gamemap.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();


private slots:
    void paintEvent(QPaintEvent *event);

private:
    QPainter paint;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //初始化全局结构体
    glo.gamemap = new Gamemap();
}

void MainWindow::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    setFixedSize(WIDTH, HEIGHT);

    paint.begin(this);
    glo.gamemap->Display(paint);//调用Gamemap的画图方法显示背景图片
    qDebug() << "ok";
    paint.end();
}

MainWindow::~MainWindow()
{

}

gamemap.h

#ifndef GAMEMAP_H
#define GAMEMAP_H
#include "main.h"
#include <QRect>
#include <QPainter>

class Gamemap
{
public:
    Gamemap();
    ~Gamemap();

    void Display(QPainter &paint);
};

#endif // GAMEMAP_H

gamemap.cpp:準備された背景画像がメインインターフェイスに「塗装します」

#include "gamemap.h"
#include <QImage>
#include <QDebug>

Gamemap::Gamemap()
{

}

void Gamemap::Display(QPainter &paint)
{
    paint.drawImage(QRect(0,0,WIDTH,HEIGHT),QImage(":/images/background.bmp"));
}

Gamemap::~Gamemap()
{

}

次のような効果があるコンパイルして実行は、:
ここに画像を挿入説明
ここでは最初のステップを完了するために、次のステップは、既存の背景画像上にマップを描くことで、機能の保存と読み込み増加します。

リリース7件のオリジナルの記事 ウォンの賞賛0 ビュー909

おすすめ

転載: blog.csdn.net/sunximei/article/details/101166829