炸弹人再现江湖

// 炸弹人2.0.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。
//
#include “pch.h”
#include
using namespace std;
int mx, my; //记录最多的位置的坐标
const int m = 13;
const int n = 14;
int max = 0; //用于记录最高值
int b[m][n]; //用于标记
char a[m][n] =
{
“#############”,
“#ooaooo#oooa#”,
“###a#o#o#o#o#”,
“#aaaaaaa#aao#”,
“#o#a###a#o#o#”,
“#ooaoooa#aoo#”,
“#o#a#0#a#a#a#”,
“##oaaaoaaaaa#”,
“#o#a#o###a#o#”,
“#aaao#oooaoo#”,
“#o#a#o#o#a#o#”,
“#ooaooo#oaoo#”,
“#############”
}; //游戏地图(#表示墙体,a表示空白,o表示敌人)
int getsum(int h, int l) //求可以消灭的敌人总数
{
int i,sum=0;
for (i = l - 1; i > 0; i–) //左边
{
if (a[h][i] == ‘o’)
++sum;
else if (a[h][i] == ‘a’)
continue;
else
break;
}
for (i = l + 1; i <= 12; i++) //右边
{
if (a[h][i] == ‘o’)
++sum;
else if (a[h][i] == ‘a’)
continue;
else
break;
}
for (i = h - 1; i > 0; i–) // 上边
{
if (a[i][l] == ‘o’)
++sum;
else if (a[i][l] == ‘a’)
continue;
else
break;
}
for (i = h + 1; i <= 12; i++) //下边
{
if (a[i][l] == ‘o’)
++sum;
else if (a[i][l] == ‘a’)
continue;
else
break;
}
return sum;
}
void bfs(int x,int y)
{
int k, nx, ny, sum = 0; //用于求和
int q[4][2] = { {0,1},{1,0},{0,-1},{-1,0} }; //用于后面的方向的切换
sum=getsum(x, y);
cout << “行:” << x << “列:” << y << “敌人:” << sum<<endl;
if (sum > max)
{
max = sum;
mx = x;
my = y;
}

for (k = 0; k <= 3; k++) //分别向四个方向
{
nx = x + q[k][0];
ny = y + q[k][1];
if (nx<0 || nx> m - 1 || ny<0 || ny> n- 1)
continue;
if ((a[nx][ny] == ‘a’)&&(b[nx][ny]!=1))
{
b[nx][ny] = 1;
bfs(nx, ny);
}
}
}
void main()
{
int startx, starty; //初始炸弹人位置
cout << “请输入初始炸弹人位置:” << endl;
cin >> startx >> starty;
b[startx][starty] = 1;
mx = startx;
my = starty;
max = getsum(mx, my);
cout << “max” << max << endl;
cout << “开始进行游戏!” << endl;
bfs(startx, starty);
cout << “在” << mx << “和” << my << “位置消灭敌人最多,” << “为” << max << “个”;
}
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值