C\C++开发的经典魔塔小游戏--(2)制作地图以及画出地图
这篇文章主要介绍如何制作以及画出地图,顺便会填充一些个人认为有趣的东西介绍给大家。
C用来写图形化界面其实是一个很费力的过程,但是面向过程的语言结构,让人在做一些逻辑处理的时候更加的清晰,而不像C++一样,抽象化的方式让查看代码的人眼花缭乱,防不胜防,势必增加维护成本。但是C++更加高级的重写机制,泛型,以及STL方法,使得代码量很大的缩减,减少了开发者的劳动力输出。为了让逻辑处理更加简单易懂,本次开发大量使用简单的C语言,力图让每个读者都能看懂。
我们收集好素材以后就要想着如何去使用它,比如说,要在某个位置打印出一个怪物的图片,那么 我们每次打印都要确定那个位置。库函数中对于位置的确认是通过图片的左上角与图片的大小来界定范围,所以,我们需要创建一个二维数组来存储所有需要在这张地图上显示的素材图片
int map[13][13] =
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,4,8,8,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,6,1,1,2,1,0,0,1,1,1,1,0,0,4,11,1,0,1,0,0,13,0,0,1,0,0,0,2,0,0,1,2,10,18,5,0,1,0,0,4,1,1,0,1,0,0,0,0,0,1,0,0,1,11,1,0,1,0,0,0,0,0,1,0,0,0,2,0,0,1,1,0,0,0,0,1,0,0,1,1,1,0,0,2,0,0,0,0,2,0,0,6,17,4,0,4,1,4,0,1,10,1,0,0,6,1,4,0,1,15,1,0,9,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
或许有人就要问了,这些0,1,2,3,数字能表示什么? 难道说要在界面上打印出一个二维矩阵? 可惜,并不是这样,这些数字就体现了我将素材图片全部起名为数字序列的好处,我们不必关心需要输出哪一张图片,只需要记得某个素材的图片名字叫什么就行了。 当然,这中间还需要一个数字到字符串的转换函数,因为我们的IMAG函数需要的参数是字符串类型。
void loadResource()
{//加载资源loadimage(&roleInfo, "info.jpg");for (int i = 0; i < 19; i++){char fileName[20] = "";sprintf(fileName, "%d.jpg", i);loadimage(img + i, fileName, 55, 55);//界定位图大小}}
//把整形转换为字符串
char str[20] = "";
char *intToWchar(int xNum)
{sprintf(str, "%d", xNum);return str;
}
如此一来,是不是很轻松的就将素材转化成一种更加简单的使用方式了? 这次撰写和开发的精华部分也就在这里,巧妙的利用数字转化字符串,使得地图的图画有了可能,不然地图的撰写是一个极大的问题。 当然,填充完毕之后,我们就开始将素材打印在界面上。
//将数据转格式 用以输出在图形界面山上
void drawMap()
{int i, j;int x, y;for (i = 0; i < 13; i++){for (j = 0; j < 13; j++){x = 55 * j;y = 55 * i;putimage(x, y, &img[map[i][j]]);}}putimage(55 * 13, 0, &roleInfo);outtextxy(55 * 13 + 12, 100 - 8, role.RoleName);outtextxy(55 * 13 + 12, 165, intToWchar(role.LV));outtextxy(55 * 13 + 12, 214, intToWchar(role.JY));outtextxy(55 * 13 + 12, 336, intToWchar(role.HP));outtextxy(55 * 13 + 12, 383, intToWchar(role.MP));outtextxy(55 * 13 + 12, 475, intToWchar(role.Attrack));outtextxy(55 * 13 + 12, 520, intToWchar(role.Defender));outtextxy(55 * 13 + 12, 630, intToWchar(role.Yellow));outtextxy(55 * 13 + 12, 693, intToWchar(role.Bule));
}
至此,一张地图就画了出来,贴张图看看效果
C\C++开发的经典魔塔小游戏--(2)制作地图以及画出地图相关推荐
- C\C++开发的经典魔塔小游戏--(1)图形库的使用
最近突发奇想,想起了当年和小伙伴们一起奋斗在村里黑网吧的日子.于是乎,萌发了动手写一个小游戏的念头.这个经典的小游戏名字叫"魔塔".大致就是你是一个骑士什么的,深入魔塔拯救大妹子的 ...
- C\C++开发的经典魔塔小游戏--(4)楼层控制,背景音乐,个人元素
楼层切换是游戏中必不可少的一个元素,总不能一直待在某一层,这样就无法享受通关的快感,在原本的设想中,我打算画十层地图,并且每层地图都添加一些新的素材进去,后来发现,太过繁琐,于是这个游戏就成了一个半成 ...
- C\C++开发的经典魔塔小游戏--(3)主要逻辑处理,角色控制
对于一个游戏来说,最重要的是什么? 没错,是充钱,充钱,再充钱! 当然,游戏本身也要能动弹,不然钱充的不流畅. 所以,我们来看看如何流畅的处理逻辑. 对于一个界面化的小游戏来说,最主要的就是角色的移动 ...
- 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(3)
导语 上一期我们主要带大家写了勇士类,以及勇士与一些简单的地图元素接触时所触发的事件: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2) 这一期我们会带大家进一步复现我们的魔塔小 ...
- python3.7魔塔游戏_基于pygame的开发:魔塔小游戏开发
前言 第一次写博客,如果写的不好欢迎评论指正. 前端时间跟着廖雪峰大神的教程学习了python,本着"实践是检验真理的唯一标准",我尝试着使用pygame库来开发经典的策略RPG& ...
- 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2)
导语 上一期我们带大家完成了魔塔游戏每一层的初始化画面的制作: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(1) 这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容包括英雄类 ...
- Python游戏开发,Pygame模块,Python从零开始带大家实现一个魔塔小游戏
开发工具 Python版本: 3.7.4 相关模块: pygame模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 首先, ...
- Python游戏开发,Pygame模块,Python从零开始带大家实现魔塔小游戏
前言 这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容包括英雄类的定义与其基础行动的实现,行动过程中触发不同层的切换等功能. 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本: 3. ...
- 基于JavaSwing开发魔塔小游戏 课程设计 大作业
基于JavaSwing开发魔塔小游戏: (大作业) 开发环境: Windows操作系统 开发工具: Eclipse+Jdk1.6 运行效果图: 基于JavaSwing开发魔塔小游戏: (大作业 ...
最新文章
- OCA读书笔记(9) - 管理数据同步
- 4.6 explain 之 rows
- LOJ 121 「离线可过」动态图连通性——LCT维护删除时间最大生成树 / 线段树分治...
- timertask run函数未执行_图执行模式下的 TensorFlow 2
- Android -- 自定义ScrollView实现放大回弹效果
- Using APIs in Your Ethereum Smart Contract with Oraclize
- java日期格式化、解析
- 转载 电子商务关键数字优化(线上部分,中)
- ios mk上传文件到服务器,ios – 使用预签名URL将文件上传到AWS S3的代码有什么问题?...
- 【毕设选题】基于C51单片机的毕业设计题目项目汇总 - 500例
- PROE4.0抄数逆向点造型高级曲面建模教程
- Juniper 210 密码清不掉_iPhone 11 每次下载应用都需要输入密码怎么办?
- GSAP教程之Tween详解
- 手淘双十一系列(一) | 521 性能优化项目揭秘
- ipms综合管理系统的总结2
- linux 计费服务器,腾讯云服务器的实例计费问题
- 红米note4x开启root权限
- Hadoop权威指南(第三版)笔记——HDFS
- 路由器突然断网服务器无响应,突然断网了 怎样判断路由器是不是坏了?
- JAVA从一个.p12或.pfx文件中获取公钥和私钥
热门文章
- MATLAB许可证即将过期的解决办法
- 计算机专业对身体伤害大,长期对着电脑危害竟然这么大,太可怕了!IT职业要当心这4大疾病找上门来...
- 泰克示波器查眼图_泰克DSA71604C示波器眼图测试V1.0
- EF 后台登录+首页+忘记密码 列表
- java实现银行新用户现金业务办理(数据库)
- linux shell:字符串分割并反序输出
- 如何在联想Y430P安装Fedora24
- 毕业以后助学贷款怎么还
- (Matlab)基于网格搜素优化的支持向量机实现电力负荷预测
- 关于idea工具栏按钮的添加(以暂停键为例)