簡體   English   中英

如何在二維數組中留下某種標記,該標記會告訴程序在該位置執行某些操作

[英]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存儲的xy任何一個,則執行該操作。 但是我要說的是效率.equal ,我想知道是否有一種方法可以留下標記來告訴程序,當我回到這里時,我創建的Boolean.equal true並且可以執行該操作。

這是董事會的概述: 董事會概況

我不明白為什么if語句效率低下。 我將在undo操作中添加恆定時間(如果只有equals方法具有恆定時間),因此操作的big-o時間不會被修改。

但是,如果您更喜歡另一種方法,則可以在每個單元格中保存一個對象。 object應具有一個布爾屬性,您在執行undo操作時將對其進行檢查。

我更喜歡使用if語句,但是取決於您。

您正在使用二維數組-什么是數組? 考慮到您的圖片中有字母,我假設使用String [] []之類的東西。

但是,您也可以自己創建一個數組。 類似於“單元”類。 給這個類兩個成員-首先是有效載荷(也就是您當前擁有的數據),其次是布爾值作為標記。

單獨關注。 董事會不必也保存其歷史記錄。 記錄動作,並有一種方法可以將它們反向播放。

關系數據庫正是這樣來滿足回滾的。 他們會記錄所有更改,並可以撤消其中的所有內容。 日志通常是更改數據狀態的快照。 在您的情況下,實現它的一種簡單方法是存儲每個板的快照,而撤消將簡單地將歷史板換成當前板。

這看似“沉重”,但它是大型高事務處理率數據庫執行此操作的方式,並且實現起來更簡單且防彈,因為您不需要知道如何撤消特定操作。 此外,這意味着董事會需要了解的更少,實際上,他們甚至不需要知道可以撤消這些事務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM