設計模式之備忘錄模式 遊戲進度儲存例項

2021-07-16 12:24:17 字數 1790 閱讀 2698

namespace 備忘錄模式 }

// 負責儲存originator物件的內部狀態,並可防止originator以外的其他物件,訪問備忘錄

class memento

}// 遊戲進度

class game

set

}private int gamescore; // 遊戲分數

public int gamescore

set

}private string username; // 使用者名稱

public string username

set

}}// 負責建立乙個備忘錄memento,用於記錄當前時刻的內部狀態,並可以使用備忘錄恢復內部狀態

class originator

// 發起人需要儲存內部狀態

public listgameplayers

// 建立備忘錄

public memento creatmemento()

// 將備忘錄中的資料備份匯入到遊戲中去

public void restorememento(memento memento)

public void show()

個玩家",gameplayers);

foreach (game per in gameplayers) // 遍歷每個玩家 記錄姓名,級別,分數等

級別: 分數:",per.username,per.gamelevel,per.gamescore);}}

}

}

呼叫:

class program

, new game() ,

new game()

}; originator originator = new originator(gameplayers);

originator.show();

// console.read();

console.writeline(「\r\n」);

// 建立備忘錄並儲存物件

caretaker caretaker = new caretaker();

caretaker.memento = originator.creatmemento();

// 更改originator列表

console.writeline(「—移除最後乙個玩家—」);

originator.gameplayers.removeat(2);

originator.show();

console.writeline(「\r\n」);

// 恢復到原始狀態

console.writeline(「—恢復玩家列表—」);

originator.restorememento(caretaker.memento);

originator.show();

console.readkey();

} }

總結:作者是小菜鳥一枚,如果有不對的地方,歡迎指正,希望共同學習,共同進步!

遊戲設計 備忘錄模式

備忘錄最常見在遊戲中的進度儲存,在打boss之前先儲存當前進度,當在打鬥中掛掉了,則從之前的進度中恢復,從而達到無限打boss,而打不死boss的死迴圈中,備忘錄模式 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件外進行儲存,並能夠恢復到原先儲存狀態。所以,抽出來三個物件 origina...

設計模式之備忘錄模式

機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...

設計模式之備忘錄模式

定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...