--- title: (สำรอง)ฝึก Revoice + PE (ห้องเรียนสกลฯ ) การเขียนโปรแกรมภาษาคอมพิวเตอร์ อ.สุธิรา วันที่ 13 ธ.ค. 2565 subtitle: date: วันพุธที่ 14 ธันวาคม 2565 เวลา 09.30 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์สุธิรา) สวัสดีค่ะ (ล่าม) สวัสดีค่ะ (อาจารย์สุธิรา) โอเคได้ยินนะคะ เดี๋ยวเราจะมาทำต่อนะคะ จากสัปดาห์ที่แล้วสัปดาห์ที่แล้วเราลงตัวเกมไปแค่ 1 ตัวแต่ความจริงเราที่จะใช้นี่ก็คือสมมุติถ้าน้องเดินอย่างนี้ก็จะมีหลายท่าเหมือนรูปเล็ก ๆ อย่างนี้เห็นไหมถ้าเขาก็จะเปลี่ยนก็เลยให้ไปค้น Sprite Sheet น่าจะมีแล้ว ใครยังไม่มีภาพแบบนี้ยกมือนะคะ อย่าลืม อย่าลืม อยู่ในโฟลเดอร์ที่ไดร์ C ของเรานะคะ แล้วก็ชื่อที่เป็นชื่อของเด็ก ๆ นะคะ นี่ถ้าไฟล์ pygame ที่เรา Coding ก็จะอยู่ในนี้เหมือนกัน ก็คือตำแหน่งของป้ายที่เราจะใช้โพสต์มันจะต้องอยู่ในที่เก็บเดียวกันโฟลเดอร์เดียวกันนะคะ พร้อมหรือยัง ถ้าพร้อมแล้ว สิ่งแรกที่เราทำนะคะ ให้เปิด Sublime เหมือนเดิม เปิดไฟล์ Sublime Textเราขึ้นมาเลย ใครอยู่ไหนนะคะ เปิด Sublime แล้วนะคะ แล้ว... ที่นี้เด็ก ๆ ดูนะคะ ขอแรกสิ่งที่เราจะทำ คือ เราจะไป Import moduleขึ้นมาอีก 1 ตัวคือคนเดิมโมดูที่เรา Import ก็คือโมดูล pygame ทีนี้เราจะมีเพิ่มมาอีก 1 รอบนะคะ แล้วลำดับที่ 2 ตั้งค่าก็จะเรียกใช้ไอ้โมดูลตัวใหม่เรานี่นะคะ จากนั้นเราก็ไปกำหนดการแสดงผลตัวใหม่นี้มันจะแสดงผลในลักษณะไหนนะคะ มาดูโค้ดกัน คำสั่งแรก Import pygame ใช่ไหมเรา Import pygame แล้วเราคั่นด้วยเครื่องหมายโคลอนโอนเงินแล้วก็ตามด้วย sys ตอนนี้เราจะ Import ที่ชื่อว่า System นะคะ ตัวนี้นะคะ สีไม่ได้ ไฟไม่กระพริบ เอาใหม่ ตัวเลือก ตัวชี้สี ๆ ๆ เอาสีไหน นี่นะคะ เราจะ Import module ที่ชื่อว่า sys หรือ System แล้วทีนี้พอโมดูลนี้จะเอาไว้ทำอะไร มันจะช่วยในเรื่องของเวลานะคะ System ก็คือตัวระบบนั้นเองนี่เห็นไหมค่าทั่วไปที่ตั้งclock = pygame.clock กำหนดระยะเวลาแล้วพอในส่วนของการแสดงผลเรียกใช้ตัวแปรที่ชื่อ clock เราสร้างตัวแปรชื่อ clock ในวงเล็บให้ระยะเวลาในการทำงานมันอยู่ที่ประมาณ 60 วินาทีนะคะ วินาทีนะคะ 60 วินาทีนะคะ เด็ก ๆ เพราะฉะนั้น เปิด Sublime ขึ้นมานะคะ แล้วไปที่ Import ตำแหน่งแรกบรรทัดนี้นะนะคะ ใส่อะไรนะ : ใช่ไหมคะ แล้วตามด้วยที่ชื่อว่า System s-y-s นะคะ เห็นไหม แล้วคำสั่ง Import Import module จะอยู่ที่บรรทัดแรกเสมอเลย เพราะการทำงานของโปรแกรมนี่ ก็คือมันจะอ่านบนลงล่าง เพราะฉะนั้นเราอยากให้มันไปทำอะไรก่อน เราต้องเอามันไปไว้ข้างบนว่าอย่างนั้นเถอะ ผลออกมาดีกว่านี้นะคะ กำหนดการทั่วไปตัวที่ในหมายเลข 2 เด็ก ๆ เห็นนะ นี่ก็คือเพิ่ม clock. เอ้ย clock = นะคะ = ตรงนี้ pygame.time เราจะเรียกใช้ Library time นั่นเองเพราะฉะนั้น เราก็เลยเปิด modulo System ขึ้นมานะคะ clock.time = c y g a m et i m el o c k พร้อมนะคะ สับรามไปอยู่ต่อที่บรรทัดอะไรดูดี ๆ นะคะ ตำแหน่งของการตั้งค่าทั่วไปนะคะ ทำไมมันลบล่ะ ตรงส่วนนี้เดี๋ยวนะคะ ตรงสวนจะแก้มาเป็น... นำเข้า module Pi เกม จะเตือนเด็ก ๆ เสมอว่าให้เราใส่ # เพื่ออธิบายว่าตรง Coding นี้นะคะ เราใช้ทำอะไรเราจะได้รู้ว่าขอคำสั่งเป็นการสั่งให้นำข้อมูลที่เรานำเข้าก็คือ pygame และ sys 2 ตัวนี้นั่นเองนะคะ เสร็จแล้วการตั้งค่าทั่วไปก็คือ init () modal pygame และอีกตัวหนึ่งนะคะ อันดับแรกประกาศตัวแปรชื่อว่า clock ขอโทษนะคะ พิมพ์ด้วย c-l-o-c-kclock ที่แปลว่านาฬิกาวิธีการประกาศตัวแปร ก็คือตามด้วยชื่อตัวแปรตามด้วยเครื่องหมายเท่ากับกดวรรคนะคะ กด Space Bar ใส่เครื่องหมายเท่ากับ แล้วก็กดSpace Bar อีก 1 ครั้งแล้วก็พิมพ์ Library pygame.พิมพ์ตัว P ปุ๊บ บอกแล้วเราจะไม่ยาว เพราะสัปดาห์มันจะขึ้นตัวที่เราเขียนไปแล้วหรือตัวอะไรก็แล้วแต่เราก็มาเลือกเอานะคะ . นะคะ .time แล้วก็ .clock ตัวแทนเอามันจะไม่มีปัญหาว่าพิมพ์ตัวเองมีอะไรดีเพราะบางทีเด็ก ๆ มองแล้วดันเห็นไม่ชัดนี่ขยายนะคะ ตรงนี้ คือ ส่วนของการตั้งค่าทั่วไปใครยังไม่เสร็จบรรทัดนี้ พิมพ์ให้เสร็จนะคะ ไม่อย่างนั้นไปขั้นตอนต่อไปไม่ได้นะ ตอนนี้เรา import แล้ว แล้วเรามาตั้งค่ามากำหนดค่าให้มัน ก็คือที่ชื่อแปลว่าทีนี้เราจะไปเรียกใช้งาน เราจะไปที่ตำแหน่งท้าย ๆ แสดงผลจะอยู่ประมาณลงนะ เอาไปไว้ท้าย ๆ ก่อน นี่ ๆ ๆ แถว ๆ พวกนี้นี่ แถว screen.blit พวกนี้นะเด็ก ๆ อย่างนั้นเดี๋ยวใส่ไอ้นี่ให้ก่อนนะคะ ใส่ # ก่อน ใส่ # อีกส่วนของการแสดงผลนะส่วนไว้จะได้รู้Minecraft สังเกตตรงการแสดงผลเราก็ screen.blit ให้แสดงภาพพื้นหลังเรานะ ความจริงตัวเดียวก็ได้นะนี่ ลบออกได้นะนี่ ปล่อยไปก่อน ลบตัวนี้ได้เลยนะนี่ เดี๋ยวค่อยมาลบนะคะ ไล่ลบ เพราะฉะนั้น คำสั่งที่ 3 คือ ให้เดี๋ยวนะ เราจะนี่นะคะ ส่วนของการแสดงผลที่บอก เ้ราฉะนั้นคำสั่งที่ 3 ก็คือให้เดี๋ยวนะเราจะนเราจะเรียกแนะคะ ockpitแล้วระบุระบุว่าเวลาเวลาที่ให้มันทำงานนี่อยู่ที่ประมาณ 60S นะคะ วินาทีนะคะ ไม่ใช่นาทีเพราะฉะนั้น ตำแหน่งก็จะหยุดลงเมื่อกี้ที่มาร์กไว้นะการแสดงผลก็คือตรงนี้นะคะ ปรากฏว่ากดอะไรคะ กด Tab ให้เพชรตรงกับตำแหน่งสกรีนบอกแล้วนะคะ เพราะบางคนจะติดพอเห็นย่อหน้าที่ 2 ใน Sublime มันจะไม่ค่อยใช้วรรคระหว่างคำ แต่ว่าคำย่อหน้าเราจะใช้ Tab นะ เราจะเรียกใช้ clock ของเรานะคะ แล้วก็ตามด้วยนะ ไหนนะ Memory ไม่ดีนะคะ จำไม่ได้ค่ะ ขอบอกสมงสมองไปหมด อากาศเย็น สกลนครอากาศหนาวนะคะ บอกเลยว่าหนาว เด็ก ๆ พากันไม่มานี่ T-i... tick นี่เป็นคำสั่งใน Library นั่นเองนะคะ แล้วก็ตามด้วยวงเล็บ ใส่ 60 ตัวเดิมนะคะ 60 ตัวเลขเราแก้ได้ให้เรานะถ้าเราลองแล้วโปรแกรมเรามันวิ่งไวเกินไปเราก็ไปเพิ่มเวลาให้มัน แต่ถ้าไปวิ่งช้า 60 แล้วมันช้าเราก็ลดเวลาลงนะคะ ก็คือให้นึกถึงน่ะ เวลา 1 วิ 2 วิ 3 วินาที 1 คือ เพิ่มใช่ไหม 1 มันเร็วไปเพื่อให้มันถ้ามันช้าเราต้องลดตัวเลขลงนะคะ ต่างเข้าใจง่ายยังไม่ Run นะคะ เพราะตัวที่เราเจอกันถ้าเรากดมันก็จะไม่แสดงบทอะไรทั้งสิ้นนะคะ ยังไม่กด Run นะคะ ไปทำต่อ เรายังเขียนโค้ดไม่เสร็จ อย่าลืมว่าโค้ชไม่ได้มีแค่ 3 บรรทัดแน่นอนนะคะ กดผิดอันอีก ไปไสล่ะ จะเอาตัวชี้ออก ไปที่ถัดไปนะคะ ลำดับต่อมานะคะ กำหนดไอ้นี่ไว้เรียบร้อยแล้วนะ ข้ามนะคะ เราตั้งค่าหน้าจอเกมเราตั้งไปแล้ว Set mode หรือ เราจะมาทำลูปนะคะ ทำลูปให้เขา เราทำไปแล้ว เราจะข้ามส่วนนี้ เพราะเรามาทำต่อจากอันเดิมนะ นี่ ๆ ๆ เราจะใส่ Moving sprite เข้าไปได้นี่นะคะ เราต้องไปตรงนี้ก่อน เราจะมาสร้างคลาสให้ก่อนนะคะ สร้าง class เพื่อที่จะทำอะไร ตัวเกมบอกแล้วในหครั้งก่อนเราใส่ไปแค่ตัวเดียว แต่ทีนี้เราจะเอาน้องมาเซ็ตเลย น้องการ์ตูนเราน่ะมาทั้งเซตเลยนะคะ ฉะนั้น เราต้องสร้าง class ให้น้องว่าจะได้เรียกใช้เวลาเรียกใช้เราจะได้เรียก class ครั้งเดียวพอจบ ที่นี้ตอนจะสร้างหานี่นะคะ รูปแบบ ก็คือเราจะต้องพิมพ์คำว่า class แล้วตามด้วยชื่อของ class ในการเขียนโปรแกรมที่การสร้างคลาสจะช่วยให้เราไม่ต้องเขียนโปรแกรมใหญ่มาก ๆ หลาย ๆ ครั้ง หรือเรียกใช้ไอ้ตัวอะไอก็แล้วแต่นะคะ ตัวรูปภาพนี้หลาย ๆ หลังมีรูปมันมีหลายรูปน่ะไม่อย่างนั้นเราต้องไปเรียกรูปหลาย ๆ ครั้งเลยทั้งนั้นเลยนะคะ เราจะเรียกแค่ตรงไหนคะ ครั้งเดียวนะคะ แล้วก็ใส่ : ชื่อ class นี่เราก็จะใส่=nเข้าไปนะคะ แล้วก็ใส่ statementตามชื่อคลาสอะไรฝากนะคะ ตามหลังมาพร้อมนะคะ เราจะไปต่อนะคะ ดูดี ๆ นะคะ จำไว้เลยนะคะ ถ้าเมื่อไหร่ที่จะสร้าง เวลาตั้งชื่อ Classเด็ก ๆ จะต้องตัวแรกใหญ่อันนั้นเตรียมกดแคปล็อคได้เลยนะคะ นะคะ เมื่อเราสร้าง Class ลำดับออกมารับสร้าง method นะคะ ให้ Class ของเรานั่นเองนะคะ method 1 ตัวmethod init () นะคะ ก่อนหน้าเราจะเปิดหน้านี้ไว้นะคะ เริ่มค่ะ ไปที่ Sublime เราเลย ทีนี้อยากให้เรารู้อะไรมันต้องอยู่ข้างบนเสมอเลย class จะอยู่ตรงส่วนที่เมื่อกี้นะ ในที่ Code จะเห็นว่าจะอยู่ต่อจากส่วน Import นะคะ นะคะ ใส่ # ค่ะ เพื่อจะให้รู้ว่าตรงนี้เป็น... เราจะทำอะไรเราจะสร้าง Class อยู่ต่อจากเดี๋ยวนะ เมื่อกี้มันต้องอยู่ต่อจาก... อยู่ต่อจากการตั้งค่าทั่วไปนะคะ เราจะอยู่ตำแหน่งนี้นะคะ ถัดมาตรงนี้จะเริ่มเรียกใช้ก่อน ทำไมเป็นภาษาไทย กดผิดหรือ ตอนนี้ใส่ # เพื่อจะอธิบายว่าเราจะตั้งค่านำเข้าภาพต่อเนื่อง หรือ Sprite Sheet เรานั่นเองนะคะ อธิบายให้รู้ ถ้าใครพิมพ์ # หรือ comment เสร็จแล้วนะคะ ก็จะสร้าง Class ได้เลยนะคะ พิมพ์นะคะ พิมพ์ c บางคนพิมพ์ c ยังไม่ขึ้น พิมพ์ c-l ก็ได้นะคะ แล้วเลือกตัวแรก Class New Class คลิกเข้าไปหรือกด enter เห็นไหมคะ มันจะสร้างโครงสร้างของ Pass ขึ้นมาเลยมี Class ame นะคะ แล้วก็มี deafening นะคะ ที่จะตั้งค่าเห็นไหมคะ รูปแบบเหมือนไหมเหมือนในสไลด์เราไหมช้าง Class แล้วก็มีตัวนี้เห็นไหมส่วนของ class ต่าง ๆ ขึ้นมา ที่นี้มาดูตรงนี้ ClassName ที่เขียว ๆ เรามีกะพริบ เด็ก ๆ name ที่มันขึ้นสีเขียวนี่คือ Class name คือ เราเป็นคนตั้งชื่อให้คลาสของเรานะคะ เพราะฉะนั้น class นี้ที่เราภาพที่เราจะนำเกมที่เราจะนำมาใช้ คือ ตัวเกมอะไรคะ จำได้นะของไปให้ดูที่ตรงนี้เกมที่เราเอามาใช้ในครั้งก่อนนี่ เราใช้คำว่า cat ใช่ไหมเด็ก ๆ ชื่ออะไรคะ เพราะฉะนั้น เอาชื่อ Class เป็นตัวนี้แต่อย่าลืมว่าตัวตนของมันคืออะไร ตัวใหญ่ใช่ไหมเดี๋ยวเราค่อยไปเว้นบรรทัดนั้น เรายังไม่ทันกด Cat เป็นตัวใหญ่นะคะ คลาสกับ cat คนละตัวนะคะ พิมพ์ด้วยตัวแรกจะเป็นตัวพิมพ์ใหญ่เสมอ จะขึ้นต้นด้วยตัวใหญ่เสมอนะคะ ที่นี้มาดูในส่วนเขียวนี้อีกที่เราจะต้องแก้ไขมันนะคะ วัตถุที่เราจะเอามาวางเราจะระบุอะไรลงไปใน object 2 ี่ ของอุบลตัวอะไรนะลูก ก็บอย แต่เดิมบอยเล็กก็เป็น Boy ใหญ่นะคะ อย่าลืมนะคะ ตัวอักษรตัวแรกต้องเป็นตัวใหญ่นะลูก ถ้าเป็นชื่อ class เวลาเราตั้งชื่อสังเกต เราตั้งชื่อตัวแปรตัวเล็กตัวใหญ่ก็ได้ไปแล้วต้องเช็คนะชื่อ Class ตั้งขึ้นต้นด้วยตัวใหญ่เสมอนะคะ ตอบมาใน object อะไรเข้าไปในคลาสเรานะคะ เราจะใส่ก็คือ pygame มันจะมีไรบาลีบอกแล้วอันนั้นก็คือเด็กหญิงดูดี ๆ สาย 2 ครั้งสไปรท์ตัวแรกตัวพิมพ์เล็กจะเป็นคนละตัวนะนึกออกนะ เพราะละเอาอะไรหรอเห็นไหมไปตัวที่ 2 ต้นตัว H มันจะเป็นตัวใหญ่แล้วถ้าเวลาแม่บอกว่าเรียกใช้ใช้ตัวใหญ่แล้วต้องพิมพ์ตัวใหญ่นะออกนะ แต่ถ้าเรียก Sprite เล็ก ก็คือตัวพิมพ์เล็กหมดนะคะ มันจะมี 2 ตัวนะคะ เพราะขนาดในออฟฟิศเราจะแก้ไขอะไรมารีบภัยเกมที่ชื่อไอซ์ไซส์เล็กไซส์ใหญ่ว่าอย่างนั้นเถอะ OK ใหม่นะคะ เพราะฉะนั้น กลับมาที่ตัวนี้เราในออฟฟิศเห็นไหม เราพิมพ์ผิดแล้วกดพิมพ์ pygame ได้เลยแล้วกด Enter นะนใส่ . นะ Sprites ขึ้น Sprites ใหญ่ยังไม่กดนะเด็ก ๆ ไปแรกกูจะไปตัวเล็กนะ s-p-r-i-t. ที่ 2ตัวใหญ่ต้องเลือก สไปรท์ตัวใหญ่อยู่ข้างล่างอยู่เกือบล่างสุดเลยเห็นไหม คือ ใครที่ 2 มันสร้างไว้ในคืออะไร มานี่มันมีอยู่แล้วนึกออกนะ โอเคนะคะ กลัวคนลงคนไม่ต้องใส่เลย สังเกตถ้าเราอย่างนี้ไอ้พวกเครื่องหมายมันจะไม่หายดูใหม่นะไอ้สไปรท์ที่ 2 เด็ก ๆ ดูใหม่นะ ให้เลื่อนไปหา sprite ใหญ่เห็นไหมคะ แล้วกด Enter เพราะมันเป็นตัวที่อยู่ใน แล้วว่าอย่างนั้นเถอะอะไรเล็กว่าอย่างนั้นเถอะ อยากให้รู้ว่าฉันสร้างตัวนี้ขึ้นมาเพื่อจะเรียกใช้ เขาบอกตรงนี้เราจะลบออกนะคะ เป็นแค่อธิบายเราอธิบายไว้ข้างบนแล้วก็กด Delete ได้เลย เราต้องพยายามลดบรรทัดในการเขียนโค้ด คือ 1 บรรทัดใช้พื้นที่ในการเก็บนะคะ เมื่อกี้เราสร้าง class แล้ว ทีนี้เราจะมาตั้งของ statement นี่นะคะ ต่อ ก็คือส่วนนี้เห็นไหม def def ย่อมาจาก definite init () นะคะ พิมพ์ของมันมาแล้ว เพราะฉะนั้นเด็ก ๆ กินเองจะพิมพ์ไม่ถูกมันพิมพ์มาแล้วเราจะมาแก้เฉพาะในวงเล็บ เอาตัวนั้นออกมันบัง มันบัง โค้ดเรานะคะ เราจะพิมพ์จนถึงตัวนี้ก่อนอันนี้ น่าจะพิมพ์มาแล้วเห็นไหมคะ แล้วตามด้วยอะไรคะ เห็นไหมดูนะคะ ดูนะคะ pos_x pos_y พิมพ์ไปก่อนนะคะ อ๋อ pos... ใช้ underscore x แล้วแต่จะตั้ง คือ แยกนี่ใส่ _ เข้าไปนี่จะได้เห็นว่า อ๋อ position ซั่นนั่นเองiPadtosโพสต์จาก Position ค่ะ แล้วก็ตามด้วยอันเดอร์สกอร์เอกซ์ก็คือตำแหน่งของแกน x แกน Y นั่นเอง ก็คือเราจะเอาไอ้รูปนี้ไปวางในตำแหน่งนี้ในแกน x แกน Y ที่ระบุนะคะ บรรทัดนี้นะคะ ก็คือเริ่มกำหนดว่า ตำแหน่งของสิ่งที่เราจะเรียกมานี่อยู่ตรงไหนอะไรอย่างไรบอกตำแหน่งระบุตำแหน่งไว้ บรรทัดต่อมามันจะเริ่มยาวขึ้นแล้วนะเด็ก ๆ ดูดี ๆ นะคะ ตรงช่องนี้เห็นไหมคะ Class name เราไม่ต้องระบุลงไป ลบออกให้มันเป็นเปล่า ๆ แล้วเหลือแค่นี้ บรรทัดต่อจาก definition นะคะ บรรทัดที่อยู่ในวงเล็บนี่ลบออกนะคะ บรรทัดนี้เราจะเหลือแค่นี้ โอเคนะคะ จากนี้ตั้งแต่พอเริ่มเรียก self ยาวขึ้น เราจะพิมพ์แค่ 1 ครั้ง แล้วใช้วิธีคัดลอกแล้วก็ไปแก้ แก้เฉพาะตัวนะคะ ดูนะคะ self sprite เล็กนะคะ self.arg ตัวแรกนี่ sprite เล็กแล้วเติม S ให้เขาด้วย มันเป็นคนละตัวกับตัวบนนะคะ เด็ก ๆ เข้าไปตรงนี้ค่าที่ใส่ ก็คือสี่เหลี่ยมวงเล็บแบบสี่เหลี่ยม โอเคไหม ดูดี ๆ นะคะ sprite ในเซลล์เนี่ยเป็นสไปรท์เติมเข้าไปด้วยเราเรียก sprite มี sprite ขึ้นมานี่ราคาแล้วเติม edเพิ่มเข้าไปโอเคนะเป็นคนละตัวนะ มันมีหลายตัวดูดี ๆ ถ้าบอก sprites คราวนี้บอกไปแล้วนี่ อย่ารีบ อย่ารีบ เห็นไหม ตัวนี้ 1 ใช่ไหม 2 sprite ใหญ่ 3 sprite วันนี้ เรามี 3 sprite นราคาโอเคนะคะ บรรทัดที่เหลือจะเริ่มจะเริ่มไปเรียกใช้คำสั่งที่มันให้โหลดรูปที่เราเก็บไว้น่ะ มานะคะ เราต้องวางเรียงจนครบทั้งหมด เรามีกี่รูปแล้วก็ใส่เข้าไปทั้งหมดคำนวณรูปนั้นนะคะ เดี๋ยวเขียนให้ดูก่อน ตอนนี้เราระบุปล่อยไปแล้ว sprites ไปแล้ว ต่อมา ก็คือทักตอบไปแล้วก็พิมพ์seเหมือนเดิมเลิกนะคะ เลือกเสียวเหมือนเดิมนะคะ เหมือนกันเลือก sprites ที่มีตัว S M ไหมคะ เลือกให้ถูกถามด้วย sprite. เพราะตัว sprites ตัวแรกเราแจ้งไปแล้ว โปรแกรมไปแล้วเราสร้างสไปรท์เอ๊ะขึ้นมานะก็ชนะครั้งที่ 2 เรียกใช้มาได้เลยนะคะ จอดแล้วก็ตามด้วยโคตรจะยาวหน่อย image load .appedn a-p-p-e-n-d นะคะ เรียกใช้คำใน library append. ตรงไหน . ไม่ตรงไหนใส่วงเล็บนะคะ py แล้วกด Enter ให้มันเรียกใช้ pygame เหมือนเดิม เลือก image นะคะ .load เลือก load หากใครไม่ขึ้นแสดงว่าบางทีพิมพ์ผิดลองลบออกก่อน เดี๋ยวย่อลงก่อนนะคะ ไม่เห็น ที่ต้องย่อเพราะมันยังมีต่ออีก เดี๋ยวเด็กยังไม่เห็นว่าในบรรทัดนี้มันมีอะไรต่อนะคะ ก็คือตอนนี้เราจะมาเรียก self.sprite.appescfไลฟ์สดเพลง แล้วให้สั่งให้อภัยเกมมันไปโหลดภาพแล้วมาดูภาพที่เราจะโหลดกดผิดนี่นะ วงเล็บที่หลังวงเล็บหลังโหลดนะคะ append pygame.load แล้วก็ชื่อลูกรูปตอนไหนรูปเด็ก ๆ ดูนะคะ บอกแล้วบอกวิธีไปแล้วนะ ถ้าไม่อยากพิมพ์ผิดเหมือนอย่างนี้ เราที่ไฟล์ภาพเรา แล้วเราคลิกขวาใช่ไหมคะ ที่ตำแหน่ง properties แล้วเราก็ชื่อไฟล์มันมาเลยจะทำให้เราไม่พิมพ์ชื่อไฟล์ผิดออกนะ แล้วก็เช็กด้วยว่านามสกุลมันเป็นนามสกุลอะไร PNG โอเคนะ .png แบบนี้นะคะ มันจะไม่เกิดปัญหาในการพิมพ์ชื่อไฟล์ผิด เพราะฉะนั้น ภาพที่เป็น sprite เรามีกี่รูป บรรทัดต่อไปไม่ต้องพิมพ์ใหม่ เด็ก ๆ ดูนะคะ ใช้วิธี Copy บรรทัดที่เราสั่งมันโหลดภาพกด Ctrl + C แล้วก็กด Ctrl + V ลงไปเราก็เป็นแค่อะไรคะ หมายเลขใช่ไหม2ถูกไหมคะ ตรงนี้นะคะ sprite เด็กจะต้องไปสั่งให้มันโหลดรูปที่เราจะเอามาใช้น่ะให้ครบตามจำนวน เพราะฉะนั้น เพิ่มบรรทัดเอาเองนะของใครมีกี่ลูกจำนวนบรรทัดของรูปที่โหลดมันก็จะเท่ากับภาพของตัวเอง นึกออกนะ Copy นี่อันที่ 1 แล้วก็ไปเปลี่ยนหมายเลขถูกไหม ถ้าของใครมีหมายเลขแต่ถ้าของใครไม่มีออกนะแล้วก็วางจนกว่ามันจะครบจำนวนตัวนั้นของเรานะคะ เดี๋ยววางของตัวเองก่อน ตรงนี้นะคะ ชื่อไฟล์ภาพนี้ให้ดูหน่อยเครื่องตัวเองนะลูก ไม่ใช่มาพิมพ์ตาม ก็คือชื่อภาพใครภาพมัน ภาพของใครของมัน อันนี้เป็นชื่อไฟล์ภาพที่อยู่ในเครื่องของแม่ของเด็ก ๆ ชื่ออะไรเด็ก ๆ ก็ดูเอาในโฟลเดอร์ตัวเองนะคะ มีกี่รูปเดี๋ยวขอไปดูก่อนนะ ว่าของเรามีทั้งหมดกี่รูปของเครื่องแม่มีถึง 60 นะคะ เพราะฉะนั้น ก็จะใส่เพิ่มอีก 5 ตัว มีเยอะก็จะก็อปฯ แผงใหญ่ ๆ เลย 5 แล้วก็นับต่อ 6 7 8 9 10 เพราะฉะนั้น ให้เด็ก ๆ ดูในโฟลเดอร์ตัวเองนะ ไฟล์ภาพใครชื่ออะไรก็อปฯ เอาวางแล้วค่อยมาแก้อย่างนี้นะคะ อันนี้ของแม่มี 10 ภาพแม่ก็ใส่จนครบแล้ว 10 รูปนะคะ ของเด็กมีกี่รูปเดี๋ยวช่วยดูให้จะตรวจให้นะคะ ใครมีกี่รูป ใส่วงเล็บน่ะถูกแล้ว เห็นไหมล่ะ เราว่าไม่ใส่มันทำไมไม่ขึ้น ตรง pygame ใส่วงเล็บเข้าไปด้วยนะ วงเล็บเปิดแล้วก็วงเล็บปิด นั่นแหละก็ว่าใส่แล้วจำไม่ได้ แต่ว่าพอใส่ ตอนแรกน่ะใส่แล้ว แต่ว่ามันไม่ขึ้น ก็เลยเข้าใจว่าเจ้าของใส่ผิด เดี๋ยวไปเดินดูนะคะ มันจะต้องขึ้นอย่างนี้ เป็นเซ็จ ๆ เลย เห็นเป็นสีฟ้าเอาไปปิดด้วย load ทีนี้เดี๋ยวดูนะคะ ชื่อไฟล์ เราลืมแน่ ๆ เลย เมื่อกี้เดินไปผิดแน่ ๆ ต้องใส่อะไร เครื่องหมายอะไร คำพูด นึกออกนะ ใส่เครื่องหมายคำพูดจะเอา ' ' หรือ " " ก็ได้ลงชื่อไฟล์นี้ใส่ลงไปลืมลืมเห็นไหมคะ เด็ก ๆ ใส่เครื่องหมายคำพูดลงชื่อไฟล์ที่เราจะเรียกใช้ด้วย ลืม เยอะหลาย ลืมนี่นะเมื่อกี้ลืมใส่นะคะ ใส่เครื่องหมายคำพูดเข้าไปให้น้องด้วยเห็นไหม เพราะถ้าเช็กจากสไลด์นี่ตรงชื่อไฟล์มันจะเป็นสีเหลืองเห็นไหมคะ เห็นไหม มันถึงจะถูกต้องนะคะ เพราะฉะนั้น แก้ ใส่ ' ' หรือ " " ก็ได้ตัวไหนก็ได้นะคะ ตัวใดตัวหนึ่งเลือกเอาใส่ Single ก็ใส่ใครจะใส่ Double ก็ใส่ Double เดี๋ยวทีนี้บางลูกของบางคนนี่ลูกมันไม่ต่อนี่ตอนนั้นออกมามันจะเป็นอา ๆ นะเด็ก ๆ เพราะฉะนั้น เลือกรูปมาใช้ก็มีส่วนนะคะ เช็กนะคะ อันดับแรกเอกที่ชื่อไฟล์ภาพที่เราจะนำมาใช้ชื่อถูกต้องโอเคไหม แล้วก็จำนวนลูกเอามาใช้มีทั้งหมดกี่รูป สังเกตนะคะ ถ้าใครแก้ครบแล้วไอ้ชื่อไฟล์ภาพเป็นสีเหลืองทั้งหมด นั่นแสดงว่าถูกต้องแล้วนะเด็ก ๆ นัดอีกต้องเป็นอย่างนี้นะคะ ในโค้ดเราต้องเป็นอย่างนี้ถึงจะถูก ทั้งแผง ทั้งแผง ตัวเองไม่มีวงเล็บ นี่เห็นไหม ตัวเล็ก ตัวเล็ก โอเค คำสั่งเยอะนะคะ เพราะมันเป็น Class คือ มันจะลำบากตอนแรกเท่านั้นนะคะ ไหนลองสิ ไม่มีส่วนหรือ ตัวเล็กตัวใหญ่ไม่เกี่ยว มันเป็นนามสกุลไฟล์ภาพ มันได้อยู่มันเป็นนามสกุลน่ะ แต่ชื่อน่ะ ชื่อนะห้ามผิดนาม สกุลนะมันรู้อยู่ โปรแกรมมันจะรู้อยู่ มันน่าจะเว้นวรรคผิด เดี๋ยวตอน Error ก็จะรู้กัน สร้าง method แล้วทำอะไรต่อ โหลด Sprite Sheet แล้ว มีบรรทัดต่อนะคะเด็ก ๆ นี่ เราจะระบุตำแหน่งว่าตำแหน่งปัจจุบันของตัว sprite เราจะเริ่มที่ 0 นะคะ แล้วก็จะมาเรียกใช้ จะสร้างจะทำ Animation เห็นไหม Create Animation แล้ว ขั้นต่อไปนะคะ เราโหลดตอนนี้เราสั่งให้มันไปโหลดภาพ ต่อมาเราจะสร้างส่วนของ Animation นะคะ เดี๋ยว # ค่ะ ใส่ # เราจะเข้าสู่การสร้าง Animation แล้ว สร้างภาพเคลื่อนไหวก็ได้ เดี๋ยวจะงง เอาเป็นภาษาไทย สร้างการเคลื่อนไหวนะคะ # ไว้จะได้รู้ส่วน ตำแหน่งอยู่ตรง self นะคะ กด Tab นะคะ เด็ก ๆ ใช้วิธีปลด Tab นะอย่ากดสเปคงานกดแอปเข้าไปให้ตรงกับตำแหน่ง หสเรานะคะ self พิมพ์ self ภาษาเปลี่ยนเลือก ExcelDropมาดูนะคะ คำสั่งนี้ยาวหน่อย _ sprite ธรรมดานะ อันนี้จะเป็นตัวแทนคะ เพราะฉะนั้น เราพิมพ์เองนะคะ current self current_sprite = 0 นะคะ คำสั่งแรก ก็คือกำหนดให้ตัวแปรที่ชื่อ current มีค่าเริ่มต้นที่ 0 อันนี้เป็นคำถามที่บอกว่าค่าเริ่มต้นของภาพจะต้องเริ่มที่ 0 เสมอนะคะ กำหนดไว้ self เท่ากับ 0 ใส่อันเดอร์สกอร์ด้วย คือ แยก 2 อันน่ะ มีอะไรแบบนี้ถ้าเราไปพิมพ์เวลาเราไปเช็กมันจะลายตาหมด เพราะฉะนั้น เราใช้ตัวอันเดอร์สกอร์เพื่อแยกคำนะคะ ไปบรรทัดต่อไปนะคะ เราจะกำหนดให้เรียกรูปนั่นเองนะ พิมพ์ s แล้วเลือก self ตามด้วยเครื่องหมาย . คลิก i-m-a-g-e นะคะ เท่ากับ ใส่เครื่องหมายเท่ากับวรรคเท่ากับอีกครั้งหนึ่งค่ะ อีกครั้งหนึ่งกด F แล้วเลือก self sprite ที่เราจะใช้อะไรที่มีเอสข้างหลังแล้วเลือกตัวนี้แล้วก็ใส่วงเล็บสี่เหลี่ยมใหญ่เข้าไปแล้วพิมพ์เรียกใช้ self.current_sprite ต่อมาในวงเล็บสี่เหลี่ยมใหญ่นี่เราจะเลือกใช้ self. แล้วเลือก current see youเห็นไหมคะ เลือก current sprite ที่มันขึ้นมาเห็นไหมจะได้ไม่พิมพ์ผิดที่เราสร้างไว้นั่นเองนะคะ บรรทัดต่อมานะคะ พิมพ์ self เหมือนเดิมนะคะ เลือก self อันนี้พิมพ์เองนะคะ rect r-e-c-t rect เท่ากับ self วรรคก่อน self นะคะ เลือก self เลือก image ค่ะ หรือการเลือก Image แล้วก็ .get เห็นไหมคะ .get_rect นะคะ แล้วก็วงเล็บ ก็กำหนดอีกตัวหนึ่งนะคะ self เหมือนเดิม เลือก self เหมือนเดิม เหมือนเดิมค่ะ กำหนดตำแหน่ง rect_top นะคะ เลือกเล็กแล้วก็ บนซ้าย Top แล้วก็เล็ก left นะคะ topleft = วงเล็บใหญ่ สี่เหลี่ยมใหญ่ pos_x underscore แล้วก็ใส่แล้วก็ pyนะคะ ระบุตำแหน่งแล้วอยู่ที่โพสต์โพสต์ไว้ของเรานะคะ ให้ค่าเริ่มต้นในการทำงานเริ่มที่นี่ดี ๆ นะคะ ถ้าพิมพ์ถูกแล้วขึ้นแบบนี้เลย สี self สีตัวเลข สีเท่ากับจะขึ้นอย่างนี้เลย ถ้าใครไม่ขึ้นนี่แสดงว่าตรงหนึ่งผิดแน่นอน โครงสร้างผิดแน่นอนนะคะ กำลังจะช่วยในการเช็ก โค้ดดิ้งได้ดีเลยนะคะ ใครยังพิมพ์ 1234 บรรทัดนี้ไม่พิมพ์เสร็จหรือยังคะดูดี ๆ นะคะ จะไปที่ใช้ที่เรียกใช้ sprites นะคะ ตอนนี้ตำแหน่งนี้เรียกผิดชีวิตเปลี่ยนนะ มันจะไม่ขึ้นเด้งอย่างนั้น มันก็จะ Error ไปเลยนะคะ โอเคนะคะ ยังไม่จบ ยังไม่จบ โค้ดมันเยอะหน่อยหนึ่ง แต่เวลาไปเรียกนิดเดียวจริง ๆ นะคะ เพราะทำ class ก็คือหาดใหญ่หน่อยเรา create Animation แล้วสิ่งที่เราจะทำต่อไปนี่นะคะ เราจะมาเรียกใช้มันแล้วนี่ ๆ ๆ ไม่ใช่เรียกใช้ เราจะทำสไปรท์น่ะกับมัน Group มันน่ะ Grมันน่ะจับภาพใหญ่ ๆ ให้มันเป็นภาพเดียวนี่นะคะ สร้าง sprite แล้วก็ Group น้องด้วยนะคะ มันคือคำสั่งนี้เลยมันเป็นไอ้นี่มันเรียนรวมสอบรถหรือกรอบจัดส่งฟรี โบว์นะคะ ส่วนต่อมาเมื่อกี้เราเราจะเรียกใช้มันเราจะสร้างมันแล้วก็ไอ้นี่ตำแหน่งจะอยู่ที่หลังเงื่อนไขนะ โค้ดเสร็จหมดแล้วนะ 4 บรรทัดนี้ใครยังไม่เสร็จโอเคนะคะ หมดแรงแล้วเรามาที่ตำแหน่งนี้เห็นไหมคะ ตำแหน่งของการแสดงผลนี่ก่อนตำแหน่งนี้นิดหนึ่ง เข้าไปเพื่อจะอธิบายว่าส่วนนี้เราจะสร้างสร้างภาพต่อเนื่องใช่ไหม แล้วก็... มันไม่สร้าง มันสร้างเป็นแล้ว เราจะทำภาพต่อเนื่องให้มันเป็น... Group มันเข้าไปให้มันเป็นเหมือนมันเป็นรูปเดียว แปลเป็นไทยนี่แฟนลำบากมากเลย ขอเป็นภาษาอังกฤษแล้วกัน อธิบายยาก คำไทยคำเยอะเกินอธิบาย เรานักคอมพิวเตอร์ เราแปลด้วยภาษาอังกฤษเป็นภาษาอังกฤษดีกว่า c-r-e-a-t create sprite and group คือ ไอ้รูป sprite ที่เราทำเสร็จแล้วนี่เราจะนำมันมารวมให้มันเป็นเหลือรูปเดียวนะ จากหลาย ๆ รูปนึกออกนะ นะคะ เรียน ๆ ๆ กำหนดตัวแปร Moving เคลื่อนไหวนะคะ เคลื่อนไหว Moving_ การเคลื่อนไหวของภาค sprite เรา Movie เท่ากับ pygame กด p เลือก pygame.sprite พิมพ์ sprite เลือก sprite เล็กนะคะ ไปตัวเล็กที่ไม่มี s ดูดี ๆ นะคะเด็ก ๆ จะไปที่เล่นในภายในเกมเดี๋ยวจะไปนี่เป็น sprite ที่ไม่มี s นะคะ Group Group ใช้ตัวใหญ่ เพราะตัวนี้มันเป็นฟังก์ชันที่เขาสร้างไว้แล้วชื่อว่านะคะ ชื่อว่า group ถ้าตัวใหญ่นี่มันคือ class ที่ชื่อว่า Group ที่อยู่ใน Library น่ะเราจะเรียกใช้ Class จากกรุ๊ปนะคะ มาราะฉะนั้น เลยใช้ตัวใหญ่สังเกตลูกใหญ่นะคะ ต่อไป บรรทัดต่อไป ม. ขอนแก่น ซ้อมใหญ่วันไหนนะ เดี๋ยวค่อยโทร. ไปถาม สิ่งที่เราจะทำต่อมา ก็คือประกาศตัวแปรเพื่อเลือกใช้ไอ้ตัว class ของเรานะคะ class เราชื่อ class ตัวใหญ่มันใช้ว่า Cat พูดไหม เพราะฉะนั้น ตัว cat เราก็จะใช้ชื่อมาเป็นตัวนะคะ ทำเป็น Cashเท่ากับคนเราจะเลือกใช้ cat แล้วต้องเลือก Cat ใหญ่นะคะ จะมีวงเล็บด้วยในวงเล็บใส่อะไรตำแหน่งตำแหน่งของตัวนี้ ลองใส่ก่อนนะ ขอลองที่ 10 เสียก่อน อยากรู้เหมือนกันว่ามันจะไปโผล่ตรงไหน แล้วก็กำหนดให้ตัวแปร Moving_sprite นี่นะคะ นำเข้าในรูปนั้นน่ะ ให้มัน Group น่ะ พิมพ์ m แล้วเลือก Moving_sprite นะคะ ถ้าไปนี้ใช้ sprite ที่มันมีS จะไปที่เติม s นะคะ ใช้ไม่เหมือนกันนะลูก จะให้มัน Add อะไรเข้าไปให้มันตัวแปรcat เล็กของเราเข้าไปให้มันเอาไปไว้ที่ Cat นี้ ตอนนี้คือเป็นภาพที่มันต่อกันหลาย ๆ ภาพนี่มาให้มันทำให้มันเป็นภาพเดียวน่ะค่ะ รวมกันเป็นภาพ 1 ภาพให้มันดูเหมือนเป็นรูปเดียวนะคะ 3 บรรทัดนี้เสร็จหรือยังคะ ใครยังไม่เสร็จ ยังนะคะ ไม่อย่างนั้นเดี๋ยวไปต่อไม่ได้ มันจะขาดตอน sprite เล็กนะคะ เช็กนะคะ ไม่มี s ดูดี ๆ สบายที่ 2 เรียกใช้หลังต่างกันตรงนี้มันจะไม่ขึ้น Error นะ ว่ามันนั่งแล้วมันโดนสร้างแล้วแต่ดูดี ๆ แค่นั้นเองเช็กดี ๆ 2 จุดนี้นะคะ sprite กำหนดใน Moving จะไปนี่ไม่มี ห แต่เวลาเรียกนี่cf นะคะ เป็นต้นโอเคนะคะ น่าจะเสร็จกันหมดแล้วทุกคน มาดูที่เราจะต้องทำต่อ เราจะสร้างฟังก์ชันให้มันวิ่งทีนี้นะคะ กำหนดฟังก์ชัน Run ถูกไหมคะ แล้วก็ update เมื่อมันวิ่งไปแล้วนะคะ เด็ก ๆ ต้องบอกว่าทำไมวันนี้โค้ดเยอะจังเลย คือ มันยาวน่ะ แต่พอสร้างแล้วมันจะใช้ครั้งเดียวจบ เอาไปใช้กับครั้งต่อไปได้นะคะ เพราะฉะนั้น ตัวนี้นะคะ เราจะไปที่บรรทัดที่ต่อจาก class เห็นไหมคะ บรรทัดสุดท้ายของ class นี่ใส่ # หน่อย เราจะบอกเขาบอกโปรแกรมบอกตัวเองบอกตัวเองนี่ # นี่บอกตัวเองนะคะ ว่าตรงส่วนนี้เราทำอะไร สร้างฟังก์ชันค่ะ สร้างฟังก์ชัน ตรงส่วนนี้เราจะสร้างฟังก์ชัน run นะคะ ชื่อว่า run กับ update run แล้วก็ update นะคะ 2 ตัว รูปแบบของการสร้างฟังก์ชัน ก็คือ definition คำว่า def" นะคะ Tab เข้าไปแค่ 1 ครั้งนะคะ มันจะไม่อยู่ตรงกับ self นะคะ มันจะอยู่ก่อน self นี่เห็นไหมคะ เลือกแบบห้องเชื่อมนะคะ def แล้วก็เลือก function definition ฟังก์ชัน ก็คือ run ตัวเล็กตัวเขียว ๆ ในวงเล็บนี่ไม่ใช่ในวงเล็บดีขึ้นแล้ว function นี่เราแก้เป็น run นะคะ ฟังก์ชันที่เราใช้เมื่อ run รันนะคะ แล้วก็เลือก self มากด s แล้วเลือก self ในส่วนของบรรทัดที่ 2 นะคะ พิมพ์ self ค่ะ กด s เลือก self.run ดอท animate นะคะ อนิเมะมาจาก Animation นั่นล่ะ จะยาวไป Animete Run Anime Anime Anime ดีกว่า Anime จะสั้นกว่าอีก run anime จะงงไหมล่ะนี่ เอา animete แล้ละกันเท่ากับ True ทำงานเมื่อเป็นจริง จะใส่เงื่อนไขแล้วนะคะ True ใช้ True ใหญ่นะคะ วิธีเลือก True ใหญ่นะ เรามีฟังก์ชันแล้วสร้างอีก 1 ฟังก์ชัน เหมือนเดิมเลือก def ฟังก์ชันเหมือนเดิมตรงตำแหน่งชื่อฟังก์ชันเปลี่ยนเป็นเราสร้าง 2 ตัวนะเราจะสร้าง 2 ตัว ก็คือ run กับ update นะคะ ชื่อฟังก์ชันไม่จำเป็นต้องใช้ตัวใหญ่ เลือกใช้ self ค่ะ self แล้วก็ใส่ : แล้วก็เลือกใช้ speed ในส่วนของ statement หรือ pass นี่นะคะ เราจะมากำหนดเงื่อนไขให้มัน... มันทำงานนั่นเองนะคะ ก็คือใช้คำสั่ง if ค่ะ เลือก if statements นี่ตัวแรกให้พิมพ์เองนะเด็ก ๆ ไม่อย่างนั้นเดี๋ยวรูปแบบมันจะผิด ให้เลือก i แล้วเลือก if conditionไม่พิมพ์นะคะ เรื่องใช้เรียก self มา เลือก animate เราชื่อเรียกมาใช้งาน ถ้ามีอีกคำสั่งเท่ากับออกเราจะต้องกด 2 ตัวนะคะ = =True ค่ะ ชูแล้วเลือก True ใหญ่นะคะ statement pass เราจะเรียก มานะคะ พิมพ์หำเหมือนเดิมselfishCU เลือด carols กด enter เราจะเพิ่มออกนะ พอเวลาเวลาที่มันเคลื่อนน่ะค่ะ ตำแหน่งปัจจุบันมันเริ่มที่ศูนย์ว่า ฉะนั้น เราจะเพิ่มค่าให้มันบวกนะคะ บวกใส่เครื่องหมายบวก แล้วก็เท่ากับ ก็คือเพิ่มถ้าในความหมายบวก ก็คือถ้าใส่ + แล้วเท่ากับแสดงว่าเพิ่มก็บวก ก็คือบวกอะไรเข้าไปให้บวกเข้าไปใน Speed Speed ที่เราสร้างไว้เราเลือก Speedกด Enter นะคะ เราจะเพิ่มเงื่อนไขซ้อนเงื่อนไข เพราะอันนี้เพิ่มแค่ Speed นะ เพิ่มแค่ความเร็วเข้าไป กดเราเลือก if condition เหมือนเดิมนะคะ if int int ตัวแปรนี้นะคะ ไม่ใช่ตัวแปรหรอกมันเป็นวงเล็บค่ะ ใส่เปิดแล้วปิดใส่เข้ามาทีเดียวเลยนะ วงเล็บจะได้ไม่หายว่าอย่างนั้นเถอะ พิมพ์ self แล้วเลือกใส่เปิดแล้วปิดใส่เข้ามาทีเดียวเลยนะจะได้วงเล็บจะได้ไม่หายว่าอย่างนั้นเถอะพิมเสนการเลือก seนะคะ dotเงื่อนไข ก็คือให้มันเช็กว่ามันยังน้อยกว่าหรือเท่ากับ len len นะคะ l-e-n len ใส่วงเล็บค่ะ เราจะเลือก self แล้วเลือก self ยอด sprites sprites นะคะ รอบนี้จะเลือก sprites นะคะ sprites ใน len เลือก sprites นะคะ statement pass นะคะ พิมพ์ self เหมือนเดิม เลือก self . พิมพ์ cu เราเลือก sprite = 0 นะคะ ค่าเริ่มต้นของ current.sprite เริ่มต้นเท่ากับ 0 ตอนนี้มันกำลังเช็กให้มันเช็คค่ามันจะวนเหมือนวนลูปนะคะ แล้วก็เหมือนเดิมอนิเมะนะคะ เลือก run animate ถ้าไม่ถูกก็ต้องมี False ถ้าเป็นจริงจบการทำงานจะทำเป็นจริงมันจะเข้ามาเช็กค่าก่อนกด F ใหญ่และเลือก False บรรทัดนี้เสร็จแล้ว กดย้อนหลังกลับไปที่ตำแหน่ง if แรกนะคะ if ที่ 1 if ที่ 1 ตามภาพ พิมพ์ self ค่ะ self.i เลือก image เท่ากับ self เหมือนเดิม เลือก self เลือก sprite ที่เติม s สี่เหลี่ยมใหญ่ วงเล็บสี่เหลี่ยมใหญ่เรียก int int นะคะ ใส่วงเล็บเข้าไปในวงเล็บเลือก self.current_sprite เลือก self มือไวจริง ๆ เลย self ดอทC ตอนนี้เราทำส่วนของฟังก์ชั่น run กับ update รันกับอัพเดทแล้วเสร็จแล้วนะคะ มี 24680 นี่นะคะ ตั้งแต่บรรทัดนี้เลยเดี๋ยวจะไปเช็กตำแหน่งนะคะเด็ก ๆ ตำแหน่งของฟังก์ชัน เป็นตัวเล็กแล้วก็ลบ int ก็ปกติ เป็นตัวเดียวด้วย คืออะไร ดูก่อนนะคะวันนี้ น่าจะยาวหน่อย แต่ผลน่าจะคุ้มค่าพอใจน่าจะเป็นที่พอใจของเด็ก ๆ อยู่ เราจะมาเรียกใช้ตัวนี้นะ คีย์เรากำหนดแล้ว แต่เราต้องเลือกใช้มันน่ะ ตรง... เดี๋ยวนะ เงื่อนไข if key velo Moving Cat cat ตำแหน่งก็ต้องเป็น pygame.QUIT Key_RIGHT ตำแหน่งตรงนี้นะครับ จะให้ตัวนี้มัน ทั้งใหญ่ทั้งเล็กกว่าดูนะคะ เด็ก ๆ จะเลือกใช้ตัวแปร cat ที่เลือกฟังก์ชั่นรันมาทำงานนะคะ ที่นี้ที่เราจะไปลบ ก็จะมี... เดี๋ยวเด้อลบตรงไหนบ้าง เราจะเริ่มลบแล้วนะ ลบตรงนี้นะคะ นำเข้าภาพนี่ ลบออกเลย เพราะเราเอาไปไว้ที่ class แล้ว เด็ก ๆ หาตัวเดิมลบออกเดี๋ยวมันจะงง ที่เรานำรูปเข้าในสัปดาห์ก่อน เราเขียน # ไว้อยู่ลบออกนะคะ ไปไหนอีก Icon เดี๋ยวเด้อ OK ลองกด B ดูเทสต์ ค่ะ Ctrl + B ดู อ้าว Error ก็มาบรรทัดที่เท่าไรนี่ line 75 ไหนนะ ดูบรรทัดนะคะ ของใครของมันมันบอกว่าอย่างไร Identity มันบอกว่า identification error unexpected iden Shell Command python clock.tick error ขอดูต่อ ขอดูโค้ด ขอไปย้อนโค้ดนะคะ ไปที่การตั้งค่าทั่วไป พอย้ายตำแหน่งเอา scrren ไปใส่ข้างล่างนะคะ เอา clock.tick ไปใส่ข้างล่าง screen.bนี้ OK เราก็ไปต่อไปต่อ เราน่าจะต้องสร้างอีกตัวหนึ่ง รู้แล้วเราลืมตรงนี้ไปด้วย โอเคนะครับ แนะนำเพิ่มโค้ดอีก 3 บรรทัดนี้ Moving ที่เราฟังเสร็จแล้วอยู่ตรงนี้ เยอะจนเบลอเหมือนกัน เราจะไป... เราจะไปที่ตำแหน่งการแสดงผลของเรานะคะ เพิ่มโค้ดอีก แล้วก็ให้เด็ก ๆ เดี๋ยวก่อนอื่นเลือกตรงส่วนของการตั้งค่าทั่วไป 3 บรรทัดนี้นะ แล้วก็กด Ctrl + x เอาไปไว้ข้างล่าง class นะเด็ก ๆ นี่เอาไว้ก่อนหน้ากำหนดหน้าจอเกม ต้องขยับตำแหน่งอะไรสักอย่างหนึ่ง New movie พิมพ์ Moving sprite เอาให้มันวาดนะคะ draw d-r-a-w อะไรมันวาด scrren สกรีนแล้วก็เลือกชุดคำสั่ง update นะคะ moving พิมพ์ m อัพเดทเลือก function Update ให้ค่าเริ่มต้นอยู่ที่ 0 ตำแหน่ง 25 แล้วก็เรียก pygame.display มาใช้งาน เลือก display นะคะ เลือก flip ดอทคอมflIP นะคะ ใส่วงเล็บน่าจะ Ctrl + B ดู 76 มันบอกว่าอย่างไร screen.blit unexpected ไม่รู้จัก 76 attribute Module ผิดตรงไหน อ๋อ เรียกฟังก์ชั่นผิดนี่เอง ไม่เป็นไร ทำไมไม่ขึ้น moving sprite function error ผิดอีกหรือ บอกว่าไม่รู้จัก Attriboblivious เดี๋ยวนะ มีความ error clock เล็ก เลือก clock เล็ก มืดสนิทเลย 74 line 74 in module Moving sprite function error มันจะเป็นไปได้อย่างไร ไม่รู้จัก add หรือเปล่านะ ผิดหรือ Dino run ไม่รู้จัก add เข้าไม่ได้ error ได้อย่างไร ข้ามตัวไหนไป current self self Image to invest Dino Moving.sprite มีไหม ไม่มี หา add ไม่เจอ หมดแล้วนี่นะ เดี๋ยวติดไว้ก่อน error อยู่ 1 บรรทัดนะครับ เดี๋ยวจะไปลอง run อยู่ในเครื่องตัวเอง บางทีเรื่องของเรื่องคือตัวเองออกแล้วมันอยู่นี่ไม่ออกคือ... คืออะไรครับพี่น้อง โอเคนะคะ เด็ก ๆ save ไว้ก่อน เดี๋ยวเรามาต่อสัปดาห์หน้า มันยังไม่วิ่งให้เรา มันขึ้น Errorมันหายไปไหนท่อนหนึ่ง อันนี้เลือกใช้ไม่ได้ สำหรับวันนี้จะพอแค่นี้ก่อนนะคะ ขอบคุณพี่ล่ามนะคะ เดี๋ยวเรามาต่อกันในสัปดาห์หน้าค่ะ ขอบคุณค่ะ Display update อัพเดท