炸弹人

炸弹人只能在一个位置投放炸弹,炸弹能够同时向“上下左右”四个方向同时射去,但是不能穿墙,求炸弹人能够炸最多敌人的位置

 1 import java.util.Iterator;
 2 import java.util.LinkedList;
 3 import java.util.Scanner;
 4 import java.util.TreeSet;
 5 import java.util.Scanner;
 6 public class One {
 7     public static int f(int x,int y,char a[][]){
 8         int num=0;
 9             //向上
10             int tx=x,ty=y;
11             while(a[tx][ty]!=‘#‘){
12                 if(a[tx][ty]==‘G‘)num++;
13                 tx--;
14             }
15             //向下
16             tx=x;
17             ty=y;
18             while(a[tx][ty]!=‘#‘){
19                 if(a[tx][ty]==‘G‘)num++;
20                 tx++;
21             }
22             //向左
23             tx=x;
24             ty=y;
25             while(a[tx][ty]!=‘#‘){
26                 if(a[tx][ty]==‘G‘)num++;
27                 ty--;
28             }
29             //向右
30             tx=x;
31             ty=y;
32             while(a[tx][ty]!=‘#‘){
33                 if(a[tx][ty]==‘G‘)num++;
34                 ty++;
35             }
36         return num;
37
38     }
39     public static void main(String ags[]){
40         int n,m,p,q;//n,m为地图行列,p,q为小人游戏开始时的数组位置
41         int d[][]={{0,1},{1,0},{0,-1},{-1,0}};//方向移动控制
42         LinkedList<Note> list=new LinkedList<Note>();//用于存放所有可能达到的点
43         Scanner scanner=new Scanner(System.in);
44         System.out.println("请输入地图行列:");
45         n=scanner.nextInt();
46         m=scanner.nextInt();
47         char a[][]=new char[n][m];//存放地图
48         int book[][]=new int[n][m];//记录某点是否已经走过了
49         System.out.println("请输入地图:");
50         Scanner in=new Scanner(System.in);
51         for(int i=0;i<n;i++){
52             for(int j=0;j<m;j++){
53                 a[i][j]=in.next().charAt(0);
54             }
55             System.out.println("");
56         }
57         System.out.println("请输入小人初始位置:");
58         p=scanner.nextInt();
59         q=scanner.nextInt();
60
61         //开始试探所有可能的点
62         int tx,ty,max=0,m1=0,m2=0;//tx,ty为当前点扩展的数组行列号,max为记录当前最大能消灭敌人的数,m1,m2用来记录能消灭敌人最大数目的位置
63         list.add(new Note(p,q,f(p,q,a)));//将小人初始位置放入链表
64         book[p][q]=1;
65         while(!list.isEmpty()){//如果连比较不为空
66             for(int k=0;k<=3;k++){//四个方向探索
67                 tx=list.getFirst().x+d[k][0];
68                 ty=list.getFirst().y+d[k][1];
69                 if(a[tx][ty]==‘.‘&&book[tx][ty]==0){//如果该点为空的(即小人可以到达的),则将该点加入链表,并且能消灭的敌人数与max比较
70                     book[tx][ty]=1;
71                     list.add(new Note(tx,ty,f(tx,ty,a)));
72                     if(list.getFirst().n>max){
73                         max=list.getFirst().n;
74                         m1=list.getFirst().x;
75                         m2=list.getFirst().y;
76                     }
77                 }
78             }
79             list.removeFirst();
80         }
81         System.out.println("位置"+m1+","+m2+"能消灭最多敌人,数目为:"+max);
82     }
83 }
84 class Note{
85     int x,y,n;
86     Note(int x,int y,int n){
87         this.x=x;
88         this.y=y;
89         this.n=n;
90     }
91 }

炸弹人(广度优先搜索)

运行如下图所示:

时间: 2024-12-15 01:49:18

炸弹人的相关文章

炸弹人 之 N A B C D

团队开发之个人——NABCD理解 项目名称:炸弹人(app)N(need):    随着移动终端的发展,各类软件的需求必然会有长期的需求,而游戏类软件是不同年龄阶段的人共同的需求,我们将要开发的这款游戏就具有跨越年龄的特点,因此前景看好.A(approach):语言:python.lua.C++平台:VS2013引擎:cocos2d-x用户:各个院系认识的同学B(benefit):休闲益智,愉悦身心C(competitor)软件属于虚拟市场上的商品,资源,因为有利益的存在,竞争是不可避免的,面对

第四章 搜索(深度、广度搜索、全排列、走迷宫、再解炸弹人、宝岛探险、水管工游戏)

一.深度优先搜索DFS 深度优先搜索DFS的关键思想是:当下应该怎么做(每个方法都试一遍),这一步解决后,进入下一步,下一步的解决方法和这一步的解决方法是一样的 DFS的基本模型 void dfs(int step) { 判断边界 尝试每一种可能  for(i=1;i<=n;i++) { 继续下一步 dfs(step+1) } 返回 } 1.1全排列 1 //输入一个数n 2 //输出1-n的全排列 3 #include <stdio.h> 4 int n, book[10], a[10

炸弹人 意见汇总

经过查看其他组对我们的炸弹人游戏的评价意见,我总结出我们的游戏所味道的问题和不足的地方. 总结如下: 1.游戏太过于经典,没有特色,推广很难. 2.目前是PC端的,如何把它应用到android版. 3.游戏暂停和人物死亡时的继续游戏的问题需要解决. 4.关卡的难度没有控制,如何做出改动来让整个游戏循序渐进又不失节奏,不让人玩两关就感到“腻烦”,还真是有点难,多考虑考虑. 5.游戏模式单一,很难吸引人,需要开发出新的模式. 对于以上的问题,我们结合他们的建议进行了讨论. 下面是解决方案: 对于游戏

(NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们现在来依次看一下上篇中提到的各个方法,首先介绍的是updateStateLabel方法: #pragma mark MainScene游戏相关辅助方法 //更新主角状态标签,格式为:神速 无敌 爆裂 穿墙 穿弹 遥控 -(void)updateStateLabel{ NSString *state = [NSString stringWithFormat:@

(NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用plist列表文件来表示游戏数据 因为在这个炸弹人游戏中有很多不同的关卡,难度依次上升,所以对于每个关卡的数据我们必须存放在某个地方,有很多种保存方法,这里我们选择使用plist列表文件来保存每个关卡的数据. 选择Resources目录,在其中新建一个plist文件,命名为LevelsData.plist. 下面我们要想一想里面到底要存放神马数据. 大致有这些

炸弹人——NABCD分析

炸弹人——NABCD分析结果 N:需求:本软件应用于学生,学生可以在课余时间放松心情,缓解学习压力. A:做法:使用Cocosdx和Visual Studio 2010结合,之间用Python使其结合. B:好处/成本:可以在休闲时间放松心情,打发时间,用户可以在朋友圈与好友一起交流游戏心得,可以获悉大家近期都在玩什么,可以互相联机玩. C:竞争:市场上这类游戏有不少,虽有创新,但竞争性不大. D:交付:把软件放到手机软件下载平台上,或向同学校友推销.

C语言写炸弹人小游戏

陆续改了半个月,不断更改游戏目的,结合了老鼠走迷宫和贪吃蛇游戏,终于在昨天凌晨2点写好了我的炸弹超人游戏.基于Windows图形界面,用C语言编写.虽然并不复杂,但收获颇多. 文件1:winapp.cpp,指导老师所给框架及自己写的主函数: #include <windows.h>LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;#include "winapp.h"#include "myfile.h&

(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博文的地址在: (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示 本篇接着上篇介绍炸弹人游戏中的游戏主角的基本构成,游戏主角自然是我们的炸弹人了. 因为主角会在游戏场景中各个方向行走,所以我们需要先准备其对应的图片资源: 如各位所见除了普通的移动动作,我还选择了主角被人道毁灭和无敌

团队项目--炸弹人之NABCD分析

我认为这款软件最大的特点就是简单实用,能供许多年龄段的人玩.就此特点进行NABCD分析. Need(需求):如今,许多人有很大的压力,需要娱乐和运动来调解心理压力,炸弹人作为一款休闲益智类的游戏,可以让人们放松心情,缓解生活中的压力.另外游戏又添加了新的等级和难度,玩家可以挑战更高的游戏难度. Approach(做法):主要的技术有cocos2dx和python语言,开发平台是visual studio 2010. Benifit(好处):每个人都可以在闲暇时间里玩这套游戏,可以与玩家交流玩游戏