“與”和“或”運算實現權限管理

遊戲中,常常有這樣的提示“需要完成某主線任務纔開放此模塊”,這樣的功能如何實現。

比如,玩家需要完成代號爲501220的主線任務時,纔會開啓戰鬥模塊,需要完成代號爲501221的主線任務,纔開啓貿易模塊。

實現方式可以借鑑linux的權限管理系統來實現這樣的功能。在linux中,查看這個文件的所有者的權限的時候可能是7 表示這個文件的所有者對這個文件可讀(4),可寫(2),可執行(1)。如下圖:

 

(1表示有這個權限,0表示無這個權限)

從這個圖可以看出,如果某個操作者對這個文件的權限是7,即二進制位111。那麼,程序是如何根據二進制111來判斷操作者對文件是否有可讀,可寫,可操作的權限的,又如何把可讀,可寫,可操作權限賦予操作者。

下面,我們解決第一個問題,以可讀權限來說,如果操作者可以讀取這個文件的話,那麼 二進制顯示爲100,即十進制爲4,這個時候,程序會讀取操作者的權限代號,讀取出來的是111,即十進制爲7,把4和7按位與運算 100&111 根據計算結果判斷是否有這個權限。


如果把讀權限賦予某個操作者,使用或運算 100 | 000,結果爲100,即有可讀權限。根據這個原理,就可以實現我們需要功能:



開啓戰鬥模塊:4,開啓貿易模塊:2,開啓酒館模塊:1,默認用戶權限代號爲0

開啓戰鬥模塊的 4 | 0  = 4 然後在開啓貿易模塊 2 | 4 =6; 接着開啓酒館模塊 6|1=7; 最好用戶的權限代碼變成了7.

判斷是否有戰鬥模塊 權限7&4  判斷是否有貿易模塊 權限7&2 判斷是否有酒館模塊權限 7&1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章