RPG游戏(一)——环境搭建、地图显示

原创 2015年11月17日 16:55:38

RPG游戏与rogue游戏类似,如经典RPG游戏“口袋妖怪”。我们组选择用Qt开发一个类似的游戏,作为“嵌入式linux开发”这门课的大作业。环境搭建:安装Qt、安装Tiledmap(一款地图编辑器)。地图制作与显示:用tiledmap软件生成地图位置信息——编写Qt代码加载素材——分割素材——按地图位置信息贴图。闲话不多说,下面放代码

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QImage>
#include <QPainter>

namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
public:
    void paintEvent(QPaintEvent *e);
private:
    Ui::MainWindow *ui;
    QImage all;
    QImage tiles[256];
};

#endif // MAINWINDOW_H


mainwindow.cpp

<pre name="code" class="cpp">#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
int map_data[] = {71,72,71,72,2,2,202,202,202,0,
                  87,88,87,88,2,2,218,218,218,0,
                  145,146,210,210,71,72,0,0,202,0,
                  161,162,226,226,87,88,0,0,218,0,
                  145,146,210,210,71,72,0,0,0,0,
                  161,162,226,226,87,88,0,0,0,0,
                  0,0,145,146,145,146,0,0,0,0,
                  0,0,161,162,161,162,0,0,0,0,
                  0,0,0,0,0,0,0,0,0,0,
                  0,0,0,0,0,0,0,0,0,0};
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    all.load("C:/Users/jupeizhong/Desktop/Qt/RPG/tiles/TileB.png");
    for (int i = 0;i < 16;++i)
        for (int j = 0;j < 16;++j)
            tiles[i * 16 + j] = all.copy(QRect(j*32, i*32, 32, 32));
}
void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter *pa;
    pa = new QPainter();
    pa->begin(this);
    for (int i = 0;i < 10;++i)
        for (int j = 0;j < 10;++j)
            if (map_data[i*10+j] != 0)
                pa->drawImage(j * 32, i * 32, tiles[map_data[i*10+j]-1]);
    pa->drawImage(0, 0, tiles[18]);
    pa->end();
    delete pa;
}

MainWindow::~MainWindow()
{
    delete ui;
}


main.cpp

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

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

    return a.exec();
}
运行效果:

所用素材,即TileB.png

注:本系列博客所包含素材来源于互联网,请勿用于商业用途。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android学习笔记:RPG游戏地图绘制理解

首先,可以参考上篇博文《根据系列图片绘制动画理解》将动画制作出来;       其次,地图绘制可以借助工具,得到相应的地图数组数据;       最后,有了地图数组数据,则可以从提供的地图库文件根...
  • duancanmeng
  • duancanmeng
  • 2012年02月15日 17:05
  • 4334

Qt 游戏之路(前言)

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

用Java写解谜Rpg-4.加载界面,RPG界面与Player

根据之前的套路,写一下Loading界面和Rpg游戏界面,先简单实现人物在地图中心的动画。...
  • qq_28866471
  • qq_28866471
  • 2016年05月02日 15:19
  • 278

android游戏开发 深度解析利用位图绘制rpg地图

先贴代码 着我们采用surfaceview写package com.mz.demo;import android.content.Context; import android.graphics.B...
  • The_dakeLaugh
  • The_dakeLaugh
  • 2016年05月13日 10:46
  • 733

RPG游戏地图设计与实现

先占个坑,有空写文章,时间长了,忘了写什么了,国庆快到了,我是多想立即给zhugu...
  • tyxkzzf
  • tyxkzzf
  • 2014年09月28日 20:42
  • 923

如何制作一款HTML5 RPG游戏引擎——第一篇,地图类的实现

一,话说天下大事 前不久看到lufy的博客上,有一位朋友想要一个RPG游戏引擎,出于兴趣准备动手做一做。由于我研究lufylegend有一段时间了,对它有一定的依赖性,因此就准备将这个引擎基于luf...
  • yorhomwang
  • yorhomwang
  • 2013年05月06日 21:49
  • 22010

从一款已上线的MMO手游分析游戏地图的同步方案

地图几乎是每一部RPG、MOBA、动作冒险等游戏作品中必不可少的东西,而地图的设计也是影响玩家体验的重要元素之一,游戏中的地图该怎么设计呢?本文将以一款已经上线的MMO手游为例,介绍地图在设计中需要注...
  • canglangclient
  • canglangclient
  • 2015年10月15日 19:51
  • 3323

《游戏脚本的设计与开发》-(RPG部分)3.1 RPG地图到底怎么做?

我之前也写过一个短篇系列《零基础开发RPG游戏开源讲座》,介绍的也比较简单,这次我会更深入也更具体的介绍一下RPG游戏的开发过程。 话说好久没有更新博客了,其实这段时间主要是工作忙,没时间。那又是什么...
  • lufy_Legend
  • lufy_Legend
  • 2013年12月19日 16:30
  • 15248

《游戏脚本的设计与开发》-(RPG部分)3.2 地图遮挡和人物行走

上一节中已经介绍了RPG游戏中地图怎么实现,在RPG游戏的地图中通常有各种遮挡,比如人物站在房屋的后面的时候,房子应该遮挡住人物,这就涉及到各种建筑物和人物的排序显示。另外,上一节中我为了测试地图,已...
  • lufy_Legend
  • lufy_Legend
  • 2014年01月02日 05:54
  • 14413

【cocos3.x+tilemap】制作rpg小游戏(一)地图制作

【cocos3.x+tileMap】制作RPG小游戏(一)地图制作       前面做过一个小的马里奥游戏,现在来实现一个小时候玩过的类似文曲星上《英雄坛说》的小RPG游戏。        与横板的...
  • pur_e
  • pur_e
  • 2016年02月23日 10:58
  • 1404
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RPG游戏(一)——环境搭建、地图显示
举报原因:
原因补充:

(最多只允许输入30个字)