QQ游戏连连看

QQ游戏连连看

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte

总提交:50            测试通过:19

描述

众所周知,lfq198502非常喜欢玩连连看游戏。连连看游戏 ,只要将相同花色的两张牌用三根以内的直线连在一起就可以消除, 规则简单容易上手 。

操作:第一次使用鼠标点击棋盘中的棋子,该棋子此时为“被选中”,以特殊方式显示;再次以鼠标点击其他棋子,若该棋子与被选中的棋子图案相同,且把第一个棋子到第二个棋子连起来,中间的直线不超过 3 根,则消掉这一对棋子,否则第一颗棋子恢复成未被选中状态,而第二颗棋子变成被选中状态。

我们可以把连连看的界面想象成一个10×10的方格,每个方格内都放有一种类型的图案或者为空,简单起见,我们用不同的字符代表不同的图案,空格表示没有图案。你的任务是,给出游戏的初始界面,和游戏过程中lfq198502鼠标点击的坐标记录,判断他在这些操作后是否将图案全部消完。

输入

输入包含多组测试情况,每组情况数据包含两部分。

第一部分:10行字符串,每行包含10个字符(空格表示该方格为空,其他字符表示方格中的有用该字符表示的图案),表示游戏的初始界面。

第二部分:首先是一个整数n,表示lfq198502的鼠标点击次数;接下来的n行,每行两个整数x,y(1≤x≤10, 1≤y≤10),表示鼠标点击位置所在的行和列。

输出

每组测试情况输出一行。如果lfq198502能够将图案全部消除,输出“Yes,all patterns are eliminated!”;否则,输出“No,m pattern(s) are left!”。

样例输入

2

abccba   x

bax

ab   8

8

