数据结构(c++)--炸弹人游戏(BFS)
找出炸弹放在哪里消灭的敌人最多
#include<iostream>
using namespace std;
char a[20][20];
struct note {int x;int y;
};int getnum(int i,int j){int p=i, q=j, sum = 0;//向下统计可以消灭的敌人数(炸弹不能穿墙)while (a[p][q] != '#') {if (a[p][q] == 'G')sum++;p++;}//向上统计可以消灭的敌人数(炸弹不能穿墙)p = i; q = j;while (a[p][q] != '#') {if (a[p][q] == 'G')sum++;p--;}//向左统计可以消灭的敌人数(炸弹不能穿墙)p = i; q = j;while (a[p][q] != '#') {if (a[p][q] == 'G')sum++;q--;}//向右统计可以消灭的敌人数(炸弹不能穿墙)p = i; q = j;while (a[p][q] != '#') {if (a[p][q] == 'G')sum++;q++;}return sum;
}
//起点开始四周扩展,计算哪些点是小人可以到达的们可以到达再放置炸弹计算消灭的敌人数;
int main() {struct note que[401];//假设地图20*20int book[20][20] = { 0 };int head, tail,i,j,startx,starty,m,n,k,tx,ty,bigsum=0, newsum,newtx,newty;int next[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };//输入n行m列cin >> n >> m;//输入起点//矩阵输入数据cin >> startx >> starty;for (i = 0;i < n;i++)for (j = 0;j < m;j++)cin >> a[i][j];head = 1;tail = 1;que[tail].x = startx;que[tail].y = starty;tail++;book[startx][starty] = 1;while (head < tail) {for (k = 0;k <= 3;k++) {tx = que[head].x + next[k][0];ty = que[head].y + next[k][1];if (tx<0 || tx>n-1 || ty<0 || ty>m-1) {continue;}if (a[tx][ty] == '.'&&book[tx][ty] == 0) {book[tx][ty] = 1;que[tail].x = tx;que[tail].y = ty;tail++;newsum = getnum(tx, ty);if (newsum > bigsum) {bigsum = newsum;newtx = tx;newty = ty;}}}head++;}cout << newtx << " " << newty << " " << bigsum;return 0;}
样例输入:
13 13 3 3
#############
#GG.GGG#GGG.#
###.#G#G#G#G#
#.......#..G#
#G#.###.#G#G#
#GG.GGG.#.GG#
#G#.#G#.#.#.#
##G...G.....#
#G#.#G###.#G#
#...G#GGG.GG#
#G#.#G#G#.#G#
#GG.GGG#G.GG#
#############
样例输出:
7 11 10
数据结构(c++)--炸弹人游戏(BFS)相关推荐
- 炸弹人游戏开发系列(6):实现碰撞检测,设置移动步长
前言 上文中我们实现了"玩家控制炸弹人"的功能,本文将实现碰撞检测,让炸弹人不能穿过墙.在实现的过程中会发现炸弹人移动的问题,然后会通过设置移动步长来解决. 说明 名词解释 具体状 ...
- 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)
数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...
- (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...
- 数据结构---邻接表的BFS
数据结构-邻接表的BFS 原理:参考趣学数据结构 代码: 队列代码: #pragma once #define elemType int #define N 100 #include<stdli ...
- (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用plist列表文件来表示游戏数据 因为在这个炸弹人游戏中有很多 ...
- (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计
在这新的系列中,我们来尝试完成一款经典的游戏:炸弹人 这是以前红白机上的炸弹人,由于游戏可玩性强,玩法又简单,在后面的机型上陆续推出了很多款续作. 在随后的触屏设备上也出现了炸弹人的模拟版,用的是模拟 ...
- Bombermaaan-最好的开源炸弹人游戏(支持AI人机对战,SFC复刻版)
关键词:炸弹人源代码,炸弹人AI算法 目录 一.游戏截图 二.基本信息 三.游戏设计介绍 四.道具说明 五.下载 一.游戏截图 二.基本信息 语言:C++ 平台:Windows / Lin ...
- C#游戏开发之炸弹人游戏开发
笔者第一次发表文章,考虑不全多多包涵.也想借此机会和大家交流游戏开发.希望大神能指点一二.笔者是利用VS2010编译器,下面进入正题: 利用C#控件来实现2D游戏开发还是比较方便.先从总体上介绍炸弹人 ...
- 炸弹人游戏开发系列(8):放炸弹
前言 上文中我们加入了1个敌人,使用A*算法寻路.本文会给我们的炸弹人增加放炸弹的能力. 说明 名词解释 xx类族 是指以xx为基类的继承树上的所有类. 本文目的 实现"放炸弹"功 ...
- 炸弹人游戏开发系列(2):初步设计
前言 有了上文的初步需求分析后,就可以进入初步设计阶段了. 本文目的 得到初步的领域模型,对层和模块进行初步的划分. 本文主要内容 技术选择 开发环境 外部依赖 代码结构 开发方法 初步领域模型 高层 ...
最新文章
- Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易
- 2021年春季学期-信号与系统-第四次作业参考答案-第十小题
- 计算机文化基础教程教案,新版《计算机文化基础》教案.doc
- 日期格式校验方法工具
- vueJs开发音乐播放器第二篇(点击歌单跳出详情页)
- 快速筛选数据集中某列特征符合某种规律的所有数据集
- 网页图表Highcharts实践教程之标签组与载入动画
- 惊呆!骑士一天收入过万?顺丰同城回应:用户打赏约7856元
- LeetCode算法题-Design LinkedList(Java实现)
- python字符串split()函数
- VC ++6.0英文版常用菜单使用参考【转载整理】
- 干货 | 利用SPSS进行高级统计分析第二期
- Python路飞学城老男孩内部书籍,Python全栈开发实战pdf
- MQL5:创建自己的指标
- 7628刷breed_H大的最新版Breed不死u-boot
- Busting Frame Busting
- hibernate创建配置遇到问题:!-- https://mvnrepository.com/artifact/javassist/javassist -- dependency
- [Audacity][帮助手册][手册内容]认识Audacity
- 2021年4月品牌精选海报合集
- Java面试题2017版
热门文章
- Dmc雷赛板卡仿写(七):日志管理
- uwp 能否运行于Linux,UWP,实现跨平台的关键
- ALIENTEK 战舰ENC28J60 LWIP和UIP补充例程(LWIP WEB有惊喜)
- Asp.net 处理程序(第五篇)
- darkc0de archive
- Javscript 高阶函数(上)
- 2021计算机科学与技术毕业论文,关于计算机科学与技术学院2021届本科生毕业论文(设计)知网检测的通知...
- 暴风影音2017年校招笔试题-选择题
- ZipArchive压缩文件夹[转载]
- ajax请求-IE缓存处理