日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

炸弹人游戏

發(fā)布時(shí)間:2023/12/19 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 炸弹人游戏 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、游戲規(guī)則

你只有一枚炸彈,但是這枚炸彈威力超強(qiáng)(殺傷距離超長(zhǎng),可以消滅殺傷范圍內(nèi)所有的敵人)。請(qǐng)問(wèn)在哪里放置炸彈才可以消滅最多的敵人?

二、題目分析

我們先將這個(gè)地圖模型化。墻用#表示,敵人用G表示,空地用 . 表示(當(dāng)然如果你想換成其他的符號(hào)也可以),炸彈只能放在空地上。

#############
#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#
############# 

首先我們需要用一個(gè)二維字符數(shù)組來(lái)存儲(chǔ)這個(gè)地圖
分別統(tǒng)計(jì)上下左右四個(gè)方向上可以消滅的敵人數(shù)

向另外幾個(gè)方向進(jìn)行統(tǒng)計(jì)的坐標(biāo)變化如下:

注意,坐標(biāo)(x,y)指的是第x行第y列。

//向上統(tǒng)計(jì)可以消滅的敵人數(shù)
while(a[x][y]!='#')  //判斷是不是墻,如果不是墻就繼續(xù) 
{
    if(a[x][y]=='G')  //如果當(dāng)前點(diǎn)是敵人 
      sum++;  //計(jì)數(shù) 
    x--;  //否則繼續(xù)向上統(tǒng)計(jì) 
}
//向下統(tǒng)計(jì)可以消滅的敵人數(shù)
while(a[x][y]!='#')
{
    if(a[x][y]=='G')
        sum++;
    x++;  //繼續(xù)向下統(tǒng)計(jì) 
}
//向左統(tǒng)計(jì)可以消滅的敵人數(shù)
while(a[x][y]!='#')
{
    if(a[x][y]!='G')
        sum++;
    y--;  //繼續(xù)向左統(tǒng)計(jì) 
}
//向右統(tǒng)計(jì)可以消滅的敵人數(shù)
while(a[x][y]!='#')
{
    if(a[x][y]!='G')
        sum++;
    y++;  //繼續(xù)向右統(tǒng)計(jì) 
}

接下來(lái)只需要統(tǒng)計(jì)在每一個(gè)空地上放置炸彈可以消滅的敵人總數(shù)。
最終輸出消滅敵人數(shù)最多的那個(gè)空地的坐標(biāo)即可。

三、代碼如下

    char a[20][21];
    int i,j,sum,map=0,p,q,x,y,n,m;
    scanf("%d %d",&n,&m);  //n表示有多少行字符,m表示每行有多少列 
    
    for(i=0;i<=n-1;i++)  //讀入n行字符 
        scanf("%s",a[i]);
        
    for(i=0;i<=n-1;i++)
    {
        for(j=0;j<=m-1;j++)
        {
            if(a[i][j]=='.')  //判斷這個(gè)點(diǎn)是不是平地,是平地才可以被放置炸彈 
            {
                sum=0;  //用來(lái)計(jì)數(shù),表示可以消滅的敵人數(shù),需要初始化 
                x=i;y=j;  //向上統(tǒng)計(jì)可以消滅的敵人數(shù) 
                while(a[x][y]!='#')  //判斷是不是墻,如果不是墻就繼續(xù) 
                {
                    if(a[x][y]=='G')  //如果當(dāng)前點(diǎn)是敵人 
                        sum++;  //計(jì)數(shù) 
                    x--;  //否則繼續(xù)向上統(tǒng)計(jì) 
                }
                
                x=i;y=j;  //向下統(tǒng)計(jì)可以消滅的敵人數(shù) 
                while(a[x][y]!='#')
                {
                    if(a[x][y]=='G')
                        sum++;
                    x++;  //繼續(xù)向下統(tǒng)計(jì) 
                }
                
                x=i;y=j;  //向左統(tǒng)計(jì)可以消滅的敵人數(shù) 
                while(a[x][y]!='#')
                {
                    if(a[x][y]!='G')
                        sum++;
                    y--;  //繼續(xù)向左統(tǒng)計(jì) 
                }
                
                x=i;y=j;  //向右統(tǒng)計(jì)可以消滅的敵人數(shù) 
                while(a[x][y]!='#')
                {
                    if(a[x][y]!='G')
                        sum++;
                    y++;  //繼續(xù)向右統(tǒng)計(jì) 
                }
                /*更新map的值*/ 
                if(sum>map)  //如果當(dāng)前點(diǎn)所能消滅的敵人總數(shù)大于map 
                {
                    map=sum;  //則更新map 
                    p=i;  //用p,q記錄當(dāng)前點(diǎn)的坐標(biāo) 
                    q=j;
                }
            }
        }
    }
    
    printf("將炸彈放置在(%d,%d),最多可以消滅%d個(gè)敵人
",p,q,map);
    return 0; 

總結(jié)

以上是生活随笔為你收集整理的炸弹人游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。