㈠ 掃雷中佈雷的演算法
首先,你要先定義一個n*n的二維數組,該數組的i-1到i+1,j-1到j+1除去i,j本身。值為周圍有幾個雷。如果該數組的值為10則本身是雷。
接著,你自動生成m個雷,讓這m個雷分布在界面上。被選中的值i,j點的值為10,從i-1到i+1,從j-1到j+1的值都+1;
第三,在界面上想辦法區分出n*n個格子,然後把格子的坐標和二維數組關聯起來
㈡ 掃雷演算法
右擊一下已點開的地方,動兩格時,可能無地雷。
㈢ 掃雷點到空格時的演算法 跪求
從手工點開的這個空格進行處理,按上右下左或你自己定義的一個順序來判斷相應位置的格式是否是空格且未被點開,如果不是,則跳過,如果是,則將其自動點開,同時把這幾個位置加入隊列後續處理。
簡單的流程圖示意:
當前位置是空白位置?----否--->非空白的處理
|
|是
|
V
加入隊列
|
V
+--->隊列為空?-------->是--->結束
||
||否
||
|V
|第一個元素出隊
||
|V
|點開該元素所指的位置
||
|V
|上左下右的位置如果是空白且未點開則入隊
||
--------+
上面是非遞歸的方案,遞歸方案則更容易了:
偽代碼演算法描述如下:
Click(pos)//點開pos這個位置
{
//IsClicked()判斷是否是已經點開的格子
if(IsClicked(pos))
return;
//IsBlank()判斷是否是空白格子
if(!IsBlank(pos))
{
點開非空白格子的處理
}
//下面是點開空白格子的處理
ClickBlank(pos);
}
ClickBlank(pos)
{
if(!IsBlank(pos))
rerurn;
if(IsClicked(pos))
return;
//下面對四個方向的格子進行自動點開
//你需要計算四向的格子位置,無效的直接返回
ClickBlank(pos上面的格子);
ClickBlank(pos右面的格子);
ClickBlank(pos下面的格子);
ClickBlank(pos左面的格子);
}
㈣ 請教掃雷演算法
掃雷的演算法有兩種,一種是老手使用的(憑經驗操作),一種是新手使用的,我現在介紹一下老手使用的演算法:
1.點第一個空
2.若點開侍並的是一個格,則繼續第1步
若點開的是一片(打開數大於等於9),則進行第3步
3.觀察一片格的邊角,
若有一個格數字與它周圍的空格數相等,在空格處標雷並在兩側格子上同時左右鍵雙擊
若沒有這種情況則觀察有無[經驗公式]
這樣做直到不能再找到為止(一般能完成初、中級或高級的50%了)進行第4步
4.檢查邊角,重復第1步
—————
註:
[經驗公式]:121組合,雷在老裂跡2上
1221組合,兩個雷在2上
還有好多復雜的,得自己總結
至於掃雷圖形成的演算法,是根據你點開的第一個格在哪裡,總之第一個雷總不能在那裡。在點開後萬源哪分之幾秒里形成雷圖,一切都是隨機的,不過有一點對於初級來說有十幾萬分之一的幾率打開3BV=1的圖,也就是說一下就開了。(3BV的意思是贏得這盤掃雷所需要的最少左鍵點擊數,比如一大片的3BV就是1,而一個沒在一大片的邊緣的格的3BV也是1,)也就是說,打開一大片所形成的那些邊緣的格都不算,3BV是目前評價難易程度的最好方法,這也是隨機,初級在1~71,中級大概25~180,高級100~250
㈤ 掃雷演算法如何避免非推理情況
無法避免。游戲《掃雷》的基本算滲睜法就是激喊困通過非推理得出的,因此無法避免非推理情況。《掃雷》是一款大眾類的益智小游戲,於1992年發行明念。
㈥ 掃雷怎麼推理又怎麼計算
1、推理方法:
掃雷中的1,2,3,4代表在這個數字周圍的8個方塊里有地雷的數量,如是一就代表有一個;二就代表有2個。
如:對一條未挖開的方塊組成的邊,如果它旁邊的數字為「232」,則表示這三個數字旁邊的三個方塊都是地雷。
2、通常玩法是先亂點,點出一塊較大的無雷區域,再根據無雷區域邊上的數字判斷地雷的位置測出去,在你確定有地雷的方塊上點右鍵插上紅棋。
把全部的地雷上都正確的插上紅旗就可以贏。
3、計算方法就根據上述規則在游戲中自行嘗試。由於每次開始游戲後的雷的位置不同,所以需要多進行游戲,多摸索,只要掌握游戲方法就可以找出所有雷了。
掃雷口訣
一:基本定式不要忘。
二:滑鼠點擊不要快。
三:就近猜雷把心橫。
四:猜雷猜錯不要悔。
五:碰上好局不要慌。
㈦ java掃雷遞歸演算法
在掃雷游戲中,如何實現使Field處於打開狀態。如果它是地雷,打開所有Field;如果它不是地雷,並且它四周也沒有地雷,將其四周Field也打開。
//雷的數目如果是0,可以打開當前Field四周的Field
if (getField(x, y).getMineValue() == 0) {
List<Field> arroundList = getAround(x, y);
for (Field field : arroundList) {
//遞歸調用open方法,
open(field.getX(), field.getY());
}
}
Open方法指的就是你指定的打開方法,這里通過0或者數字1來定義是否為雷,如果是1則是
雷。希望能提示到你。主要就是使用到啦增強型for循環
㈧ 掃雷公式及詳解是什麼
掃雷公式是一夾二,一有雷。二夾一,心有雷。二夾三,全有雷。 二二手明手邊,都有雷。三連一,中有雷。四連一,邊有雷。
詳解:
數字表示周圍臨近8個格子雷的數量,如此數字為2,則周圍8個格子一共會有2個雷。
基礎確定雷:基於上規則,若周圍空地=數字,則空地均為【基礎確定雷】。
等效:數字減去周圍雷數為【等效數字】,如此3確定周圍存有1雷,則等效為2。
等效在後續公式套用中會起到很關鍵的作用,基本來說,就是將一些不符合公式的情況,變為符合公式的情況。
一二一,邊有雷:出現121列時,且2僅有一側空地(3格),則如圖,2的斜側均為確定雷(並且2正側方確定無雷)。由於「2122」的2周圍有一個確定雷,則變化為「2121」形式,套用上公式。
二連一,邊有雷:出現「a21b」時,a正側為確定雷(並且b正側確定無雷)。
一種等效變換的二連一:此情況中「314旗」,由於4側有2雷,則4等效為2,變換為「312x」,套用上公畢嫌式。
1221,二側雷:出現「1221」時,2上確定雷。
二夾一,心有雷:在「x212x」時,1正側方確定雷(並且1斜側方確定無雷)。
如此情況,盡管無法確定雷的位槐絕置,但是可確定上方三格無雷。原理是由於雷一定出現在第二行,因此第二行的1已經被第二行滿足,則上方無雷。而再推進一格,此時第2行的1被第三行滿足,則1行2行均無雷 。
㈨ 關於掃雷游戲的一個演算法
用廣度優先搜御穗皮索就可以了,最開始考慮當前打開的第一個格子,如果周圍8個中含有族羨雷,那麼這個格子標上數字,結束。如果周圍八個都沒有雷,那麼這個格子翻開,再鎮差用同樣的操作去處理周圍的八個格子,你用一個隊列保存這些需要判斷的格子,依次處理就可以了。
㈩ 二年級下冊數學掃雷游戲用什麼方法算,規則是,點開的方格中的數是幾,就表示周圍的八個方格里有幾個地
游戲規則:掃雷主要需要借鑒邊上的數字,掃雷邊上的數字代表其周圍3×3區域中的地雷早散腔數。
在判斷出不是雷的方塊上按下左鍵,可以打開該方塊。如果方塊上出現數字,則該數字表示其周圍3×3區域中的地雷數,一般為8個格子,對於邊塊為5個格子,對於角塊為3個格子。
所以掃雷中最大的數字為8;如果方塊上為空,相當於0,則可以遞歸地打開與空相鄰的方塊;如果不幸觸雷,則游戲結束。
游戲操作按鍵:
左鍵單擊:在判斷出不是雷的方塊上按下左鍵,可以打開該方塊。如果方塊上出現數字,則該數字表示其周圍3×3區域中的地雷數(一般為8個格子,對於邊塊為5個格子,對於角塊為3個格子。所以掃雷中最大的數字為8);如果方塊上為空(相當於0),則可以遞歸地打開與空相鄰的方塊;如果不幸觸雷,則游戲結束。
右鍵單擊:在判斷為地雷的方塊上按下右鍵,可以標記地雷(顯示為小紅旗)。重復一次或兩次操作可取消標記(如果在游戲菜單中勾選了「標記(?)」,則需要兩次操作來取消標雷)。
雙擊:同時按下左鍵和右鍵完成雙擊。當雙擊位置周圍已標記雷數等於該位置數字時操作有效,相當於對該數字周圍未打開的方塊均進行一次左鍵單擊操作。地雷未標記完全時使用雙擊無效。若數字周圍有標陸衫錯的地雷,則游掘閉戲結束,標錯的地雷上會顯示一個「 ×」。