@        (

(   @

18

1 3

1 4

1 2

1 5

1 1

1 6

1 10

2 3

2 2

3 2

3 3

2 1

3 7

4 10

8 1

10 7

10 3

8 10

ab       8

ba

8

@

@

8

1 1

2 2

1 2

2 1

1 10

4 10

8 1

10 7

样例输出

Yes,all patterns are eliminated!

No,4 pattern(s) are left!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
char map[15][15];
int oldx,oldy,newx,newy;
int fx[]={1,0,-1,0,1};
int vis[15][15];
struct node
{
    int x,y;
    int w;
    int fx;
};
int bfs()
{
    node a,b;
    a.x=oldx;a.y=oldy;
    a.w=0;a.fx=-1;
    memset(vis,-1,sizeof vis);
    if(map[a.x][a.y]!=map[newx][newy])
    {
        oldx=newx;oldy=newy;
        return 0;
    }
    vis[a.x][a.y]=0;
    queue<node>q;
    q.push(a);
    while(!q.empty())
    {
        a=q.front();
        q.pop();
        for(int i=0;i<4;i++)
        {
            b.x=a.x+fx[i];
            b.y=a.y+fx[i+1];
            if(b.x<0||b.x>11||b.y<0||b.y>11)continue;
            if((a.fx+i)%2==0||a.fx==-1)
                b.w=a.w;
            else
                b.w=a.w+1;
            b.fx=i;
            if(b.w>2)continue;
            if(b.x==newx&&b.y==newy)
            {
                map[oldx][oldy]=' ';
                map[newx][newy]=' ';
                oldx=0;oldy=0;
                return 2;
            }
            if(map[b.x][b.y]!=' ')continue;
            if(vis[b.x][b.y]==-1||vis[b.x][b.y]>b.w)
            {
                vis[b.x][b.y]=b.w;
                 q.push(b);
            }
        }
    }
    oldx=newx;oldy=newy;
    return 0;
}
int main()
{
   int t;
   scanf("%d",&t);

   while(t--)
   {
       memset(map,' ',sizeof map);
       getchar();
       int i,j,x,y,k,m=0,s=0;
       for(i=1;i<=10;i++)
       {
           gets(map[i]+1);
           for(j=1;j<=10;j++)
            if(map[i][j]!=' ')
            s++;
       }
       /*cout<<endl;
       for(i=1;i<=10;i++)
        cout<<map[i]<<endl;*/
        //cout<<s<<endl;
        oldx=0;oldy=0;
        scanf("%d",&k);
        for(i=0;i<k;i++)
        {
            scanf("%d%d",&x,&y);
            if(map[x][y]==' ')
            {
                oldx=0;oldy=0;
                continue;
            }
            if((oldx==0&&oldy==0)||(oldx==x&&oldy==y))
            {
                oldx=x;oldy=y;
            }else{
                newx=x;newy=y;
                m += bfs();
                //cout<<m<<endl;
            }
        }
        if(m==s)
        {
            printf("Yes,all patterns are eliminated!\n");
        }else{
            printf("No,%d pattern(s) are left!\n",(s-m));
        }
   }
    return 0;
}

QQ游戏连连看

时间: 2024-08-26 17:28:40

QQ游戏连连看的相关文章

用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器

平时不怎么玩游戏,有时消遣就玩玩QQ里的2D桌球,但是玩的次数少,不能像骨灰级玩家一样百发百中,肿么办呢?于是某天突发奇想,决定自己也来做个“外挂”.说是外挂,其实只是一个瞄准器,毕竟外挂是修改别人的软件,有点违法的意思,况且自己还没有能力去那么做,所以自己还是弄个瞄准器,做做弊,过下小瘾,同时也提高一下自己的编程能力. 起初(也就是半年前),自己尝试做一个瞄准器的初始版本,用C#做,想法很简单: Step1.把鼠标移到洞口,获取鼠标位置: Step2.将鼠标放到要击打的球的圆心上,获取鼠标当前

转发 :QQ游戏百万人同时在线服务器架构实现

QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国. 服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单

结对项目-小游戏连连看

我与我的结对同学作的是连连看小游戏,由王庆祥同学进行编码,我来检查以及运行监测,最后得结果如下图: 最后附上我的GitHub地址:https://github.com/jiaweihao/Test.git

2014中秋节,用java为QQ游戏美女找茬写辅助

引子 今年中秋闲在家,总要找点事做. 前几天开始学python,很早之前就有计划拿下这门语言了,可惜一直拖到现在……不可否认,我也是个拖沓症患者.在学习python的过程中,我很想了解这门语言适合做什么,能做什么,然后,从互联网海量信息中得知,python不仅适合作为程序员学习第一门语言,也是黑客喜欢的语言,python被称为各种语言的”胶水语言“.在这个过程中,无意间看到了一篇python前辈的博客——用python写QQ美女找茬游戏外挂(点击跳转查看).对于外挂,从没涉足,也完全不了解,但那

巧妙的Jq仿QQ游戏导航界面学习

先贴上源代码 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>仿腾讯游戏首页小幻灯片jquery插件</title> 6 7 <style> 8 img{border:0px;font-size:0;} 9 10 .banner{position:relative;width:960px;height:170px

android实现QQ游戏大厅一样的启动第三方APP

之前试验了一下统一登陆,用contentprovide可以实现数据共享,但现在遇到一个问题: 启动第三方APP的时候,有两种情况: 一:第三方APP已经启动 这情况就应该类型于按桌面快捷方式一样重现第三方APP的界面,而不是启动一个新的界面. 二:第三方APP未启动,这类型应该启动一个新的第三方APP,但不能在本APP的task上面. 刚测试了好几种flag搭配,现将实现方式呈现如下: ComponentName componetName = new ComponentName("com.xx.

c#QQ连连看辅助

近来无事,写个连连看辅助,下面先说下思路吧(口才不行,见谅哈) 游戏辅助有三种方法,一种是读内存,这个不知道怎么分析,还有一种是获取封包,这个分析起来复杂,最后一种是图片识别再分析,这里采用最后一种 图片识别来做. 设计UI如下 连连看开始>启动辅助>得到游戏窗口信息(位置,大小)>将游戏窗口置顶(其实就是激活状态),并恢复默认状态>截取整个屏幕保存起来>得到游戏区域的坐标信息>分割游戏区域将每一块的大小,位置,并在其上面取9个点的颜色值,存入到List<List

【好玩的应用】QQ连连看辅助工具

自己学了这么久的C语言,但没有写出过什么可以用的东西来,总觉得心里不爽.这几天实在是不想干正事,在网上瞎逛逛,结果发现有人写了连连看的外挂.顿时觉得这很有意思啊.于是把代码下载下来,捣鼓了捣鼓.发现还挺简单的,于是自己研究了一下,仿照着写了一个. 外挂的主要思路:获取窗口位置,获取屏幕信息对图片编码,查找可消除对,模拟鼠标点击来消除. 1.外观: 这个是用MFC做的,我自己是一点MFC都不会的,开始在界面上卡了好久,一直在网上找MFC的教程.但是网上的教程都大多扯些杂七杂八的东西,看了很久都不知

C#_自动测试2_连连看外挂

GUI自动化测试和做外挂的原理很相似,都是模拟用户的鼠标和键盘操作, 给自己的程序写自动化就是做测试,给别人的程序写自动化就是外挂了. 本文使用的技术也同样适用制作“对对碰”,"找茬" 之类游戏的外挂. 阅读目录 QQ连连看外挂实现原理 GUI自动化测试的原理 什么是句柄 P/Invoke机制 获取游戏窗体的句柄 分析游戏窗口 对游戏窗口进行截图 根据游戏规则来写算法 模拟鼠标点击 源代码下载 QQ连连看外挂实现原理 1. 先调用Win32 API获取"连连看"游戏