(อาจารย์สุธิรา) สวัสดีค่ะ คือ Code มันมีปัญหานิดหน่อย ไป run อยู่บ้านก็ไม่ได้ ต้องมา run อยู่นี่ นะคะ ก็เลยเสียเวลาหน่อยหนึ่ง สัปดาห์ก่อน เรามี Background แล้ว มีตัวแล้วนะ ทีนี้ Code อันดับแรก เด็ก ๆ ต้องเช็กก่อน เช็กตำแหน่งแรกก่อนนะคะไปทีละบรรทัด เปิด เปิดไฟล์นะ ที่เราทำสัปดาห์ที่แล้ว หนก่อนน่ะขึ้นมา หนก่อนเราทำ class ไว้นี่ ตอนนี้เด็ก ๆ มี class แล้วก็ชื่อตัวเกมเราแล้วใช่ไหมคะนะคะ ตอนนี้ class เด็ก ๆ ถึงบรรทัดไหนแล้ว โหลดเข้ามาหรือยัง ดูนะคะว่าเราจะต้องมีส่วนของ class ที่เป็น sprite ก็คือเราจะนำภาพต่อเนื่องเข้ามาใช่ไหมคะ เด็ก ๆ โหลดภาพเข้ามาแล้ว เสร็จแล้วสร้างส่วนนี้หรือยัง ส่วนสร้างภาพเคลื่อนไหว ใครยังไม่มีส่วนนี้ มีหรือยังคะ ใครยังไม่มียกมือนะ ถ้ามีแล้ว ส่วนต่อมาที่เด็ก ๆ จะต้องมีนะคะ ก็คือส่วนของฟังก์ชัน run กับฟังก์ชัน update มีหรือยังคะ เดี๋ยวขยายค่ะ นี่ 2 ฟังก์ชันนี้ ใครยังไม่มี มีแล้วนะ เพราะหนก่อนเราน่าจะทำไปถึงประมาณนี้ โอเคไหม ถ้าเราได้ส่วนนี้แล้ว สิ่งที่จะต้องมาทำนะคะ ส่วนของ sprite group การจัดกลุ่มให้มันน่ะ มีหรือยังคะ ตรงส่วนนี้ เห็นไหมคะ create sprite and group น่ะ ก็คือมีแล้วนะ นะคะ โอเค ส่วนต่อมา ที่จะเช็กนะคะ จะค่อย ๆ เช็กไป ก็คือ ส่วนของการเรียกไอ้ตัว moving_sprite.draw กับ movie_ spite.update มาใช้ โอเคไหม ใครยังไม่มีตรงนี้ ถ้าจะผิด โอเคหรือยัง ยังไม่มีบาสต้องคีย์เพิ่มนะคะเพราะมันเป็นส่วนของการแสดงผล มันต้องเรียกมันมาใช้งาน ต้อง… ต้องคีย์ 2 บรรทัดนี้เพิ่ม สังเกตนะ มี… เรามี # คำว่าการแสดงผลไว้ เห็นไหมคะว่า ถ้าเราใส่ # น่ะ เวลาเราจะบอกว่าไปแก้ไขแต่ละส่วน เราก็จะเห็นว่ามันอยู่ตรง ในส่วนของ อะไรในโปรแกรมเราเห็นไหมคะ เหมือน moving_sprite.draw กับ movie_ spite.update ก็จะอยู่ในส่วนของ # ที่ชื่อว่าการแสดงผล สังเกตว่าทุกครั้งเวลาเขียนจะบอกว่าให้ใส่ # แล้วบอกว่าตรงส่วนนี้ เราเอามันไว้ทำอะไรนะคะ เราจะได้รู้ตำแหน่งเวลาแก้ เราจะได้เช็กได้ว่ามันผิดตรงไหน ตำแหน่งไหน พอไล่แก้มันก็จะหาเจอ เมื่อคืนอาจจะเป็น เครื่องที่บ้าน เดี๋ยวจะก๊อบแล้วไปลอง ก๊อบไฟล์นี้แล้วไปแก้ที่บ้านดู คือรูป รูป Background มันไม่ขึ้น ไอ้เครื่องที่บ้านน่ะ ใช้ไม่ได้เลย โอเคนะถ้าใคร มีครบนะคะ ทุกส่วนเหมือนที่กล่าวมาแล้ว ลองกด Ctrl + B 1 ครั้งก่อน จะดูว่า Run แล้วมันเป็นอย่างไร แล้วมันไป Error ตรงไหน อ้าว ให้เด็ก ๆ กด Ctrl + B นะคะ ถ้าใครที่ขึ้นนะ มันจะต้องขึ้นฉากที่เราทำใช่ไหมคะ แล้วก็ขึ้นตัวอันนี้ไปทำสัดส่วนมันบิดเบี้ยวไปหน่อย เดี๋ยวค่อยขยายให้ เดี๋ยวขยายให้ใหม่ก็ได้ แมวเป็นแมวผอม ๆ ไป ถ้าใครทำได้เห็นไหม 1. คือเราทำให้ฉากเลื่อนใช่ไหมคะ แล้วพอเรากดน้องแมว น้องแมวเรานะคะ น้องก็เดินเห็นไหม เพราะเราเลือกภาพที่เป็น sprite ก็คือมีภาพต่อเนื่องนั่นเองนะคะ น้องก็จะเดิน เห็นไหมคะ จะค่อย ๆ เดิน ความเร็วในการเดินก็ขึ้นอยู่กับ การตั้งค่าเวลานะคะ เดี๋ยวให้บอกว่าตรงไหนที่เร็วมากเร็วน้อย ใครไม่เป็นอย่างนี้ ยกมือ ใครไม่มีฉากขึ้นมา ไม่มีตัวการ์ตูนขึ้นมาเลย มันน่าจะมี Error เตือนด้วย ถ้าใครไม่ผ่านน่ะ ของมิ่ง นี่ มิ่งต้องใส่ไอ้ตัว bgx บรรทัดที่ 75 เห็นไหม เข้าไปก่อน ก่อนหน้ามันนะแล้วก็ใส่ น่าจะเพิ่มบรรทัดที่ 2 เพิ่มมา เห็นไหม มิ่ง ๆ มิ่งจะเห็นตรงส่วนที่เราทำ # ว่าเป็น sprite group น่ะ มิ่งตัดแล้วย้ายมาไว้ต่อจากตัวนี้ นึกออกไหมลูก เห็นหรือเปล่า ตำแหน่ง วางตำแหน่งผิด ทำแถบครอบ ตั้งแต่นี่จนถึงไอ้นี่เลยลูก ทำอย่างนี้ กด Ctrl + X เพื่อตัด Ctrl กดปุ่ม Ctrl แล้วก็ตัว X ลูก X เห็นไหม อันนี้คือลบใช่ไหม แล้วก็เอามาไว้ต่อจากตรงนี้ Enter แล้วก็ Ctrl + V กด Ctrl + V ทุกครั้งที่พอแก้ปุ๊บน่ะ ให้เด็ก ๆ กด Ctrl + B ทุกครั้ง โอเคหรือยัง พอย้ายแล้วกด Ctrl + B ดู กด Ctrl B น่ะ ทุกครั้งนะคะพอแก้โค้ดน่ะค่ะเด็ก ๆ อ้าว ทำไมขึ้นว่า Line Line 2 เลยเหรอ import pygame system เลยเหรอ ใช่ system เหรอมิ่ง sys ลูก sys เห็นหรือเปล่า ดูดี ๆ นะ เห็นไหม import คำสั่ง import มี import pygame import sys บางทีเด็ก ๆ พอ sy แล้วมัน… มันไปอยู่ตรงตำแหน่ง system น่ะ ตัว Sublime มันจะมีตัวช่วยขึ้นมานะ พอไปกดมันก็เลยขึ้น มันก็จะผิดนะคะ นะคะต่อไป บรรทัดต่อมา ตำแหน่งนี้ ตั้งค่าทั่วไป อย่า move ทำเหมือนเดิม Ctrl + X ตัดก่อน เหมือนเดิม Ctrl + V โอเคจับ Enter ลงไป อ้าว Ctrl + B ใหม่ทุกครั้งพอแก้โค้ด คำสั่งต้องผิดสัก 1 ตัว sys ทีนี้ดูนะมิ่งนะ pygame.init ตัว Clock หรือเปล่าที่ผิดน่ะ เห็นไหม C pygame.time.Clock Clock ตัวใหญ่นะลูก ตัว C ใหญ่ Clock ตัวนี้ที่เป็นตัวใหญ่น่ะหมายถึงมันเป็น Library ที่เรียกใช้ มาร์กี้ดูนะคะ เวลา เวลา Code มัน Error มันจะชี้ตำแหน่งเห็นไหม เห็นไหมไม่เหมือนตรงไหน ดูสิ sprite .sprite อันแรก sprite ตัวเล็กใช่ไหมคะ .Sprite ตัวที่ 2 Sprite S ตัวแรกเป็นตัวใหญ่ เห็นไหม แก้แค่นั้นแหละ S ตัวที่ 2 ต้องเป็น ต้องใช้ S ตัวใหญ่ลูก เห็นไหมต่างกันนะ มันเป็นคนละตัวนะคะ มันจะเป็นตัวแปรคนละตัวเลยเห็นไหมคะ sprite ตัวแรกนี่ ตัวเล็ก ใช้ s ตัวเล็ก เห็นไหมคะ ตัวที่ 2 Sprite S ตัวใหญ่กว่า เห็นไหมนี่คือเสร็จแล้วกด Ctrl + B ทุกครั้งนะคะ ตรงไหนขึ้น Error จะได้ไปดู เด็ก ๆ เวลา Error แล้วมันขึ้นว่า use tabs อะไรอย่างนี้นะคะ แสดงว่าตรงตำแหน่งนี้ เด็ก ๆ อาจจะใช้วิธีการกด Space bar ไม่ได้กด Tab วิธีแก้ก็คือ เด็ก ๆ ดูนะคะ ไปที่ท้ายบรรทัดก่อนหน้า Line ที่ Error สมมุติ มันขึ้น Error Line 9 ให้เด็ก ๆ ไปที่ไลน์ที่ 8 ไปบรรทัดที่อยู่บนบรรทัดที่ขึ้น Error แล้วกด Delete 1 ครั้งอย่างนี้นะคะ เพื่อให้บรรทัดนั้นน่ะ นี่เห็นไหม กดจนให้ตัวข้อความ มันเข้ามาชิดตัวอักษรตัวสุดท้ายของบรรทัดนั้นเลย แล้วกด Enter ลงไป เห็นไหมมันจะจัด Tab อัตโนมัตินะคะ ถ้าใครขึ้นว่า เดี๋ยว เดี๋ยวทำให้ดู สมมติ ๆ ดูนะ ถ้าเด็ก ๆ เคาะ Space bar มันจะเป็นอย่างนี้ พอกด Ctrl + B นี่ มันจะขึ้นคำว่า use of tabs and spaces indentation อย่างนี้ขึ้นมาปุ๊บนี่ นั่นหมายถึงว่า ตรงบรรทัดนี้ เด็ก ๆ ไปใช้วิธีกด Space bar แทนการกด Tab นึกออกนะ วิธีแก้ก็เหมือนที่บอก ก็คือ นี่ สังเกตได้อย่างไร ก็คือดู ดูที่ตัว ตัวนี้เห็นไหมคะ ที่พอทำแถบแล้วมันจะเป็นจุด ๆ แต่ถ้าเป็น Tab บรรทัดข้างบนนะคะ ถ้าเป็น Tab มันจะเป็นขีด เห็นไหม มันจะเป็นขีด มันจะไม่เป็นจุด นะคะ ทีนี้บางคน บางคนดู ดูในหน้าจอ เพราะว่าต้องดูพี่ล่ามด้วยแล้ว ตัวมันเล็กดูไม่ออก วิธีขยายขนาด ก็คือกด Ctrl กับเครื่องหมาย + เห็นไหม ขนาดตัว Font มันก็จะใหญ่ขึ้นใช่ไหมคะ มันจะทำให้เห็นได้ชัด เพราะฉะนั้นถ้า ของใครที่พอ ขึ้น Error use of tabs ให้เด็ก ๆ แก้เหมือนวิธีที่บอกไปเมื่อกี้นะคะ ก็คือลบ ลบแล้วกด Enter ลงมา นึกออกนะ มันจะหาย เพราะฉะนั้น ตัวนี้น่าจะแก้เองได้แล้วนะคะ ถ้า Error แบบนี้นะคะ เดี๋ยวนะครับ ทีละคน ใจเย็น ๆ นะ เวลาแก้โค้ดต้องใจเย็น ๆ เพราะมันหลายเครื่อง บางคนนี่ พอใช้คำสั่ง moving ดูนะครับ บางทีนี่ ไฟล์รูปที่เราเอามานี่นะคะ เด็ก ๆ ลองเปิดด้วยโปรแกรมที่ชื่อว่า paint open with paint ปึ๊บ นี่ ตัวมันใหญ่ใช่ไหม ตัวน้องใหญ่นี่นะคะ วิธีที่เราจะลดขนาดเพื่อให้มันเท่ากัน ดูวิธีนะคะ เด็ก ๆ ก็ไปแก้ทุกตัวเลยนะคะ แล้วจะได้ไม่ต้องไปแก้ตรง Code นึกออกไหม ไปแก้ที่ขนาดรูปเราดีกว่านะคะของเด็ก ๆ เดี๋ยวจะงง ก็คือเลือก เห็นไหมคะ Resize เห็นไหม ตรง % น่ะค่ะ เราก็ลดลงทีละครึ่ง 50% พอไหม คลิกโอเค เห็นไหมคะ นึกออกนะ เพราะฉะนั้น เปิดไอ้ไฟล์ตัวไอ้นี่เราทุกอัน แล้วก็ Resize แต่อย่าลืม Save นะคะ พอ Resize เสร็จน่ะ นึกออกนะ มิ่งเข้าใจแล้วนะ ทีนี้พอ Save ไปบางคนมีพื้นหลังด้วยนะเด็ก ๆ เอาพื้นหลังออกทำอย่างไรคะ จำได้ไหม ใน… ใน Google นะคะเอาพื้นหลังออก ชื่อนี้ เอา… เอาไว้สอนทีหลังดีกว่า จะเสียเวลา อย่างนั้นมิ่งดูนะคะ ถ้าจะแก้ ให้พิมพ์ตรงนี้เพิ่ม เห็นไหมคะ ตรง sprites.append นี่ เพิ่มประโยคนี้ scale เข้าไปก่อน พิมพ์... พิมพ์ 1 อันก่อนแล้วก๊อบ จะง่ายกว่า พิมพ์อันนี้ให้เสร็จก่อน แล้วจะบอกว่าแก้ตรงไหนอีก จุดหนึ่งนะคะ ที่เด็ก ๆน่าจะผิดเหมือนกันหมดเลย ก็คือคำสั่งนี้ค่ะ อยู่ไหนหว่า นี่ ๆ ๆ moving_sprite เด็ก ๆ มี sprite 2 ครั้งใช่ไหม ลบออก 1 ครั้ง เห็นไหม นี่ sprite มันมี 2 นี่ ลบออกอันหนึ่ง ลบออกอัน หนึ่ง ลบ 1 อัน ลบ ไม่ ๆ ๆ ลบตัว ลบตัวที่ 2 ออกนะคะ ตัว… ตัวหน้าไม่ต้องลบนะ เพราะมันเป็นของตัวแรก ลบตัวที่ 2 ออก โอเค เอ้า แล้วก็กด Ctrl + B นี่ ๆ แก้ด้วย แก้เป็นนี้ ใช่ไหม นี่ เป็น bird โอเค แล้วก็ดูตรงชื่อนะคะ ชื่อ cat นี่ มันเป็นตัว… ตัวเกมแม่นะคะ ตัวเกมเด็ก ๆ ชื่ออะไรน่ะใส่ชื่อตัวเอง ไม่ใช่มาใส่ชื่อ cat เหมือนของเรานะ โอเค ใครแก้แล้วลองกด Ctrl + B ใหม่ กด Ctrl + B บรรทัดไหนอีก ไหนนะ Line 77 และอีกจุดหนึ่ง ที่เด็ก ๆ จะผิดกันบ่อยนะคะ อีกจุดหนึ่งจะอยู่ตรงบรรทัดที่ ล่าง ๆ หน่อย ตรงที่บอกว่า คำสั่งที่บอกว่า moving_spite.update ตัวเลขคือค่าที่เป็นทศนิยม 0. ไม่ใช่ 0 แล้วก็ , นึกออกไหม เป็นค่าตัวเลขนะคะ 0.30 ไม่ใช่ 0,30 นะคะ มันเป็น 0. นะคะ เป็นตัวเลขแก้ แก้ , เอา , ออก ใส่ 0.25 หรือ 30 ก็ได้ ก็คือค่านี้ ก็คือ เป็นให้ไอ้ตัวเคลื่อนไหวมัน update น่ะค่ะ ระยะเวลาที่เราตั้งไว้นั่นเองนะคะ ใครแก้แล้วกด Ctrl + B บอกแล้ว ทุกครั้งกด Ctrl + B เลยนะคะ ไล่แก้ไปทีละบรรทัด นิดเดียวทีนี้ เปิด อ๋อ ตัวนี้ ไม่ต้อง เราเรียกมาแล้ว ลบออกได้เลยบรรทัดนี้ ลบออกได้เลยบางคนจะมีบรรทัดหนึ่งที่ไปเรียกตัวภาพมาใช้นะ แก้เสร็จกด Ctrl + B ใหม่ลูก ติดอยู่ บรรทัดที่เท่าไร 79 clock.tick พิมพ์ผิดนี่ C เห็นไหมคะ c-l-o-c-k ลูก c-l-o-c-k ตัวเองพิมพ์ ไอ้กุ้งเจ้าพิมพ์เป็น c-o-l-c-k เห็นไหม เช็กด้วย เช็กคำผิดด้วย เห็นไหมคะ สังเกตเวลา Error มันก็จะบอกตำแหน่ง ให้ดูที่บรรทัดนั้น แล้วก็ดูที่ข้อความ C ก่อน แหนะ กด Space bar อีกแล้ว เดี๋ยวก็ Error อีก อย่าไปกด Space bar เด้อ ต้องกดอะไรคะ กด Tab นี่ ต้องกด Tab เห็นไหม จัด Ctrl + B ใหม่ อีกบรรทัดหนึ่ง นี่ คำสั่งนี้ผิดแน่นอน ไม่… ไม่ต้องบอกก็รู้ มันคือ pygame ไม่ใช่ sprite sgame py p-y ตัวนี้ py เอา s ออก มี s นี่เห็นไหม ลบตัว s ออก ตัว s ลบออกลูก นี่ ๆ เห็นหรือเปล่าข้างหน้า ลบออก ลบตัว s ออก ลบออกค่ะ โอเค Ctrl + B ใหม่ อืม นั่นไง ลองกดแป้น ไม่เคลื่อน ไม่เคลื่อนเพราะอะไร นี่ pygam update เรามีแล้ว อันนี้ซ้ำเอาออก ลบออกได้ บรรทัดนี้ลบออกเลยค่ะ โอเค Ctrl + B ใหม่ ไม่ move ตัวนี้ไม่ move บรรทัดไหน 65 นี่ไง ชื่อ b ไม่ใช่หรอ ไม่ใช่ c แก้ชื่อนะคะ คือในโค้ดตัวอย่าง บอก cat ก็ cat ตามเลย ต้อง… ต้องจำด้วย ชื่อ ๆ ชื่อตัวการ์ตูนตัวเองชื่ออะไร ใช่ ๆ อ้าว กด Ctrl + B ใหม่สิ แล้วกดปุ่มลูกศร นี่ไง ทีนี้ รูปตัวเอง เอามากี่รูป เพราะ… เพราะมันไม่ขยับเลยใช่ไหม รูปมันไม่ขยับเรามาดูที่ sprite นี่ นกตัวที่ 1 ตัวที่ 2 ตัวที่ 3 ตัวที่ 4 ตัวที่ 5 มีนก 5 ตัว ขอ... เปิดไฟล์รูปให้ดู แล้วทำไม Size ไม่เท่ากันนะ [เสียงหัวเราะ] นกตัวที่ 1 ตัวใหญ่ ตัวที่ 2 ทำไมตัวเล็ก ปรับ Size ไม่เท่าเหรอ กุ้ง ๆ ลองเอาชื่อนี้ นี่ นี่ ๆ ชื่อที่เป็นภาษาอังกฤษ แก้จากนกเป็น bird ไหม bird แก้ชื่อตรงนี้ ชื่อภาษาไทยเป็นชื่อภาษาอังกฤษ เพราะ… เพราะเรามี File 2 ใช่ไหม ลองเปลี่ยนเป็น b-i-r-d แก้ทุกอันเลยลูก เดี๋ยวลองใหม่นะ ของใครยัง… ยังไม่ขึ้น ยังไม่ขึ้น วิ่งได้หรือยัง ติดไหน ติดบรรทัดไหน อ๋อ มิ่งก๊อบมาหมดแล้วใช่ไหมอีกบรรทัด ข้างหลัง นี่ดู เพิ่มขนาด ๆ ลองก่อนได้นะ นี่คือขนาดลูกที่เราจะ เห็นไหม ตรงนี้ ใส่เข้าไปก่อน ตึ๊งหนึ่งนะคะ แล้วก็วรรค แล้วก็ใส่ค่าตัวเลขตามนี้ จำนวนวงเล็บปิดให้ใส่เท่าตัวหลังนะลูกนะ โอเค แล้วก็เหมือนเดิม แล้วก็ก๊อบให้ครบ โอเค กด Ctrl + B run ดู ไปไสล่ะ Error เหรอ บรรทัดที่ Line 53 ทำไมบรรทัดนี้ขึ้น Error self.sprites append pygame.image.load bird นามสกุลเหรอ เดี๋ยวนะ ขอดูนามสกุลก่อน Properties png ตัวนี้เป็น png แก้นามสกุล p ใช่ไหม ตัว p นามสกุล png เหมือนตัวอย่างน่ะลูก เห็นไหม .pn แล้วก็ g นี่ ๆ ๆ ทุกอันเลย แก้ทุกอันเลย โอเค Line 33 บอกว่าอย่างไร update อ๋อ แสดงว่าบรรทัดนี้มิ่ง Code ผิดใช่ไหม มัน มันขึ้นสี… กด s ใหม่ลูก วรรค แล้วก็กด s เลือก speed speed อ๋อ ตรงนี้ นี่ไง ชื่อฟังก์ชัน update เห็นไหม เดี๋ยว มิ่ง ๆ เอาไอ้นี่ขึ้นไปเลย บรรทัดนี้ขึ้นไปเลย Delete เลยลูก กด Delete เลยค่ะ โอเค นั่นไง ได้แล้วเห็นไหม สังเกต Code เรานะ ถ้าถูกน่ะ สีมันก็จะตรงเห็นหรือเปล่า Ctrl + B ใหม่ อะไรที่ไม่ขึ้น Error ด้วย ไอ้เจ้ามิ่ง แสดงผล ครบหรือยัง ครบแล้ว while True แก้ แก้ตรงนี้เด้อ คำนี้ที่ผิด เห็นไหม แก้ตรง while True ไล่ไปทีละบรรทัด โอเค ใช่ไหม เอ้า ทีนี้ ทำไมรูปมันเป็นดึ๊ก ๆ ใช่ไหม เรามาดูกันที่ตำแหน่งของ ภาพตัวที่ 1 เดี๋ยวนะ มันขึ้น Error หรือเปล่า Line 80 เน็ตใช้ไม่ได้ quit ตัวเล็กเห็นไหม ใช้ไม่ถูก สังเกตด้วยนะคะ บางทีมันเป็นตัวใหญ่ บางทีมันเป็นตัวเล็ก แก้เลยโอเค ใช้ตัวเล็กลูก Ctrl + B ใหม่ ไม่ขึ้น ไฟล์ภาพชื่ออะไรนะ 18253 Background มิ่งเปิดโฟลเดอร์ที่เก็บรูปให้ดูด้วย ไหนของใครยังไม่ออกอีก เดี๋ยวนะคะ ทีละคนนะคะ ทีละคน ทีละคน ใจเย็นนะคะ เมื่อกี้นี้ผิด แม็กกี้ดู ตรง เท่ากับ true.run_animate กดอันไหนนี่ ไปกดผิดอันหรือเปล่านี่ ถูกแล้ว ๆ run_animate และอีกบรรทัด 1 นะคะ ที่จะต้องเพิ่มเข้าไป นี่เห็นไหมคะ ต่อจาก super( ).__init__( ) นะคะ เด็ก ๆ จะต้องใส่ self.run_animate = False ลงไปด้วย 1 บรรทัด บรรทัดนี้นะคะ ใส่บรรทัดนี้เข้าไป บางคนนี่ ไม่มีบรรทัดนี้เด้อนี่ เพราะว่าเราสร้างฟังก์ชัน run แล้ว พอตอน update น่ะ มันไม่ขึ้น เพราะไม่ได้เรียกมัน ใครที่แก้แล้วตัว รูปตัวเองใหญ่นะคะ บอกแล้วว่าให้ไปลดขนาด ตัวนี้ ใน Paint น่ะค่ะ โปรแกรม Paint นะ หรือ... หรือพิมพ์ตัวนี้ pygame.transform.scale นี่เข้าไป พิมพ์ไอ้นี่เข้าไปตรง… ตรงก่อนเอารูปเข้าน่ะ เห็นไหม นี่ พิมพ์… พิมพ์ตรงนี้จนถึงคำว่า scale นะคะ แล้วก็ก๊อบปี้ลงมาให้ครบตามจำนวนรูปของเรา ใส่ค่าตัวเลข นี่ ดูนะคะ ที่จะผิดอีก ก็จะเป็นตัวนี้ นี่ เห็นไหมคะ clock ตัวแรกนี่ตัวเล็ก แต่ Clock ตัวหลังจะเป็น C ตัวใหญ่ เห็นไหม เช็กดี ๆ นะคะ บอกแล้วจะชอบผิด เห็นความแตกต่างหรือเปล่า ดูนะคะ เวลาตั้งค่า ตรงตอนให้เงื่อนไข bgx นี่ เป็นลบ ของแม่เป็น -1550 นี่ ตรงนี้ตรงบวกแม่ก็บวกให้เท่ากัน เพราะฉะนั้นเด็ก ๆ ลบออกไปเท่าไร บวกเข้าก็ต้องบวกให้เท่า ๆ กันนะคะ แต่ขนาดอาจจะตัวเลข อาจจะไม่เหมือนกันกับของแม่ก็ได้ ก็คือลองใส่แล้วถ้ามันเกินก็ปรับ ให้ตรงกับของตัวเอง โอเคนะ คือรูป รูปเราใช้แค่รูปเดียวไง พอทีนี้พอเวลาไปตัดนะ สังเกตนะคะ เพราะรูปพื้นหลังน่ะ เด็ก ๆ ใช้แค่รูปเดียว พอเวลาเริ่ม เริ่มใหม่นะ พอเริ่มใหม่น่ะ มันก็ไปเริ่มที่ตำแหน่งแรกของภาพ นึกออกไหมคะ แต่ถ้าเรามีรูปที่เหมือนมีต้นไม้ลักษณะซ้ำ ๆ กันน่ะ แล้วเริ่มวางขนาด หรือมีช่องว่างน่ะ มันจะเห็นได้ชัดว่าภาพมันต่อกัน แต่อันนี้ มันกลายเป็นเอารูปเดิม แล้วเอาภาพข้างหน้า ต้องไปเลือกภาพที่มันมี... ไม่มีลักษณะที่เห็นว่าภาพมันต่างกันน่ะ นึกออกไหม เข้าใจนะคะ คือตอนนี้ ภาพภาพนี้ที่เราเอามาใช้นี่เห็นไหม ตรงต้นภาพมันเป็นอย่างนี้ใช่ไหม แล้วตรงปลายน่ะ ภาพมันมืด พอ… พอหมดภาพ พอมันสิ้นสุดภาพสุดท้าย ภาพใหม่ที่มาต่อ มันก็เลยไม่เนียน นึกออกนะ นั่นแหละ แค่นั้นเอง วิธีการก็คือ ถ้าเราวาดพื้นหลังเอง นึกออกนะ ก็คือเหมือนวางต้นไม้ให้มันมี ที่เว้นระยะห่างระหว่างรอยต่อ ตอนนี้คือรอยต่อของต้นไม้มันไม่เนียนเห็นไหม มันเป็นต้นเดียวกันน่ะ นึกออกหรือเปล่า ยกเว้นว่าจะ flip พลิกไปพลิกมาก็จะงง อันนี้ อันนี้ทำเป็นตัวอย่างเฉย ๆ คือ… คือในตัวต้นฉบับน่ะ เขาใช้รูป 2 -3 ตัวมาต่อกันหมดนะคะ เพราะฉะนั้น ขึ้นอยู่กับภาพพื้นหลังที่เราเอามาใช้นะคะ สมมุติว่าถ้าเลือกนะ ถ้าเลือกภาพที่เป็นลักษณะ สี ไม่เปิดให้อีก Open เอ้า หายไปแล้วเหรอ สมมุติให้นึกถึงนะ นึกถึงว่าภาพ Background ที่เราจะเอามาใช้ นี่ ถ้าเด็ก ๆ เลือกภาพที่มันมีลักษณะ เหมือนตำแหน่งของภาพน่ะ เริ่มต้น นี่เห็นไหมคะ เหมือนตรงนี้ ภาพเริ่มต้นมันสว่าง ตรงสิ้นสุดมันมืด พอเรา ให้ภาพมันเลื่อนนี่ ภาพสว่างมันก็จะมาเริ่มต่อจากตรงนี้เสมอ มันก็เลยจะเห็นว่าภาพมันไม่เนียน แต่ถ้าเมื่อใดที่เราเลือกภาพที่มีลักษณะ นี่นะ เหมือนอย่างนี้ สี สีต้นไม้ กับสีไอ้นี่ ต่อกันน่ะ อาจจะได้นะคะนี่ ลองหาภาพที่มีลักษณะ สีโดยรวมน่ะ เพราะถ้าเอาต้นไม้สีนี้มาต่อกับตรงนี้ มันก็จะเนียนอยู่ว่าภาพมันต่อ เข้าใจนะ เพราะฉะนั้น ขึ้นอยู่กับภาพที่เราเลือกเอามาใช้ด้วยนะลูกนะว่า แต่โดยปกติเวลาเขาทำเกม เขาก็จะวาดพื้นหลังเอง เพราะว่า ให้ภาพมันเคลื่อนไหวน่ะ มันต้องเป็นภาพที่เป็นลักษณะภาพต่อเนื่อง เหมือนตอนวาดตรวจ sprite sheet นั่นแหละนะคะ เอ้า ของใครยังไม่ออกนี่ นี่เหมือนถ้าเลือกภาพนี้เห็นไหม ลักษณะต้นไม้ ต้นภาพกับท้ายภาพมันสีคนละสีนี่ พอเอามาต่อมันก็จะไม่เนียนไงคะนะคะ เพราะฉะนั้นเราต้องเลือก ลักษณะของภาพที่จะเอามาใช้ด้วยนะคะ เหลือใครยังไม่ออก มี มิ่งน่ะออกไปแล้ว ปรากฏพอไปแก้แล้ว รูปหาย ติดตรงไหน ไม่ขึ้นอะไรเลยเป็นเหมือนมิ่งเลย เดี๋ยวรอแก้เคสมิ่งก่อนนะ 13206 ปี 2 เอ้ย ปี 1 ปี 1 พูดผิด กุญแจอยู่กับไอ้เก๋ อ๋อ ว่าเขามาต่อไฟ กุญแจห้องแม่อยู่กับพี่เก๋น่ะ เขาอยู่ข้างล่างกันแล้วนะ เขาไปอยู่ข้างล่างกันแล้ว กุญแจอยู่กับไอ้เก๋ เออ นั่นแหละ กุญแจอยู่กับไอ้เก๋แล้ว ดูนะคะ ให้แก้ตรงนี้อีกนิดหนึ่งนะคะ เพราะว่า ไม่อย่างนั้น run ไปแล้วมัน Error ก็คือมันไม่มีที่สิ้นสุดนี่ แก้ตรง loop พิมพ์ run เอ้ย ขอโทษที พิมพ์ run เท่ากับ True True อะไรนี่ พิมพ์ผิดได้อย่างไรนี่ แล้วก็ while run นะคะ ปึ๊บ แล้วก็ตรงนี้ run colon เท่ากับ… บรรทัดสุดท้ายเป็น run = False นี่ แล้วก็กด Save ทีนี้บางคน บางคนที่ยังไม่ออกเพราะอะไร เช่น ๆ ๆ รูป รูปตัวเองไม่เคลื่อนไหวก็มีนะคะเหมือนของบาสน่ะ ชื่อรูปมาหมดเลย แต่ภาพมันไม่เคลื่อนไหว ยังไม่ได้เปิดเข้าไปดู Detail นะคะ มีของบาสมีบรรทัดหนึ่งที่เกินมาน่ะ ให้ลบออก ที่ต่อจาก bgpic มี bgtransform อะไรนั่นน่ะ ลบออกนะคะ แล้วลอง run ดู ไม่แน่ใจบางคนอาจจะไม่มีไอ้ update กับไอ้ flip นี่นะคะ เช็กด้วย ตัว Code เราจริง ๆ จะมีประมาณ เท่าไรเอง 82 บรรทัดเท่านั้นเองนะ 80 กว่าบรรทัดเองนะเด็ก ๆ นะคะเดี๋ยวสัปดาห์นี้นะคะ เราก็จะพอแค่นี้นะคะ เพราะส่วนใหญ่ เหลืออุบลใช่ไหมยังไม่ออก เดี๋ยวไปดูให้นะคะ ส่วนใหญ่ออกกันหมดแล้วนะคะ โอเค ที่ไม่… ที่ออกแล้วแต่ตัว animate ไม่วิ่งก็มีนะคะ นะคะ ก็มีจุดตำแหน่งผิดเล็ก ๆ น้อย ๆ นั่นแหละ เหมือนที่บอกนะคะ ต้องค่อย ๆ เช็กไป โอเคค่ะ ขอบคุณพี่ล่ามค่ะ [สิ้นสุดการถอดความ]