--- title: การเขียนโปรแกรมภาษาคอมพิวเตอร์ subtitle: date: วันอังคารที่ 13 ธันวาคม 2565 เวลา 08.50 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์สุธิรา) สวัสดีค่ะ (ล่าม) สวัสดีค่ะ (อาจารย์สุธิรา) โอเคค่ะ ได้ยินนะคะ เดี๋ยวเราจะมาทำต่อนะคะ จากสัปดาห์ที่แล้ว สัปดาห์ที่แล้วเราลงเราไปแค่ 1 ตัว แต่ความจริง ตัวเกมเราที่จะใช้นี่ ก็คือถ้าน้องเดินนี่นะคะ มันก็จะมีหลายท่าเหมือนรูปเล็ก ๆ อย่างนี้เห็นไหม ก็เลยให้ไปเปลี่ยนก็เลยให้ไปค้น Sprite sheet ภาพแบบนี้ยกมือ นะคะ ทีนี้โฟลเดอร์อย่าลืม อย่าลืม มันจะต้องอยู่ในดฟลเดอร์ที่ Disk:Cนะ แล้วก็โฟลเดอร์ ชื่อ Drive ที่เป็นชื่อของเด็ก ๆ นะคะนี่เพราะว่าไฟล์ pygame ที่เรา coding จะอยู่ในนี้ด้วยเหมือนกัน ก็คือตำแหน่งไฟล์ที่เราจะใช้ Code กับรูปภาพมันจะอยู่ในที่เก็บเดียวกัน โฟลเดอร์เดียวกันนะคะ พร้อมหรือยัง ถ้าพร้อมแล้ว สิ่งแรกที่เราจะทำนะคะ ให้เปิด sublime เหมือนเดิมเปิดไฟล์ Sublime Text เราขึ้นมาเลย ใครอยู่ไหนนะคะ เปิด Sublime แล้วนะคะ แล้ว...ทีนี้ เด็ก ๆ ดูนะคะ ข้อแรกสิ่งที่เราจะทำ ก็คือเราจะไป import module ขึ้นมาอีก 1 ตัวนะ คือ ตอนเดิมนี่ โมดูลที่เรา imporT คือ โมดูล pygame แต่ทีนี้จะมีเพิ่มขึ้นมา 1 ตัวนะคะ แล้วลำดับที่ 2 เราก็มาตั้งค่า พอเราไป มา เราก็ต้องมาตั้งค่า เพื่อ เพื่อจะเรียกใช้โมดูลตัวใหม่เรานี่นะคะ จากนั้นเราก็ไปกำหนดการแสดงผล ให้ Module ตัวใหม่นี้ ว่ามันรนะคะ มาดูโค้ดกัน คำสั่งแรกคือ import pygame ใช่ไหม เรา import pygame แล้วเราขั้น ก้คือเราไม่ต้องไปพิมพ์คำว่า import ใหม่ คั่นด้วยเครื่องหมายโคลอนนะ แล้วก็ตามด้วย sys s-y-s มาจาก System ตอนนี้เรา import module ที่ชื่อว่า system นะคะ ตัวนี้นะคะ นี่ไม่ได้ เอาใหม่ เลือกตัวสี สีอะไร นี่นะคะ เราจะ import module ที่ชื่อ pygame,system ทีนี้พอ import Module นี้เสร็จนะคะ module นี้จะเอาไวมันจะช่วยในเรื่องของเวลานะคะ system ก็คือตัวระบบนั่นเอง นี่เห็นไหมค่าทั่วไปที่จะตั้ง Clock = pygame.clock นะคะ จะกำหนดระคะเวลา แล้วพอในส่วนของการแสดงผล เรียกใช้ตัวแปรที่ชื่อ clock เราสร้างตัวแปรชื่อ Clock เพื่อเก็บเวลานี่ Clock ในวงเล็บ 60 ก็คือให้ระยะเวลาการทำงานมันอยู่ที่ประมาณ 60 วิ นะคะ ในคอมไม่ใช่ 60 นาทีนะ 60 วินะเด็ก ๆ เพราะฉะนั้น เปิด sublime เราขึ้นมานะคะ แล้วไปที่ตำแหน่งที่ import ก็คือตำแหน่งแรก บรรทัดนี้นะนะคะ ใส่อะไรคะ : ใช่ไหมคะแล้วตามด้วยโมดูลที่ชื่อว่า system หรือ sys S-Ys เห็นนะคะ เห็นไหม เพระาคำสั่ง importนะคะ Import Module นี่ จะอยู่ที่บรรทัดแรกเสมอเลย เพราะการทำงานของโปรแกรมนี่ก็คือมันจะอ่านจากบนลงล่าง เพราะฉะนั้น เราอยากจะให้มันไปทำอะไรก่อน เราต้องเอามันไปไว้ข้างบนว่าอย่างนั้นเถอะ เมื่อได้โมดูลนี้แล้ว ส่วนต่อมาจะอยู่ที่ส่วนนี้กำหนดค่าทั่วไปตัวที่ในหมายเลข 2 เด็ก ๆ เห็นนะ ก็คือเพิ่ม clock. ... Clock = นะคะ เท่ากับนะคะ ตรงนี้ pygame.time time เราจะเรียกใช้ libraryนั่นเองนะคะ เพราะฉะนั้น เราก็เลยต้องเปิดโมดูลsystem ขึ้นมานะคะ clock = pygame.time.Clock ในวงเล็บ พร้อมนะคะ ใน sublimeจะอยู่บรรทัดที่ต่อจากอะไร ดูดี ๆ pygame.init () ตำแหน่งของการตั้งค่าทั่วไปนะคะ ทำไมมันลบล่ะ แหม ตรงส่วนนี้ เดี๋ยวนะคะ ตรงส่วนนี้จะแก้ว่าเป็น...จะเตือนเด็ก ๆ เสมอว่าให้เราใส่ # อธิบายว่า ตรง Coding นี้นะคะ เราใช้ทำอะไรเราจะได้รู้ว่าอ๋อคำสั่งนี้นะคะ มันสั่งให้นำเข้าโมดูล ซึ่งโมดูลที่เรานำเข้า คือ pygame นะคะ 2 ตัวนี้นั่นเองนะคะ เสร็จแล้วในส่วนของการตั้งค่าทั่วไป ก็คือ pygame.init นี่ มันเรียกใช้pygame โมดูล pygame อันดับแรกประกาศตัวแปรที่ชื่อว่า clock ขอโทษ C นะคะ พิมพ์ด้วย c-l-o-c-k clok ที่แปลว่า นาฬิกาน่ะลูก วิธีการประกาศตัวแปรก็คือชื่อตัวแปรตามด้วยเครื่องหมายเท่ากับ กดวรรคนะคะ กด spacebar แล้วก็ใส่เครื่องหมาย = แล้วก็กด space bar 1 ครั้งแล้วก็พิมพ์libary.pygame.time พิมพ์ตัว p ปุีบนะคะ คลิกเลือก pygame บอกแล้ว ว่าเราจะไม่พิมพ์ยาว เพราะ Sublime มันจะขึ้นตัวโค้ดที่เราเขียนไปแล้วหรือตัวอะไรก็แล้วแต่ เราก็มาเลือกเอานะคะ . นะคะ . t-i-m-e แล้วก็ .clock อีกทีหนึ่ง เลือก clock นะคะ เห็นไหม มันจะช่วยให้เราไม่ไปพิมพ์ผิด บอกให้รู้ว่าเราจะใช้ตัวแปรที่ชิ้อว่แล้วก็ใส่วงเล็บ เห็นไหมคะนี่มันจะไม่มีปัญหาว่าพิมพืตัว o เป็นตัว A แบบนี้ มองแล้วดันเห็นไม่ชัด ไม่ขยายนนะคะ ตรงนี้คือส่วนของการตั้งค่าทั่วไป ใครยังไม่เสร็จบรรทัดนี้ ทำให้เสร็จนะคะ ไม่อย่างนั้นไปขั้นตอนต่อไปไม่ได้นะ ตอนนี้เรา Import แล้วเรามาตั้งค่ากำหนดค่าให้มันก็คือให้เป็นตัวแปรที่ชื่อว่า Clock ทีนี้เราจะไปเรียนใช้งาน เราจะไปที่ตำแหน่งท้าย ๆ แสดงผลจะอยู่ประมาณตรง เดี๋ยวนะ เอาไปไว้ท้าย ๆ ก่อนนี่ ๆ แถว ๆ พวกนี้ แถว screen.blit อะไรพวกนี้นะ อย่างนั้นเดี๋ยวใส่ ใส่ไอ้นี่ให้ก่อนนะคะ ใส่ Hastag ก่อนใส่#ตรงนี้ ส่วนของการแสดงผลนะ คั่นส่วนไว้ จะได้รู้ นะคะ สังเกตตรงการแสดงผลเรา เพราะ screen bliteให้มันแสดงภาพพื้นหลังเรานะคะ ความจริง ตัวเดียวก็ได้นะนี่ลบออกก็ได้ลบตัวนี้ได้เลยนะนี่ เดี๋ยวค่อยมาลบ ไล่ลบเพราะฉะนั้น คำสั่งที่ 3 ก็คือให้ เดี๋ยวนะ เราจะ นี่นะคะ ตรงส่วนของการแสดงผลที่บอก ก็คือเราจะเรียกตัวแปร clock นะคะ clock.tick นี่ ระบุ ระบุว่า เวลาน่ะ เวลาที่ให้มันทำงานนี่ อยู่ที่ประมาณ 60 วินะคะ วินาทีนะคะ ไม่ใช่นาที เพราะฉะนั้น ตำแหน่งก้จะอยู่ตรงเมื่อกี้ที่มาร์กไว้การแสดงผล ก็คือตรงนี้นะคะ อย่ากด space bar กด Tab ให้ไปตรงกับตำแหน่ง screen บอกแล้วนะคะ เพราะบางคนจะติดเห็นย่อหน้าที่ 2 มันวรรคนี่ ใน sublime มันจะไม่ค่อยใช้วรรค ใช้ระหว่างคำ แต่ว่าคำย่อหน้านี่เราจะใช้ Tab นะคะ เราก็เรียกใช้ clock พิมพ์ C ปุ๊บ เลือก clock ของเรานะคะ แล้วก็ตามด้วย . memory ไม่ดีนะคะ จำไม่ได้ค่ะ ขอบอก สมงสมองไปหมด อากาศเย็น สกลนครหนาวนะคะ บอกเลยว่าหนาว เด็ก ๆ พากันไม่มานี่ t-i tick เป็นคำสั่งใน library นั่นเองนะคะ แล้วก็ตามด้วยวงเล็บใส่ 60 ตัวเดิมน่ะ 60 เดี๋ยวตัวเดิมเราแก้ได้ ให้นึกถึงนะ ถ้าเราลอง Run โปรแกรมแล้ว ตัว ตัวเกมเรามันวิ่งไปเกินไป เราก็ไปเพิ่มเวลาให้มันแต่ถ้ามันวิ่งช้า 60 แล้วมันช้า เราก็ลดเวลาลงนะคะ ก็คือให้นึกถึงน่ะ เวลา 1 วิ 2 วิ 3 วิ 1 คือเพิ่มใช่ไหม พอ 1 มันเร็วไปเราก็ต้องเพิ่มให้มันช้า ก็ต้องเพิ่ม แต่ถ้ามันช้าเราต้องลด ลดตัวเลขลงนะคะ หลักการ นี่คือเราจะได้ ยังไม่ Run นะคะ เพราะตัวที่เรา Run ถ้าเรากดมันก็จะไม่แสดงผลอะไรใด ๆ ทั้งสิ้นนะคะ ยังไม่กดรันนะคะ ไปทำต่อ เรายังเขียน Code ไม่เสร็จ อย่าลืมว่า Code ไม่ได้มีแค่ 3 บรรทัดแน่นอนนะคะ กดผิดอันอีก ไปไสล่ะ จะเอาตัวชี้ออก t ถัดไปนะคะลำดับต่อมานะคะ เรากำหนดไอ้นี่ไปเรียบร้อยแล้วนะคะ ข้ามนะคะ เราตั้งค่าหน้าจอเกม เราตั้งไปแล้ว set mode หรือ เราจะมาทำ Loop นะคะ มาทำ Loop ให้เขาไปแล้ว เดี๋ยวจะข้ามส่วนนี้ เพราะเรามาทำต่อจากอันเดิมนะ นี่ ๆ นี่ เราจะใส่ moving sprite เข้าไปได้นี่นะคะ เราต้องไปตรงนี้ก่อน เราจะมาสร้าง class ให้ก่อนสร้าง class เพื่อ เพื่อที่จะทำอะไร จำได้นะ ตัวเกม บอกแล้ว ในหนก่อน เราใส่เข้าไปแค่ตัวเดียว แต่ทีนี้เราจะเอาน้องมาทั้ง set เลย น้องการ์ตูนเรามาทั้ง set เลยนะคะ เพราะฉะนั้น เราจะต้องสร้าง class ให้น้อง เพื่อจะเรียกใช้ เราจะได้เรียกตามชื่อ Class ครั้งเดียวพอจบนะคะ ทีนี้ตอนจะสร้าง class นี่นะคะ รูปแบบก็คือเราจะต้องพิมพ์คำว่า class แล้วก็ตามด้วยชื่อของ class คือในการเขียนโปรแกรมนี่ การสร้าง Class จะช่วยให้เราไม่ต้องเขียนโปรแกรมใหญ่มาก ๆ หลาย ๆ ครั้ง หรือเขียนเรียกใช้ตัวอะไรก็แล้วแต่นะคะ ตัวรูปภาพนี่ หลาย ๆ ครั้ง ในรูปภาพนี่มีหลายรูปน่ะ ไม่อย่างนั้นเราต้องไปเรียกรูปหลายรูปเลยว่าอย่างนั้นเถอะ เราจะเรียกแค่ตรงใน clasครั้งเดียวนะคะ แล้วก็ใส่ : พอเสร็จชื่อ class ปุ๊บนี่จะต้องระบุ : นะคะ แล้วก็ใส่ statment เงื่อนไขอะไรตามหลังมา พร้อมนะคะ เราจะไปต่อนะคะ ดูดี ๆ นะคะ ชื่อ class จำไว้เลยนะคะ ถ้าเมื่อไรที่ให้สร้าง class เด็ก ๆ จะต้องพิมพ์ชื่อ class ตัวแรกด้วยตัวพิมพ์ใหญ่ เพราะฉะนั้น เดตรียมกด Caps lock นะคะ นะคะ เมื่อเราสร้าง class เสร็จ ลำดับต่อมา เราจะมาสร้าง method นะคะให้ class ของเรานั่นเองนะคะ method method minite ก่อนหน้าเราจะเปิดหน้านี้ไว้นะคะ เริ่มค่ะ ไปที่ Sublimeเหมือนเดิม ทีนี้ เขาบอกว่า อยากให้มันต้องอยู่ข้างบนเสมอเลย Class มันจะอยู่ตรงส่วนที่เมื่อกี้นะ ในที่โค้ดจะเห็นว่า class จะอยู๋ต่อจากส่วนของ impoนะคะ ใส่ # ค่ะ เพื่อจะได้รู้ว่าเป็น เราจะทำอะไร เราจะสร้าง class อยู่ต่อจาก เดี๋ยวนะ เพราะเมื่อกี้มันต้องอยู่ต่อจาก อยู่ต่อจากการตั้งค่าทั่วไปนะคะ เราจะอยู่ตำแหน่งนี้ถัดมา เพราะตรงนี้จะต้องโดนเรียกใช้ก่อนแล้วก็ค่อยมาตรงนี้ได้ ทำไมเป็นภาษาไทย กดผิดหรือ นะคะ ตอนนี้ ใส่ # เพื่ออธิบายว่าเราจะนำเข้าภาพต่อเนื่องหรือ Sprite Sheet เรานั่นเองนะคะ อธิบายไว้เด็ก ๆ จะได้รู้นะคะถ้าใครพิมพ์ # หรือคอมเมนต์เสร็จแล้วนะคะ ก็จะจะสร้าง class ได้เลยนะคะ พิมพ์ พิมพ์นะคะ พิมพ์ C บางคนพิมพ์ c ยังไม่ขึ้น พิมพ์ c-l ก็ได้นะคะ แล้วเลือกตัวแรก Class new class นะคะ คลิกเข้าไป กด Enter เห็นไหมคะ มันจะสร้างโครงสร้างของ class ขึ้นมาเลย มี class name นะคะ แล้วก็มี definition ที่จะตั้งค่านะคะ รูปแบบเหมือนไหม เหมือนในสไลด์เราไหม เห็นไหมคะ เห็นไหม ส่วนของ class ต่าง ๆ นี่นะคะ ขึ้นมาทีนี้มาดูตรงนี้ class name ที่เขียว ๆ แล้วมีไฟกระพริบ เด็ก ๆ ทำ แถบครอบ ตรง class name นี่ ที่มันขึ้นสีเขียว ๆ นี่ คือเราจะต้องเป็นคนตั้งชื่อให้ class ของเรานะคะ เพราะฉะนั้น class นี้ ที่จะนำมาใช้ หรือตัวเกมที่เรานำมาใช้ คือตัวอะไรคะ เด็ก ๆ จำได้นะ ของใครให้ดูที่ตัวนี้ ตัวเกมที่เราเอามาใช้ในครั้งก่อนนี้ เราใช้คำว่า cat ใช่ไหม ของเด็ก ๆ ชื่ออะไรคะ เพราะฉะนั้น เอาชื่อ class เป็นตัวนี้ แต่อย่าลืมว่า ตัวต้นของมันคืออะไรคะ ตัวใหญ่ใช่ไหม เดี๋ยวเราค่อยไปลบบรรทัดนั้น เรายังไม่ run มันไม่ีปปัญหา กด C -a-t เป็นตัวใหม่นะคะ class กับ cat เห็นไหม class จะพิมพ์ด้วยตัวแรก จะต้องเป็นตัวพิมพ์ใหญ่เสมอ ชื่อ class ต้อง ใหญ่เสมอนะคะ ทีนี้มาดูในส่วนไอ้เขียว ๆ นี่อีกที่เราจะต้องแก้ object มัน วัตถุที่เราจะเอามาเราจะระบุอะไรลงไปนะะค ใน object ของ ของอุบลตัวอะไรนะลูก ก็ boy แต่เดิม boy เล็ก ใหญ่นะคะ อย่าลืมนะคะ ตัวอักษรตัวแรกต้องเป็นตัวใหญ่นะลูก ถ้าเป็นชื่อ Class ชื่อ class สังเกตชื่อตัวแปรตัวเล็กตัวใหญ่ก็ได้ แต่เมื่อตั้งไปแล้วตั้งเช็กนึกออกนะ แต่ถ้าชื่อ class ต้องขึ้นต้นด้วยตัวใหญ่เสมอ ต่อมา Object ใน Object นี้เราจะใส่อะไรเข้าไปใน class ของเรานะคะ มาดูกัน object ที่เราจะใส่ก็คือเรียกใช้ sprite คือ pygame มันจะมี library บอกแล้ว เพราะฉะนั้น Library ที่จะใช้ ก็คือดูนะคะ เด็ก ๆ ดูดี ๆ Sprite Sheet นี่ 2 ครั้งนี่ sprite ตัวแรก ตัวพิมพ์เมันจะเป็นคนละตัว นึกออกนะ เพราะอะไร เพราะเห็นไหม sprite ตัวที่ 2 ขึ้นต้นตัว s มันจะเป็นตัวใหญ่ แล้วถ้าเวลาแม่บอกว่าเรียกใช้ spriเราต้องพิมพ์ตัวใหญ่ก่อน นึกออกนะ แต่ถ้าพิมพ์เล็กทั้งหมดนะคะ มันจะมี 2 ตัวนะคะ เพราะฉะนั้น ใน object เราจะเรียกใช้ Library pygame .Sprite ใหญ่ ว่าอย่างนั้นเถอะ เพราะฉะนั้นกลับมาที่ตัว นี้เราใน object เราพิมพ์ p ตัว p pygame กด enter ได้เลย แล้วกด Enter นะ . ใส่ . นะคะ spritesขึ้น Sprite ใหญ่ ยังไม่กดนะเด็ก ๆ เพราะ sprite แรกคือ sprite ตัวเล็กนะคะ s-p-r-i-te..Sprite ที่ 2 ต้องเลือก sprite ตัวใหญ่ไปไหนแล้ว อยู่เกือบล่างสุดเลยเห็นไหม คือ sprite ที่ 2 มันสร้างไว้ใน คือ library มันมีอยู่แล้วนึกออกนะ โอเคนะคะ เพราะตัว Colon เราไม่ต้องใส่เลย เราอย่างนี้ ไอพวกเครื่องหมายมันจะไม่หาย ดูใหม่นะ ไอ้ spite ที่ 2 นะ กด s ปุ๊บ ให้เลื่อนไปหา Sprite ใหญ่เห็นไหมคะ กด Enter เพราะมันเป็นตัวที่เป็นอยู่ใน library แล้วว่าอย่างนั้นเถอะ แต่ sprite บอกว่า ฉันสร้างตัวนี้ขึ้นมานะคะ เพื่อจะเรียกใช้ เขาบอกตรงนี้เราจะลบออกนะคะ เป็นแค่อธิบาย ซึ่งเราอธิบายไว้ข้างบนแล้ว เรากด Delete ได้เลย เราพยายามลดบรรทัดในการเขียนโค้ดนึกออกนะคะ คือ 1 บรรทัด จะใช้พื้นที่ในการเก็บนะคะ เมื่อกี้เราสร้าง class ไปแล้วทีนี้เราจะมาสร้างส่วนของ Statement นี่นะคะ ต่อก็คือส่วนนี้ เห็นไหม def def ย่อมาจาก Definition init นะคะ มันจะพิมพ์ของมันมาแล้ว เพราะฉะนั้น ถ้าเด็ก ๆ พิมพ์เอง จะพิมพ์ไม่ถูก มันพิมพ์มาแล้ว เราจะมาแก้เฉพาะในวงเล็บ เอาตัวนั้นออกมันบังโค้ดเรานะคะ นะคะ เราจะพิมพ์จนถึงตัวนี้ก่อน speน่าจะพิมพ์มาแล้วนะคะ self ต่อจาก self self แล้วตามด้วยอะไรเห็นไหม นะคะ ดูนะคะ pos_x, pos_y ตัวแปร pos_x pos_y นะคะ ย้ายตำแหน่งเดี๋ยวพิมพ์ไปก่อน posใส่ _x คั่น ตัวเดียวกันน่ะล่ะ แล้วแต่จะตั้ง pos คือแยกนี่ ใส่ _ เข้าไปนี่ มันจะได้เห็นว่า pos มาจาก position นั่นเองนะคะ pos นี่ pos มาจาก position นะคะ แล้วก็ตามด้วย _x ก็คือแกน x ตำแหน่งของแกน x แกน y นั่นเองก็คือเราจะเอาไอ้รูปนี้มาวางในตำแหน่งนี้ ในแกน x แกน y ที่ระบุนะคะ นะคะ ก็คือจะเริ่มกำหนดว่าตำแหน่งของสิ่งที่เราจะเรียกมานี่ จะอยู่ตรงไหน อะไรอย่างไร บอกตำแหน่ง ระบุตำแหน่งแล้ว บรรทัดต่อมา มันจะเริ่มยาวขึ้นแล้วนะเด็ก ๆ ดูดี ๆ นะ ตรงช่องนี้เห็นไหมคะ class name เราไม่ต้องระบุลงไป ลบออก ให้มันเป็นเปล่า ๆ แล้วเหลือแค่นี้ บรรทัดบรรทัดที่ต่อจาก Definition นะคะ บรรทัด Suer () นี่ ตรงที่อยลบออกนะคะ บรรทัดนี้ เราจะเหลือแค่นี้ โอเคนะคะ บรรทัดถัดจากนี้ พอเริ่มเรียก self นี่ มันจะยาวขึ้นนะคะ แต่เราจะพิมพ์แค่ 1 ครั้ง แล้วใช้วิธีคัดลอกแล้วก็ไปแก้ แก้เฉพาะตัวนะคะดูนะคะ ดู spite sheet นะคะ self ตัวแรก ตัวแรกนี่ sprite sprite เล็ก แล้วเติม s ให้เขาด้วย มันตะคนละตัวกับตัวบนนะคะเด็ก ๆ เติม s เข้าไป ตรงนี้ ค่าที่ใส่ ก็คือสี่เหลี่ยม วงเล็บแบบสี่เหลี่ยม โอเคไหม ดูดี ๆ นะคะ sprite ใน self นี่เป็น sprites ที่เติม s เข้าไปด้วย เราเรียก sprites ปุ๊บ กด มี sprite ขึ้นมานี่นะคะ แล้วเติม s เพิ่มเข้าไปโอเคนะ มันจะเป็นคนละตัวนะ มันมีหลายตัว ถ้าบอก sprites พอเรียกไปแล้วนี่ อย่ารีบ เห็นไหม ตัวนี้ 1 ใช่ไหม 2. Sprite ใหญ่ 3 ตอนนี้ sprite เรามี 3 sprite นะคะ โอเคนะคะ บรรทัดที่เหลือจะเริ่มไป ไป ไปเรียกใช้คำสั่งที่มันให้โหลดรูปที่เราเก็บไว้น่ะ มา เรามีกี่รูปเราต้องวางเรียงจนครบทั้งหมด เรามีกี่รูปเราก็วางไปให้ครบนั้นนะคะ เดี๋ยวเขียนให้ดูก่อนตอนนี้เราระบุ sprite ไปล้ว spruสิ่งที่เราจะทำต่อมา บรรทัดต่อไป เราก็พิมพ์ self s-eเลือก self เหมือนเดิมนะคะ . .sprite เหมือนกัน แต่เลือก sprite sprite ที่มีตัว s เลือกให้ถูก ตามด้วย . self.sprites. เพราะ เพราะตัวแรก sprites ตัวแรกเราแจ้งโปรแกรมไปแล้ว เราใช้ sprites มานะ มันได้เลยนะคะ . แล้วก็ตามด้วย โค้ดจะยาวหน่อย ขออีกรอบหนึ่ง ขออีกรอบหนึ่ง .append แล้วก็ pygame.image.load โอเค .append a-p-p-e-n-d เรียกใช้คำ... ใน libary append.พิมพ์ append ผิดตรงไหนนะ appes. ในวงเล็บ ใส่วงเล็บนะคะ pygame. p-y กด py แล้วกด Enter ให้เลือกใช้ .image เหมือนเดิม i-m นะคะ .load เลือก load ถ้าใครไม่ขึ้น แสดงว่าบางทีพิมพ์ผิด ลองลบออกก่อน อย่า ย่อลงก่อนนะคะ ที่ต้องย่อ เพราะว่ามันยังมีต่ออีกเดี๋ยวเด็ก ๆ จะไม่เห็นว่าในบรรทัดนี้มีอะไรต่อนะคะ ก็คือตอนนี้เราจะมาเรียก self.sprites.append self.sprites.appenแล้วก็ให้สั่งให้ pygame มันไปโหลดภาพ แล้วมาดูภาพที่เราจะโหลด กดผิดนี่น่ะ วงเล็บทีหลัง วงเล็บหลัง load นะ sppend.pygame image.load แล้วก็ชื่อรูป รูปตัวไหน ชื่อรูปเด็ก ๆ ดูนะคะ บอกแล้ว บอกวิธีไปแล้วนะ ถ้าไม่อยากพิมพ์ผิดเหมือนอย่างนี้ เราไปที่ไฟล์ที่ภาพเราแล้วเราคลิกขวาที่ตำแหน่ง Properties แล้วเราก็ก๊อปชื่อไฟลืมันมาเลย มันจะทำให้เรา ไม่พิมพ์ชื่อไฟล์ผิด นึกออกนะ แล้วก็เช็กด้วยว่านามสกุลมันเป็นนามสกุลอะไร png โอเค.p.png แบบนี้นะคะ มันจะไม่เกิดปัญหาการพิมพ์ชื่อไฟล์ผิด เพราะฉะนั้นภาพที่เป็น sprites เรามีกี่รูปบรรทัดต่อไปไม่ต้องพิมพ์ใหม่ เด็ก ๆ ดูนะคะ ใช้วิธี Copy บรรทัด ที่เราสั่งมันโหลดภาพ กดctrl + c แล้วก็กด กด Ctrl + V ลงไป เราก็เปลี่ยนแค่อะไรคะ หมายเลข ใช่ไหม 2 ถูกไหมคะตรงนี้นะคะ sprite เด็ก ๆ ต้องไปสั่งให้มันโหลดรูปที่เราจะเอามาใช้น่ะ ให้ครบตามจำนวนนึกออกไหมลูก เพราะฉะนั้น เพิ่มบรรทัดเอาเองนะ ของใครมีกี่รูปจำนวนบรรทัดของรูปที่โหลด มันก็จะเท่ากับภาพตัวเอง นึกออกนะ copy copy อันที่ 1 แล้วก็ไปเปลี่ยนหมายเลขถูกไหม ถ้าของใครมีหมายเลข ถ้าใครไม่มี นึกออกนะ แล้วก็วาง จนกว่ามันจะครบจำนวนไอ้ตัวนั้นของเรานะคะ เดี๋ยว...ตรงนี้นะคะ ชื่อไฟล์ภาพนี่ ให้ดูในเครื่องตัวเองนะลูก ไม่ใช่มาพิมพ์ตาม ก็คือชื่อภาพใครภาพมัน ภาพของใครของมัน อันนี้ชื่อไฟล์ภาพที่อยู่ในเครื่องของแม่ ของเด็ก ๆ ชื่ออะไรเด็ก ๆ ก็ดูเอาในโฟลเดอร์ตัวเองนะคะ มีกี่รูปหว่า เดี๋ยวขอไปดูก่อนนะ ว่าของเรามีทั้งหมดกี่รูป ของเครื่องแม่มีถึง 10 ก้จะใส่ เพิ่มอีก 5 ตัว มีเยอะก็จะก็อบแผงใหญ่ ๆ เลย 5 แล้วก็นับต่อ 6 7 8 9 10 เพราะฉะนั้นให้เด็ก ๆ ดูในโฟลเดอร์ตัวเองนะ ไฟล์ภาพใครชื่ออะไรก็ ก็อบฯ มาวาง แล้วค่อยมาแก้อย่างนี้นะคะ อันนี้ของแม่มี 10 ภาพ แม่ก็ใส่จนครบแล้ว 10 รูป ของเด็ก ๆ มีกี่รูป เดี๋ยวไปช่วยดูให้จะตรวจให้นะคะ ของใครมีกี่รูป ใส่วงเล็บน่ะถูกแล้ว เห็นไหมล่ะ เราว่าไม่ใส่ถึงว่าทำไมมันไม่ขึ้น ตรง pygame ใส่วงเล็บให้ด้วยนะ นั่นล่ะ ก็ว่าใส่แล้ว จำไม่ได้ ตอนแรกน่ะใส่แล้ว แต่นึกว่ามันไม่ขึ้น ก็เลยเข้าใจว่าตัวเองใส่ผิดเดี๋ยวไปเดินดูนะคะ มันจะต้องขึ้นอย่างนี้ เป็น set set เลย self สีส้ม มี append ขั้นเป็นสีฟ้า แล้วไปปิดด้วย load ทีนี้เดี๋ยว ดูนะคะ ชื่อไฟล์เราลืมแน่ ๆ เลย เมื่อกี้เดินไปผิดแน่ ๆ มันต้องใส่อะไร เครื่องหมายอะไร คำพูด นึกออกนะ ใส่เครื่องหมายคำพูด จะเอา single Single หรือ Dก็ได้ ตรงชื่อไฟล์นี่เห็นไหม ใส่ลงไป ลืม ๆนะคะ เห็นไหมคะ เด็ก ๆ ใส่เครื่องหมายคำพูดตรงที่เราจะเรียกใช้ด้วยลืมเยอะ เยอะหลายลืม นี่นะ เมื่อกี้ลืมใส่นะคะ ใส่เครื่องหมายคำพูดเข้าไปให้น้องด้วย เห็นไหมเพราะถ้าเช็กจากจากสไลด์นี่ ตรงชื่อไฟล์มันจะเป็นสีเหลือง เห็นไหมคะ มันถึงจะถูกต้อง เพราะฉะนั้นแก้ ใส่ single quote หรือ double quote ก็ได้ ใส่ตัวไหนก็ได้นะคะ ตัวใดตัวหนึ่ง ใส่ single ก็ใส่ ใครจะใส่ double ก็ใส่ เดี๋ยวทีนี้บางรูปของบางคน รูปมันไม่ต่อเดี๋ยวตอนรันออกมามันจะเป็น ฮา ๆ นะเด็ก ๆ เพราะฉะนั้น เลือกรูปมาใช่ก็มีส่วนนะคะ เช็กนะคะเช็ก อันดับแรกเช็กที่ชื่อไฟล์ภาพที่เราจะนำมาใช้ ว่าชื่อถูกต้องโอเคไหม แล้วก็รูปที่กี่รูปสังเกตนะคะ ถ้าใครแก้ครบแล้ว ตัวชื่อไฟล์ภาพจะเป็นสีเหลืองทั้งหมด แสดงว่าถูกต้องแล้วนะเด็ก ๆ ต้องเป็นอย่างนี้นะคะ ใน Code เราต้องเป็นอย่างนี้ถึงจะถูก คือคำสั่งมันเยอะเพราะมันเป็น class คือ มันจะลำบากตอนแรกเท่านั้นนะคะ ไหนลองสิ ตัวเล็ก ตัวใหญ่ มันได้อยู่มันเป็นนามสกุลนะ แต่ชื่อห้ามผิด มันรู้อยู่ โปรแกรมมันจะรู้อยู่มันน่าจะเว้นวรรคผิด เดี๋ยวตอน error ก็จะรู้กัน สร้าง method แล้ว ทำอะไรต่อ โหลด sprite sheet แล้ว มีบรรทัดต่อนะคะเด็ก ๆ นี่ เราจะระบุตำแหน่งว่า ตำแหน่งตัวปัจจุบันของตัว sprite เราจะเริ่มที่ 0 นะคะ แล้วก็จะมาเรียกใช้ จะสร้าง จะทำ Animation เห็นไหม Create Animation แล้ว ขั้นต่อไป นะคะ เราโหลด ตอนนี้เราสั่งให้มันไปดหลดภาพ ต่อมา เราจะสร้างส่วนของ animation นะคะ นะคะ ใส่ # ค่ะ ใส่ # เราจะเข้าสู่การสร้าง Animation แล้ว สร้าง...สร้างภาพเคลื่อนไหวก็ได้ เดี๋ยวจะงง เอาเป็นภาษาไทย สร้างการเคลื่อนไหว นะคะ # ไว้ จะได้รู้ส่วน ตำแหน่งอยู่ตรง Self นะคะ ใช้วิธีกด Tab นะอย่าใช้ Spacebar เข้าไปให้ตรงกับตำแหน่ง seft เดิมเรา พิมพ์ self ภาษาไม่เปลี่ยน พิมพ์ self พิมพ์ s เลือก self .ดูนะคะ คำสั่งนี้ยาวหน่อยหนึ่ง self.current_sprite sprite ธรรมดานะคะ อันนี้จะเป็นตัวแปรนะ current_sprite แอันนัชc-u-r-r-e-n-t _s-p-r-i-t-e นี่เป็นตัวแปรที่เราจะสร้างเพื่อระบุว่าตำแหน่งเริ่มต้น หรือตำแหน่งปัจขจุบันนี้ ก็คือให้มันเริ่มที่ 0 self current_ = 0 1นะคะ คำสั่งแรก ก็คือกำหนดให้ตัวแปรที่ชื่อ current sprite มีค่าที่ 0 ก็คือ เป็นคำสั่งที่บอกว่านี่ค่าเริ่มต้นของภาพนะคะ จะต้องเริ่มที่ 0 เสมอนะคะ กำหนดไว้self current sprite = 0 current ใส่ _ ด้วย คือแยก 2 คำน่ะ สาเหตุที่มี _ มีอะไรอย่างนี้ บางทีประโยคมันยาวถ้าเราไปพิมพ์ติดกัน เวลาเราเช็กโค้ดมันจะลายตา นึกออกนะ เพราะฉะนั้นเราใช้ตัว _ เพื่อในการแยกคำน่ะค่ะ ไปบรรทัดต่อไปนะคะ เราจะกำหนดให้เรียกใช้ เรียกรูปนั่นเองนะคะ พิมพ์ s แล้วเลือก self เหมือนเดิม ตามด้วยเครื่องหมาย . .อะไร .image นะคะ คลิก i-m-a-g-e = ใส่เครื่องหมาย เท่ากับนะคะ วรรค = self อีกครั้งหนึ่งค่ะ เรียกใช้ self อแล้วเลือก self .sprite sprites ที่เราจะใช้ ก็คือ sprites s นะคะ ไปหา sprites นะคะ spriน่ะค่ะเราเลือกตัวนี้นะคะ แล้วก็ใส่วงเล็บสี่เหลี่ยมใหญ่เข้าไปแล้วพิมพ์ เรียกใช้ self current sprite นะคะ รอบต่อมา ในวงเล็บสี่เหลี่ยมใหญ่นี่เราจะเรียกใช้ self. พิมพ์ c แล้วเลือก current c-u เห็นไหมคะ เลือก current sprite นี่เลย เห็นไหมจะได้ไม่พิมพ์ผิดที่เราสร้างไว้นั่นเองนะคะ บรรทัดต่อมาเลยนะคะ พิมพ์ self เหมือนเดิมนะคะ เลือก self.อันนี้พิมพ์เองนะคะ rect r-e-c-t rect self.rect = self วรรคก่อน selfนะคะ เลือก self.เลือก self.image ค่ะ i เลือก imageแล้วก็ ใget g เห็นไหมคะ .get_r-e-c-t rect นะคะ แล้วก็วงเล็บ ก็กำหนดอีกทีหนึ่งนะคะ self เหมือนเดิม เลือก self เหมือนเดิม. เหมือนเดิมค่ะ อันนี้กำหนดตำแหน่งrect top นะคะ rect ปุ๊บ เลือก rect แล้วก็ .top t-o-p top แล้วก็บนซ้าย top แล้วก็ left l-e-f-t top left นะคะ = วงเล็บใหญ่ วงเล็บสี่เหลี่ยมใหญ่ pos เลือก pos_x แล้วก็ใส่ : แล้วก็เลือก pos_y นะคะ เห็นไหมคะระบุตำแหน่งแล้ว อยู่ที่ pos_x pos_yของเรานะคะ ให้ค่าเริ่มต้นในการทำงานเริ่มที่นี่ เช็กดี ๆ นะคะ ถ้าพิมพ์ถูกแล้วสี สีจะขึ้นแบบนี้เลย สี self สีตัวเลข สี = นี่ จะขึ้นอย่างนี้เลย ถ้าใครไม่ขึ้นนี่แสดงว่า พิมพ์ตรงใดตรงหนึ่งผิดแน่นอน โครงสร้างผิดแน่นอนะคะ Sublime จะช่วยในการเช็ก Coding ได้ดีเลยนะคะ ใครยังพิมพ์ 1 2 3 4 4 บรรทัดนี้ไม่เสร็จ พิมพ์เสร็จหรือยังคะ ดูดี ๆ นะคะ sprites ที่ใช้ sprites ที่เรียกใช้คือ sprites นะคะ ตรงนี้ ตรงตำแหน่งนี้เรียกผิด ชีวิตเปลี่ยนนะ มันจะไม่ขึ้น ไม่อย่างนั้นก็จะ Error ไปเลยโอเคนะคะ ยังไม่จบ ยังไม่จบ โค้ดมันเยอะหน่อยหนึ่ง พอเวลาไปเรียก ไปเรียกนิดเดียวจริclass class ก็คือ class จะใหญ่หน่อย เรา Create Animation แล้ว สิ่งที่เราจะทำต่อไป นี่นะคะ เราจะมาเรียกใช้มันแล้วนี่ ๆ ๆ ไม่ใช่เรียกใช้ เราจะทำ sprite นี่ จัด จัดมัน Group มัน Group Group รูปมันน่ะ จากภาพใหญ่ ๆ เป็นภาพเดียวนะคะ นี่นะคะ สร้าง sprite แล้วก็ group น้องด้วยนะคะ คือคำสั่งนี้เลย มันเป็นไอนี่ มันเรียนรวม สอบแล้วหรือ สอบแต่เออ ดูนะคะ ส่วนต่อมาเมื่อกี้เรา เราจะเรียกใช้มันเราจะสร้างแล้วก็ไอ้นี่ ตำแหน่งจะอยู่ที่ หลังเงื่อนไขนะ ตำแหน่ง Code เสร็จหมดแล้วนะคะ 4 บรรทัดนี้ใครยังไม่เสร็จโอเคนะคะ เรามาที่ตำแหน่งนี้ เห็นไหมคะ ตำแหน่งของการแสดงผลนี่ ก่อนตำแหน่งนี้นิดหนึ่งนะคะ ใส่ # เข้าไปเพื่อจะอธิบายว่าตรงส่วนนี้เราจะสร้าง ตั้งค่าแล้วก็ มันไม่สร้างมันสร้างไปแล้ว เราจะทำภาพต่อเนื่องให้มันเป็นGroup มันเข้าไปให้มันเหมือนมันเป็นรูปเดียวน่ะชื่อพอแปลเป็นไทยแปลลำบากมากเลย ขอเป็นภาษาอังกฤษแล้วกัน เออ อธิบายยากคำไทยคำเยอะเกินอธิบายเรานักคอมพิวเตอร์ เราแปลด้วยภาษาอังกฤษเป็นภาษาc-r-e-a-t-e create_sprites gand group คือ ไอ้รูป sprite ที่เราทำเสร็จแล้วนี่ เราจะนำมันมา รวมให้มันเป็นเหลือรูปเดียวน่ะ จากหลาย ๆ รูปน่ะ นึกออกนะคะ นะคะ เรียน ๆ ๆ กำหนดตัวแปรmoving เคลื่อนไหวนะคะ เคลื่อนไหว moving_การเคลื่อนไวของภาพ sprite เรา moving_sprites= pygame กด p เลือก pygame.sprite พิมพ์ sprite เลือก sprite ตัวเล็กที่ไม่มี s ดูดี ๆ นะคะตัวที่เลือกpygame.sprite นี่เป็น sprite ที่ไม่มี s นะคะ .Group Groใช้ตัวใหญ่ เพราะตัวนี้มันเป็นฟังก์ชันที่เขาสร้างไว้แล้วนะคะ ถ้าตัวใหญ่นี่ มันคือ class class ที่ชื่อว่า grอยู่ใน library นะคะจะไปเรียกใช้ class จาก group นะคะ เพราะฉะนั้นเลยใช้ตัวใหญ่ สังเกตนะคะ Group ใหญ่นะคะ ต่อไปบรรทัดต่อไปนะคะ สิ่งที่เราจะทำต่อมาก็คือประกาศตัวแปลเพื่อเรียกใช้ ตัว class ของเรานะคะ class เรา ชื่อ class ตัวใหญ่มันใช้คำว่า cat ใช่ไหม ตัวแปรเราก็จะใช้เป็นตัวเล็กก็จะเป็น cat เล็ก = Cat เพราะเราจะเรียกใช้ class เราต้องเรียกตัวใหญ่นะคะ ฝน Class ก็จะมี ด้วย ในวงเล้บใส่อะไร ตำแหน่งค่ะ ตำแหน่งของไอ้ตัวนี้ ลองใส่ก่อนนะ ขอลองที่10 10 อยากรู้เหมือนกัน มันจะไปโผล่ตรวไหน แล้วก็กำหนดให้ตัวแปร Movie นี่นะคะ นำเข้าไอ้รูปนั้นน่ะ ให้มัน Group พิมพ์ M แล้วเลือก moving_sp.spriนะคะ sprite นี้ใช้ Sprites ที่เติม s นะคะ ดูดีๆ ไม่เหมือนกันนะคะลูก .add เพื่อให้มันAdd อะไรเข้าไป ให้มัน add ตัวแปร Cat เล็กของเราเข้าไป c a เล็ก โอเค ให้มันเอาไปไว้ที่ cat นี้ คือเป็นเอาภาพที่มันต่อกันหลาย ๆ ภาพนี่มาให้มันทำให้มันเป็นภาพเดียวนะคะ รวมกันเป็นภาพ 1 ภาพ ให้มันดูเหมือนเป็นรูปเดียวนะคะ 3 บรรทัดนี้เสร็จหรือยังคะ ใครยังไม่เสร็จ ยังนะคะ ถ้าอย่างนั้นเดี๋ยวไปต่อไม่ได้ มันจะขาดตอน เช็กนะคะเช็คตรง Spritet ไม่มี s นะคะ ดูดีๆ sprที่เรียกใช้หลัง . มี s นะคะ ต่างกันตรงนี้ เพราะมันจะไม่ขึ้น Error เพราะมันสร้างแล้วมันโดนสร้างแล้ว เช็กนตรงนี้ 2 จุดนี้ พอ sprite ที่กำหนดใน moving_sprite นี่ไม่มี เวลาเรียกน่ะ เรียกต้องมี s นะคะ เป็นต้น โอเคนะคะ น่าจะเสร็จกันหมดแล้วทุกคน มาดูที่เราจะต้องทำต่อเราจะสร้างฟังก์ชันให้มันวิ่งทีนี้นะคะ กำหนดฟังก์ชัน run เห็นไหมคะ แล้วก้ update เมื่อมันวิ่งไปแล้วนะคะ เด็ก ๆ ต้องบอกว่า ทำไมวันนี้ โค้ดเยอะจังเลย คือมันยาวน่ะ แต่พอสร้างแล้ว มันจะใช้อันเดียวจบเอาไปใช้กับอันต่อไปได้ เพราะฉะนั้น ตัวนี้นะคะ เราจะไปที่บรรทัดที่ต่อจาก class ถูกไหมคะ บรรทัดสุดท้ายของ class นี่นะคะ Enter ลงไป ใส่ # หน่อย เราจะบอกเขา บอกโปรแกรมบอกตัวเอง บอกตัวเองนี่ ถ้าใส่ # บอกตัวเองว่า ตรงส่วนนี้เราทำอะไร สร้างฟังก์ชันค่ะ สร้างฟังก์ชัน ตรงส่วนนี้เราจะสร้างฟังก์ชัน run นะคะ ที่ชื่อว่า Run กับ Update Runแล้วก็ update 2 ตัว รูปแบบของการสร้างฟังก์ชัน ก็คือ deffinition คำว่า def นั่นเองนะคะ Tab Tab เข้าไปแค่ 1 ครั้งนะคะ มันจะไม่อยู่ตรงกับ self นะคะ มันจะอยู่ก่อน self ddef function นะคะเด็ก function นะคะ definition ชื่อฟังก์ชันก็คือ run ตัวแรก ตัวแรก ตัวเขียว ๆ นี่ ไม่ใช่ในวงเล็บ ที่ขึ้นคำว่า function เป็น run นะคะ เพราะ function ที่เราใช้มันชื่อว่า run เราจะใช้ runนะคะ แล้วก็เรียก self มากด s แล้วเลือก self ในส่วนของบรรทัดที่ 2 นะคะ พิมพ์ self ค่ะ กด s เลือก self.run _ animate นะคะ animate มาจาก animation จะยาวไป Animate animate run animate anime นี่สั้นกว่าอีก run animate จะงงไหมล่ะนี่ เอา animate แล้วกัน= True ทำงานเมื่อเป็นจริงจะใส่เงื่อนไขแล้วนะคะ นะ t เลือก Ture Ture ใหญเรามี function run แล้ว สร้างอีก 1 ฟังก์ชันนะคะ def เหมือนเดิม เลือก เหมือนเดิม ตรงตำแหน่งชื่อฟังก์ชัน เปลี่ยนเป็นเราสร้าง 2 ตัวนะ เราบอกเราจะสร้าง 2 ตัว ก็คือ run กับ Update นะคะ ชื่อฟังก์ชันไม่จำเป็นต้องใช้ตัวใหญ่ เรียกใช้ self ค่ะ self แล้วก็ใส่ : แล้วก็เรียกใช้speed ในส่วนของ statements หรือ นี่นะคะ เราจะมากำหนดเงื่อนไขให้มัน มันทำงานนั่นเองนะคะ ก็คือใช้คำสั่ง if ค่ะ if statements นี่ if condition ตัวแรก ไม่พิมพ์เองนะเด็ก ๆ เดี๋ญวรูปแบบมันจะผิด ให้เลือก i แล้วเลือก if condition นะคะ ไม่พิมพ์นะคะ เลือกใช้...เรียก self มา self .เลือก run.ที่สร้างไว้มาใช้งาน ถ้ามี if คำสั่ง = มี 2 ตัวนะคะ == Ture ค่ะ True พิมพ์ T แล้วเลือก True ใหญ่นะคะ ตรงส่วน statements pass เราจะเรียก current_sp มานะคะ พิมพ์ self เหมือนเดิม self self.cu เลือก current_sprite กด Enter เราจะเพิ่ม นึกออกนะ พอเวลาที่มันเคลื่อนน่ะค่ะ ตำแหน่งปัจจุบันมันเริ่มที่ 0 เราจะต้องเพิ่มค่าให้มัน บวกนะคะ บวก ใส่เครื่องหมายบวกแล้วก็ = ก็คือเพิ่ม ในความหมายก็คือ ถ้าใส่ บวก ก็คือบวก บวกอะไรเข้าไป ให้ + เข้าไปใน speed speedที่เราสร้างไว้ กด sp แล้วเลือก speed กด enter นะคะ เราจะเพิ่มเงื่อนไข ซ้อนเงื่อนไข เพราะอันนี้เพิ่มแค่ speed นะ เพิ่มความเร็วเข้าไป กด i แล้วเลือก if contition เหมือนเดิมนะคะ if int int ตัวแปรนี้นะคะ ไม่ใช่ตัวแปร มันเป็ฯ วงเล็บค่ะ ใส่ เปิดแล้วปิด ใส่เข้ามาทีเดียวเลยนะ จะได้ วงเล็บจะได้ไม่หายว่าอย่างนั้นเถอะพิมพ์ self แล้วเลือก self นะคะ .current_sprite ค่ะ พิมพ์ c-u แล้วเลือก currentเงื่อนไข ก็คือให้มันเช็กว่ามันยังน้อยกว่าหรือเท่ากับ len len l-e-n ใส่วงเล็บค่ะ เราจะเลือก self s พิมพ์ s แล้วเลือก self sprites sprites s นะคะ รอบนี้จะเลือก spries นะ s-p s-p-r-i-t-e-s sprites นะคะ ใน lenge เลือก self.sprites นะคะตรง Statement pass นะคะ พิมพ์ self เหมือนเดิม เลือก self. พิมพ์ C-u แล้วเลือก current_sp= 0 นะคะ ค่าเริ่มต้นของ self current sprite ตอนนี้มันกำลังเช็ก ให้มันเช็กค่ามันจะวนเหมือนวนลูปน่ะค่ะ แล้วก็ self เหมือนเดิม Run animation เลือก Run animation = False มี True แล้วก็ต้องมี False ก้คือถ้าไม่เป็นจริง ก็จะจบการทำงาน จะทำเมื่อเป็นจริง มันจะเข้ามาเช็กค่าค่าก่อน กด F ใหญ่แล้วเลือก Falseบรรทัดนี้เสร็จแล้วกดย้อนหลังกลับไปที่ if แรกนะคะ if ที่หนึ่ง เห็if ที่ 1 พิมพ์ self ค่ะ s self. i เลือก image = self self เหมือนเดิมเลือก self.sprites นะคะ เลือก spรที่เติม s สี่เหลี่ยมใหญ่ วงเล็บสี่เหลี่ยมใหญ่เรียก...เรียก int เรียก int เลือก int ใส่วงเล็บเข้าไป ในวงเล็บเลือก self.currentเลือก self มือไวอยู่เลย self.c current.sprite curent_spritesตอนนี้เราทำส่วนของฟังก์ชัน Run กับ update เสร็จแล้วนะคะ มี 2 4 6 8 10 เดี๋ยวจะไปเช็กตำแหน่งนะคะเด็ก ๆ ตำแหน่งของฟังก์ชัน ดูต่อนะคะ วันนี้น่าจะยาวหน่อย แต่ผลน่าจะคุ้มค่าพอใจ เป็นที่พอใจของเด็ก ๆ อยู่ เราจะมาเรียกใช้ตัวนี้นะ key เรากำหนดแล้วแต่เราต้องเรียกใช้มันนะคะ ตรง เดี๋ยวนะ เงื่อนไข if keyvelo moving cat ตำแหน่งจะต้องเป็นpygame.quit ตรง key if key เป็น K_เป็น K_RIGHT ตำแหน่งนี้นะครับ ดูนะคะ เด็ก ๆ จะเรียกใช้ตัวแปร Cat ที่เรียกฟังก์ชัน run มาทำงานนะคะ ทีนี้ที่เราจะไปลบก็จะมีเดี๋ยวเด้อลบตรงไหนบ้าง เราจะเริ่มลบแล้วนะ ลบตรงนี้นะคะ นำเข้าภาพนี่ ลบออกเลยเพราะเราเอาไปไว้ที่ class แล้วเด็ก ๆ ไปหาตัวเดิม โค้ดเดิมเก่าน่ะ ลบออก เดี๋ยวมันจะงงที่เรานำรูปเข้าในสัปดาห์ก่อน เราเขียน # ไว้อยู่ เอาออกนะคะ ไปไหนอีก icon โอเค ลองกด B ดู Test ค่ะ Ctrl B Test Error Error ก็มา บรรทัดที่เท่าไรนี่line 75 line 75 ไหน ดูบรรทัดนะคะ ใครของมัน มันบอกว่าอย่างไร identity i ห75 clock มันบอกว่า Identation error shell command python clock.tick Error เดี๋ยวนะขอดูต่อขอดูโค้ด เดี๋ยวไม่ย้อนโค้ดนะคะ ที่การตั้งค่าทั่วไป พอย้ายตำแหน่ง เอา screen ใส่ข้างล่างนะคะ ล่างไอ้ screen.blit นี่นะคะ โอเค แล้วก็...ไปต่อ ไปต่อ เราน่าจะต้องสร้างอีกตัวหนึ่ง รู้แล้วเราลืมตรงนี้ไปด้วย โอเคนะคะ เพิ่มโค้ดอีก 3 บรรทัดนี้ เห็นไหม moving spruiteจะต้องมาอยู่ตรงนี้ เราจะไปที่ตำแหน่งการแสดงผลของเรานะคะ เพิ่มโค้ดอีก แล้วก็ให้เด็ก ๆ เดี๋ยว ก่อนอื่น ให้เด็ก ๆ เลือกของการตั้งค่าทั่วไป 3 บรรทัดนี้นะ แล้วก็กด Ctlrl + X เอาไปไว้ข้างล่าง class นะคะ เด็ก ๆ นี่เอามาไว้ก่อนหน้ากำหนดหน้าจอเกม ต้องขยับตำแหน่งอะไรสักอย่างหนึ่ง พิมพ์ moving เห็นไหม เลือก moving sprite นะ .draw ให้มันวาดนะคะ ให้มันวาด d-r-a-w-n ให้มันวาด screen แล้วก็ เลือกใช้คำสั่ง update นะคะmoving_sprite.update เลือกฟังก์ชันอัปเดต ให้ค่าเริ่มต้นอยู่ที่ 0 ตำแหน่งนะคะ 25 เรียก งเลือก pygame.display มาใช้งาน เลือก dispaly นะคะ .ดรf-l-i-p flip นะคะ ใส่วงเล็บ น่าจะ Ctrl B ดู 76 มันบอกว่าอะไร screen blitunexpect attribute ผิดตรงไหน เลือกฟังก์ชันผิดนี่เอง ไม่เป็นอะไร ทำไมมาขึ้นspriteattribute funcผิดอีกหรือ บอกว่าไม่รู้จัก Attribute เดี๋ยวนะ มีความ... clock เล็ก 74 line 74 in module Track moving_s Attribute Error add มันจะเป็นไปได้ไงไม่รู้จัก add ผิดหรือ ไม่รู้จัก add เข้าไม่ได้... ข้ามตัวไหนไปcurrent self self image True event Dino moving sprite.add มีไหม ไม่ ไม่เจอ หมดแล้วนี่น่ะ ขออนุญาตติดไว้ก่อน error 1 บรรทัดนะครับ เดี๋ยวจะไปลองrun อยู่ในเครื่องตัวเอง บางทีเรื่องของเรื่องคือ รันเครื่องตัวเองออก ที่นีคือ คือ อะไรครับพี่น้อง โอเคนะคะ Save ไว้ก่อนเดี๋ยวเรามาต่อสัปดาห์หน้า มันยังไม่วิ่งให้เรา มันขึ้น error attribute add มันหายไปไหนท่อนหนึ่ง สำหรับวันนี้จะพอแค่นี้ก่อนนะคะขอบคุณพี่ล่ามนะคะ เดี๋ยวเราจะมาต่อกันในสัปดาห์หน้าค่ะ ขอบคุณค่ะ update