التحديثات المتزامنة

في لعبة الحياة، يتم تحديث حالات جميع الصخور في وقت واحد؛ أي أن جميع الصخور ستتحقق من حالة جيرانها قبل أن تغير أي صخرة حالتها. وإلا فإن سلوك النظام سيعتمد على ترتيب التحديثات.
في سبيل إجراء التحديثات في وقت متزامن، أقترح أن تكتب عملية act بطورين: خلال الطور الأول، تحسب كافة الصخور جيرانها وتسجل النتائج؛ وفي الطور الثاني، تحدّث كافة الصخور حالتها.
كود:
هكذا بدت عملية act التي كتبتها أنا:
/**                                          
 * Check what phase we're in and calls the appropriate method.
 * Moves to the next phase.
 */
   public void act() {
   if (phase == 1) {
      numNeighbors = countLiveNeighbors();
      phase = 2;
   } else {
      updateStatus();
      phase = 1;
   }
}
phase وnumNeighbors متغيرات حالة. وها هي النماذج الأولية للعمليات countLiveNeighbors وupdateStatus:
كود:
/**
 * Counts the number of live neighbors.
 */
public int countLiveNeighbors()
 
/**
 * Updates the status of the Rock (live or dead) based on the
 * number of neighbors.
 */
public void updateStatus()
ابدأ بكتابة نسخة بسيطة من updateStatus تغير الصخور الحية إلى ميتة وبالعكس. الآن شغل البرنامج وتأكد أن الصخور تغير ألوانها. كل خطوتين في World تكافئ خطوة زمنية واحدة في لعبة الحياة.
املأ الآن أجسام countLiveNeighbors وupdateStatus وفقاً للقواعد وانظر لترى إذا كان النظام سيعمل كما هو متوقع.


lk ;jhf ;dt jt;v ;uhgl ;lfd,jv gyi [hth hgsh]s uav GridWorld: hg[.x hgehge : hgjp]dehj hglj.hlkm hglj.hlkm hgehge hgjp]dehj hg[.x hgsh]s jt;v gridworld [hth uav ;lfd,jv ;jhf ;dt