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()
{
}
次のような効果があるコンパイルして実行は、:
ここでは最初のステップを完了するために、次のステップは、既存の背景画像上にマップを描くことで、機能の保存と読み込み増加します。