Lab04: Game of Life

เราต้องการทำโปรแกรมจำลองสภาวะการแพร่กระจายของแบคทีเรียเซลเดียว ดังนี้ เริ่มต้น โปรแกรมจะทำงานโดย ให้เราใส่จำนวนช่องของพื้นที่ที่จะสำรวจก่อน เซลของแบคทีเรียหนึ่งเซลจะอยู่ในช่องได้ หนึ่งช่อง โดย ช่องที่มีสีดำ หมายถึง เซลนั้นมีชีวิต คือมีเซลของแบคทีเรียอยู่ ส่วนช่องที่มีสีขาวหมายถึงไม่มีเซลแบคทีเรียอยู่ โดยจะใช้ฟอร์มดังนี




เมื่อเราเลือกว่าจะใช้พื้นที่ขนาดใดแล้ว (ใส่ตัวเลข แผนที่จะถูกสร้างขึ้นมาให้มีจำนวนแถวและจำนวนหลักของช่อง เท่ากัน เป็นจัตุรัส) จะมีวินโดว์ปรากฎดังรูปด้านล่าง ทั้งนี้ ทุกช่องในตอนแรกจะไม่มีแบคทีเรียอยู่เลย

(รูปนี้แสดง สภาพจำนวนช่องที่ต่างกันไปตาม ตัวเลขที่ผู้ใช้ให้กับโปรแกรม วินโดว์มีขนาด 500*500 เบี้ยวๆหน่อยก็ช่างมัน)





ตัวอย่างการกด สามตัวอย่าง โดย ย่อวินโดว์ให้ดูง่ายๆ สำหรับแผนที่ที่มีแค่สามช่อง เป็นดังนี้










จงเขียนโปรแกรมนี้ จากเริ่มต้นโดยไม่มีอะไรเลย




พอทำเสร็จแล้ว ทำเป็น executable jar ไว้ (เอา source ใส่ด้วย อย่าลืม)
ส่งมาที่ progmethcp@gmail.com ภายในเที่ยงคืนวันอาทิตย์ (ใช่แล้ว คราวนี้แล็บถือเป็นการบ้านในตัว เพื่อให้ได้ทบทวนหลายๆเรื่องที่เรียนมา)   โดยในเมล์ subject ต้องเขียนเป็น studentId_lab04_secNumber และชื่อไฟล์จะต้องเป็น studentId_lab04_secNumber.jar   ตัวอย่างเช่น 5032117621_lab04_1.zip

studentID คือเลขประจำตัวนิสิต

secNumber คือเบอร์ตอนเรียน





ไกด์


                        JButton x = (JButton)event.getSource();
                        Color currentColor = x.getBackground();
                        randomButton.addActionListener(new ranDomButtonListener(cells));

                        แล้วมีไฟล์ของ Listener ที่เราเขียนเองต่างหาก

                        public class ranDomButtonListener implements ActionListener {
                                JButton[][] cells;

                        public ranDomButtonListener(JButton[][] c) {
                                cells = c;
                        }

                         public void actionPerformed(ActionEvent e) {
                                    // ในนี้ก็ใช้อาร์เรย์ ที่ถูกส่งเข้าคอนสตรัคเตอร์มา ได้เเล้ว
                          }
                       }