[英]How can I leave some kind of a mark in two-dimensional array that will tell the program to do something in this location
我正在開發一款小游戲,該游戲在我們使用的棋盤上使用二維陣列。 我實現了“ Undo
方法,每次單擊“按鈕”都會逐步返回歷史記錄。 問題是在某些情況下,“ Undo
方法必須在特殊情況下執行其他操作,並且在游戲過程中可能會多次發生。
我知道一種方法是存儲“ x”和“ y”(它們在板上的位置),當我到達那里時,如果我們稍后再回到這里,則需要做一些其他事情。 然后在“ Undo Action Listener
中添加if
,如果位置我們回到.equals
存儲的x
和y
任何一個,則執行該操作。 但是我要說的是效率.equal
,我想知道是否有一種方法可以留下標記來告訴程序,當我回到這里時,我創建的Boolean
將.equal
true並且可以執行該操作。
我不明白為什么if
語句效率低下。 我將在undo
操作中添加恆定時間(如果只有equals
方法具有恆定時間),因此操作的big-o時間不會被修改。
但是,如果您更喜歡另一種方法,則可以在每個單元格中保存一個對象。 該object
應具有一個布爾屬性,您在執行undo
操作時將對其進行檢查。
我更喜歡使用if語句,但是取決於您。
您正在使用二維數組-什么是數組? 考慮到您的圖片中有字母,我假設使用String [] []之類的東西。
但是,您也可以自己創建一個數組。 類似於“單元”類。 給這個類兩個成員-首先是有效載荷(也就是您當前擁有的數據),其次是布爾值作為標記。
單獨關注。 董事會不必也保存其歷史記錄。 記錄動作,並有一種方法可以將它們反向播放。
關系數據庫正是這樣來滿足回滾的。 他們會記錄所有更改,並可以撤消其中的所有內容。 日志通常是更改數據狀態的快照。 在您的情況下,實現它的一種簡單方法是存儲每個板的快照,而撤消將簡單地將歷史板換成當前板。
這看似“沉重”,但它是大型高事務處理率數據庫執行此操作的方式,並且實現起來更簡單且防彈,因為您不需要知道如何撤消特定操作。 此外,這意味着董事會需要了解的更少,實際上,他們甚至不需要知道可以撤消這些事務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.