我懂你的心

遊戲介紹

策略分析

進階玩法

結語

遊戲介紹

玩家在出現的二十四張圖片中先將一張圖片記在心中,並依每次所展現的圖片組中回答自己所選的圖片在不在出現的圖片組中,當玩家回答玩所有的圖片組後,電腦會猜出玩家心中所想的那張圖片,並提供遊戲進行的所有過程供玩家檢驗及回溯。

策略分析

表面上是藉由玩家對於每一次圖片出現是否包含玩家所選取的圖片來判斷玩家心中所選的圖片是哪一張,但事實上其中包含了二進位的算法及圖片的組成規則。

每一張圖片在電腦中都是以一個數字來編號,其順序是1到24,因此只要計算後的結果是哪一個數字,電腦就可以顯示出相對應的圖片,讓玩家看見自己心中所選定的圖片,因此以下的說明將以數字來進行解說。

首先先介紹一下二進位數系的組成,因為每一個位置遇到2就要進位,因此二進位數系是以0和1組成,以下列出1到24的二進位和十進位的對照表

十進位  二進位

十進位

二進位

十進位

二進位

十進位

二進位

十進位

二進位

十進位

二進位

1

00001

6

00110

11

01011

16

10000

21

10101

2

00010

7

00111

12

01100

17

10001

22

10110

3

00011

8

01000

13

01101

18

10010

23

10111

4

00100

9

01001

14

01110

19

10011

24

11000

5

00101

10

01010

15

01111

20

10100

25

11001

而當某一個數字在二進位的哪一個位置有1時,就會在那一組的圖片中出現,因為五個位置的二進位就可以表示完24,因此只要出現五次圖組就可以決定玩家是選了哪一個圖。舉例來說,當玩家選的是代表17的圖片,那麼代表17的這張圖片就會在第一組和第五組出現,其他的圖組它就不會出現,而玩家所回答的結果就會是(在裡面---不存在---不存在---不存在---在裡面),如此一來是否和代表17這個數字的二進位的組成很相似呢!,因此只要再透過一個簡單的計算16x1+8x0+4x0+2x0+1x1=17,立刻就可以知道玩家所選的是代表17的圖片,並且也可以判斷出玩家是否亂選。再舉一例,如果玩家每一圖組全部選「在裡面」,如(在裡面---在裡面---在裡面---在裡面---在裡面),經過公式一計算16x1+8x1+4x1+2x1+1x1=31,超過24因此可以斷定玩家任意亂選,因此電腦會主動向玩家提出警告,但為了避免是玩家的誤觸,因此在最後的結果會將玩家的回答過程一併列出,以方便玩家自我檢驗。

根據以上的規則,將數字分成五組,如下所列

   g1=[1,3,5,7,9,11,13,15,17,19,21,23];

   g2=[2,3,6,7,10,11,14,15,18,19,22,23];

   g4=[4,5,6,7,12,13,14,15,20,21,22,23];

   g8=[8,9,10,11,12,13,14,15,24];

   g16=[16,17,18,19,20,21,22,23,24];

在g1這一組的都是因為二進位的最低位置是1,在g2這一組的都是因為二進位的第二位置是1,其他類推。接著再出現相對應的圖片讓玩家選擇,如被選上,則將其代表的數值予以累計,就就可以推算出玩家所選的圖片,但是本程式為了讓玩家不會那麼輕易地破解規則,因此利用亂數改變了各組內的數字順序,增加了遊戲的困難度,也讓遊戲更有趣。

進階玩法

在此程式中,筆者以二進位的方式來排列數字,其實尚有其他方法,詳述如下:

   g1=[1,3,4,6,9,11,16,19,21,23];

   g2=[2,3,7,11,14,17,24];

   g3=[4,8,9,11,13,15,18,19,20,21];

   g5=[5,6,7,8,9,11,16,17,18,19,20,21];

   g10=[10,13,16,17,18,19.22,23,24];

   g12=[12,14,15,20,21.22,23,24];

數字依照這六組排列,每一組的代號就是代表每組的值,例如:玩家所選的是11,那麼他就會選到g1,g2,g3,g5四組,而這四組1+2+3+5=11所加起來的總和就是玩家所想的11,至於是否非用1,2,3,5,10,12這六個數字呢?而且數字是否非如此安排不可呢?其實如果你已經了解,你就會知道自己是可以決定要用哪些數字來分組,並且也可以自行安排數字的位置,只要你能符合下面二點即可,

一、分組的數字需由1開始,且依序排列後,數字不可大於(小於自已數的總和+1)

,如1,2,4,9就是不合規矩的,因為無法產生8的組合。

二、將每個數字依照分組的數字拆到各組去,如13可以分成1+2+10,也可以分到10+3,也可以分成12+1,因此分法並非唯一,但為了圖片出現時的美觀,希望能讓各組的個數盡量平均。

此類分組法有其缺點,提出供各位注意,舉例來說,因為13的分法有三種,因此如果玩家有選錯時,會得到意外的錯誤答案,在本題來看玩家如果選g3和g10就會出現答案是13,但是如果玩家不小心多選了g1,照道理g1+g3+g10電腦會出現14,可是你可以發現在這三組中都沒有14這個答案,這就是一個數字可以對到多種分法的缺點,補救的方式就是當電腦得到答案之後,再到被選到的每一組核對,是否有這個數字,只要有任一個不存在,就判定是玩家選擇有誤,而顯示出錯誤訊息來提醒玩家。

結語

利用二進位的方式來分組、排列,讓各種數字只有一種分組方式,可以避免因玩家選擇錯誤而推算出錯誤的答案,但是在變化及難度上較難增加。反觀自己設定各組的值,就顯得玩法較多且變化較大,但是需要注意的地方也會比較多,一不小心就容易出錯,因此建議初學者先以二進位的排列方式入手,等到自己融會貫通後再來變化,會是一個比較好的選擇。