--- title: การเขียนโปรแกรมคอมพิวเตอร์ ปี 1 subtitle: date: วันอังคารที่ 8 กุมภาพันธ์ 2565 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (พี่การ์ตูน) สวัสดีค่ะ สวัสดีค่ะ ได้ยินเสียงล่ามไหมคะ ได้ยินเสียงล่ามไหมคะ (พี่การ์ตูน) สวัสดีค่ะ สวัสดีค่ะ ทางสกลได้ยินเสียงล่ามสตูไหมคะ สวัสดีค่ะ อ. แม่ อ. แม่ได้ยินเสียงทางล่ามไหมคะทางล่ามได้ยินค่ะ Ctrl + B เด็ก ๆ ดูนะคะ เราจะทำให้ฉากเราเลื่อนได้อย่างนี้ ปุ่มลูกศรไปทางขวานี่ฉากมันจะเคลื่อนไปนี่เห็นไหม ยังไม่ได้ให้ตัว แต่มันก็จะดูเหมือนตัวละครมันเดินใช่หรือเปล่า ตอนนี้ถ้าใครที่มีฉากเข้ามาแล้ว (พี่การ์ตูน) ฮัลโหลค่ะ (พี่การ์ตูน) ฮัลโหลสวัสดีค่ะ ได้ยินเสียงล่ามไหมคะ (อาจารย์สุธิรา) สวัสดีค่ะพี่อี๊ด ได้ยินไหมคะ (พี่การ์ตูน) ได้ยินเสียง อ. แม่ชัดแล้วค่ะ พอดีว่าเมื่อกี้... (อาจารย์สุธิรา) แต่ไม่ได้ยินเสียงการ์ตูนเลยน่ะ เสียงอย่างค่อยเลย (พี่การ์ตูน) ฮัลโหลค่ะ ได้ยินเสียงหนูไหมคะ (อาจารย์สุธิรา) ไม่ได้ยินเสียงทางโน้นเลยค่ะ (พี่การ์ตูน) ฮัลโหลค่ะ ทางนี้ได้ยินเสียง อ. แม่ ชัดเจนมากนะคะ ต้องให้ทางโน้นเพิ่มเสียงหรือเปล่าเอ่ย (พี่การ์ตูน) ฮัลโหลค่ะ ได้ยินเสียงล่ามไหมคะ ฮัลโหลค่ะ สวัสดีค่ะ (อาจารย์สุธิรา) ได้ยินฮัลโหลแต่คำต่อไปไม่ได้ยินเหมือน เหมือนได้ยินคำแรกแต่คำต่อไปไม่ได้ยินน่ะค่ะ (พี่การ์ตูน) ได้ยินเสียงล่ามไหมคะ (อาจารย์สุธิรา) สัญญาณเสียงเหมือนคำแรกน่ะ ได้ยินเสียงชัด แต่คำต่อ ๆ ไปเหมือนเสียงมันจะหายไป เสียงหายหรือคะ อ. แม่ (อาจารย์สุธิรา) ใช่ ๆ เหมือนเมื่อกี้ได้ยินแต่ฮัลโหล คำอื่นไม่ได้ยิน (พี่การ์ตูน) อ๋อ ค่ะ เดี๋ยว ๆ สักครู่นะคะ (อาจารย์สุธิรา) ค่ะ (พี่การ์ตูน) แต่ว่าตอนนี้ Caption ได้ยินเสียงคำพูดชันนะคะ อ. แม่ (อาจารย์สุธิรา) ได้ยินเสียงชัดอยู่ใช่ไหมคะ (พี่การ์ตูน) เสียงอ.แม่ชัดค่ะ (อาจารย์สุธิรา) ค่ะ แต่เสียงทางการ์ตูนไม่ชัดค่ะ มันได้ยินเหมือน... พอพูดคำแรกได้ยิน แต่พอ... (พี่การ์ตูน) มันจะหายใช่ไหมคะ (อาจารย์สุธิรา) ใช่ หายไปเป็นสัญญาณแทรกเข้ามาฉึกฉัก ๆ (พี่การ์ตูน) ค่ะ เดี๋ยวสักครู่นะคะ สักครู่นะคะ ไหนใครที่ยังไม่ได้เอา Background ลงอีก (อาจารย์สุธิรา) ในระหว่างที่รอฝั่งโน่น เด็ก ๆ โหลดอุปสรรคโหลดไอ้นี่มาหรือยัง อุปสรรคน่ะ โหลดเลยโหลดรอ ให้นึกถึงนะ เหมือนเกมของดอมเป็นอะไรลูก เราจะ... ถ้าเกมเราเป็นอย่างนี้ให้นึกถึงว่าเราจะต้องนึกว่าเราจะเอาอะไรมาเป็นอุปสรรคมันกระโดดข้าม หรือว่ามันยิงนะคะ เหมือนในตัวอย่างนี่ อุปสรรคจะใช้เป็นก้อนหิน แต่เหมือนจะใหญ่กว่าน้องไดโนไปเสียแล้ว แต่เดี๋ยวค่อยลดขนาดได้นะคะ เดี๋ยวจะแก้ ทุกคนต้องไปหาโหลดตัวอุปสรรคก่อน มันแก้ขนาด... ใหญ่มาก (อาจารย์สุธิรา) เด็ก ๆ ไปเลือกโหลดอุปสรรคนะคะ เช่น เหมือนตัวอย่าง ในตัวอย่างนี้ จะให้ไดโนเสาร์วิ่งข้ามก้อนหิน อุปสรรคที่ใช้ก็เลยเป็นก้อนหิน อย่างน้อยนี่หามา 4 ขนาด ก็คือ สูง ๆ ต่ำ ๆ สลับกันไปไม่ให้เหมือนกัน เมื่อได้อุปสรรคแล้วเดี๋ยวเราจะมาพาวางอุปสรรค แต่ก่อนอื่นนี่ เราจะทำอย่างไรให้เห็นว่าฉากมันเลื่อนได้นี่ จะมาทำด้วยวิธีไหนนะคะ ในสัปดาห์ที่แล้วก็ไม่ได้เข้า สัปดาห์นี้จะมาต่อ ดูนะคะ หัวข้อที่เราจะเรียนกันในวันนี้ก็คือ Ading velocity to background คือ วิธีการที่จะให้ Velocity หมายถึงการเพิ่มความเร็ว ก็คือทำให้ Background น่ะ เคลื่อนไหวได้ เพราะฉะนั้น Adding ก็คือการทำหรือใส่ค่าทำให้ backgroundfมันมาจากถ้าแปลตามตัวมันจะความเร็วเพิ่มความเร็ว แต่เราไม่ได้จะเพิ่มความเร็ว ให้ภาพมันเลื่อน เหมือนให้นึกถึงเหมือนเวลาเรานั่งรถใช่ไหม วิวด้านข้างมันเหมือนเคลื่อนไหว แต่ทั้งจริง ๆ แล้วมันไม่ได้เคลื่อนไหวใช่ไหมคะ แต่สิ่งที่เคลื่อนที่นั่นคือตัวเราใช่ไหม เพราะฉะนั้น ตัวภาพวิวน่ะ ภาพวิวมันอยู่กับที่อยู่แล้ว มันเคลื่อนนะคะ เราก็เลยจะมา Adding ใส่ ทีนี้ก่อนอื่นก็คือเราจะมาประกาศตัวแปร ให้เด็ก ๆ เปิด Sublime text ไว้ด้วย เปิด Sublime Text ไว้ด้วย เราจะประกาศตัวแปรนี้ไปไว้ เรานำ Background มาลงเห็นไหมคะ นะคะ เพราะการประกาศตัวแปรมันจะอยู่ตรงส่วนเดียวกัน เดี๋ยวเปิดให้ดู เดี๋ยวนะ มันไม่ปิดไอ้นี่ ปุ๊บ มันไม่สับสวิตช์มา Sublime นะคะ ้เด็ก ๆ เปิด Sublime แล้วนะ อันดับแรก ๆ ให้มายังทำแหน่งนี่ ตำแหน่ง Import background นี่นะคะ เสร็จแล้วกด Enter 1 บรรทัด แล้วให้ใส่คำอธิบายไว้ก่อนนะคะ ประกาศตัวแปรสำหรับใช้คำอธิบายเป็นภาษาไทยดีกว่า เด็ก ๆ จะได้รู้นะคะ ประกาศตัวแปรสำหรับการใช้งาน ประกาศตัวแปรสำหรับ Velocity นะคะ V-e-l-o-c-i-t-yt-y Velocity นะคะ Velocity นะคะ ตัวแปรที่ 1 bgx นั่นก็คือตำแหน่ง background ที่จะวางในแกน x ค่า velocity ในแกน x แล้วก็ ิb-g-y หมายถึง Background ในแกน y และก็ bg velo นะคะ ก็คือมาจากคำว่า Velocity นะคะ 3 ตัวนี้ Velocity นั่นเอง 3 ตัวนี้ ค่าเริ่มต้นให้เป็น 0 หมดเลย เริ่มต้นเป็น 0 หมด ระหว่างที่รอเด็ก ๆ พิมพ์ตัวแปรให้ครบทั้ง 3 อัน เดี๋ยวขออนุญาตแป๊บหนึ่ง (อาจารย์สุธิรา) พี่แฝดน่ะ ตอนเรียนต้องใส่แว่นสิ ตัวเองเดี๋ยวให้ดูนะคะ เมื่อกี้บอกว่าเราจะต้องประกาศตัวแปรเพื่อจะมาใช้ อย่างนั้นจะเพิ่มการเคลื่อนไหวนะ หรือเคลื่อนความเร็วให้ฉากเรานั่นล่ะ background เรานะคะ เราจะใช้ตัวแปรทั้งหมด 3 ตัว ก็คือ bgx 1 ตัว ก็คือสำหรับ background ที่อยู่ในแกน x นะคะ แล้วก็ bgy แล้วก็ bgvelo มาจากVelocity Velocity นี่เอง ก็คือตัวที่จะทำให้ Background มันเคลื่อน ทีนี้ใครที่ยังพิมพ์ไม่ถึง bgVelocity ยกมือ เหลือกี่อัน ถึงได้บอกว่าเด็ก ๆ จะต้องฝึก ฝึกนะคะ ฝึกพิมพ์ดีดด้วย เพราะเวลาเรามา Coding นี่ ถ้าเด็ก ๆ พิมพ์ช้านี่เราก็จะไปได้ไม่กี่คำสั่งน่ะ แต่ถ้าเวลาพิมพ์เร็วนะคะ มันก็จะทำให้เราผ่าน หรือพิมพ์คำสั่งแต่ละตัวได้เร็วขึ้น มันก็จะไปได้เร็วขึ้นด้วยเช่นเดียวกันนะคะ เมื่อได้ตัวแปรสำหรับกำหนดส่วนของ Velocity เสร็จแล้วนะคะ เราจะมาดูส่วนต่อไปนะคะ ก็คือส่วนที่จะใช้เป็นตัวว่าเมื่อเรากด ก็คือเราจะไปกำหนดค่าให้คีย์บอร์ดนั่นเอง คีย์บอร์ดที่เราจะใช้ว่าถ้ากดปุ่มนี้แล้วมันหมายถึงการเลื่อนนี่นะคะ คือ คีย์บอร์ดตัวไหนบ้างนะคะ ดูนะคะ คีย์บอร์ดที่จะใช้ ตอนนี้ที่จะให้ใช้ ก็คือตัวที่เป็นเครื่องหมายลูกศรชี้ไปทางขวาน่ะ ให้เด็ก ๆ ดูที่แป้นคีย์บอร์ดตัวเองนะ มันจะมีลูกศรขึ้นใช่ไหมคะ ลูกศรขึ้น ลูกศรลง ลูกศรซ้าย ลูกศรขวา ลูกศรตัวนี้มันจะอยู่กลุ่มของมันเลยที่มีแต่รูปลูกศรอย่างเดียวนะคะ ตอนนี้คือปุ่มที่เราจะใช้ ก็คือปุ่มที่เป็นลูกศรชี้ไปทางขวานะคะ เพราะฉะนั้น Event type หรือที่เราจะกำหนดเหตุการณ์ให้มันก็คือเหตุการณ์ให้ pygame.k นี่มาจากคำว่า "Key" นั่นเอง Keyboard แต่ถ้าจะพิมพ์ Keyboard มันก็จะยาวไป คีย์บอร์ดแล้วก็ตามด้วย RIGHT นั่นก็คือบอกให้รู้ว่าเป็นทางขวา ลูกศรที่ทางขวานั่นหมายถึง เหตุการณ์หมายถึงว่าถ้าเรากดปุ่มลูกศรขวาปุ๊บ ที่ชี้ไปทางขวานี่ ไอ้ตัว background เรามันจะเคลื่อน เคลื่อนไปทางนั้นนะคะ ให้เหมือนเคลื่อนไปทางนั้นนะคะ เพราะฉะนั้น สิ่งที่เราจะทำต่อมาก็คือ จะมากำหนดเงื่อนไข เมื่อเรากดปุ่มลูกศร K_RIGHT เห็นไหมคะ เราจะไปที่ even type เห็นไหม ตัวนี้เราสร้างไว้ครั้งก่อนแล้ว แต่เราจะอยู่แค่ pygame.K_DOWN ทีนี้รอบนี้เราจะไปเพิ่มนะคะ เพิ่ม event type เป็น K_RIGHT นะคะ เดี๋ยวสลับสวิตช์ไปหน้านี้ก่อนนะคะ เราต้องมาที่ Sublime เรา แล้วนะ แล้วเด็ก ๆ ไปที่ Loop น่ะ หา loop จำได้นะคะ loop อยู่ตรงไหน หา if event pygame.K_DOWN ก็คือเราจะไปจัดการกดปุ่มใช่ไหมคะ Keydown ก็คือเมื่อเรากดปุ่ม ตัวเดิมโค้ดเดิมมันเป็นอะไรไม่รู้ ทีนี้เดี๋ยวไปแก้ โดยการแก้ตรงบรรทัดที่ 2 เห็นไหมคะ if event.key == pygame.K_RIGHT วิธีพิมพ์นะคะ พิมพ์ py ปุ๊บ มีคำว่า "pygame" ขึ้นมาให้กด Enter เห็นไหม ตามด้วย . ปุ๊บ เติมตัว K ใหญ่ K ใหญ่ นะคะ K แล้วตามด้วยอะไร ขีดล่าง Underscore แล้วก็กดตัว R 1 ครั้ง ตัวตรงคำสั่งให้ใช้คีย์บอร์ดน่ะ ต้องพิมพ์ด้วยตัวใหญ่ทั้งหมดนะคะ R-I-G-H-T K_RIGHT นะคะ เสร็จแล้วใส่ Colon นะ Colon แล้วกด Enter ]งมา ลงมา บรรทัดถัดมาพิมพ์เรียกใช้ตัวแปร bgvelo ตอนแรกที่เรากำหนดตัวแปร ค่าเริ่มต้นเราให้มัน 0 ก็คือมันจะอยู่นิ่ง ๆ นะ ทีนี้เราก็มาใส่ค่าความเร็วให้มัน อันนี้แม่ใส่ที่ 5 ก่อนแล้วลองแล้วพอ Run แล้วเหมือน Background เรามันเคลื่อนช้า เราเพิ่มตัวเลขได้ ได้นึกออกไหม เพิ่มค่าตัวเลขได้นะคะ ว่าให้ช้าให้เร็วมันขึ้นกับตัวเลขนี้ ก็คือค่าความเร็วที่จะให้ เพื่อความชัวร์ อยากรู้ ให้ใส่แค่ 1 พอ จะได้เห็นไง จาก 0 แล้วเพิ่มเป็น 1 ความเร็วมันจะเท่าไหนนะคะ ตรงบรรทัดต่อมา ให้เด็ก ๆ มาเพิ่มเงื่อนไขอีกตัวหนึ่ง เห็นไหมคะ สำหรับค่า background bgx กับ bgy นะคะ แต่ตอนนี้เราจะเพิ่ม เพิ่มไปทางให้นึกถึงนะ ให้นึกถึงการเคลื่อน เคลื่อนไปทางไหนลูก เคลื่อนไปจากซ้ายไปขวานึกออกไหม เพราะฉะนั้น แกนที่จะใช้เคลื่อนก็คือแกน x นะ จากซ้ายมือ ไปทางขวามือ ให้รูปมันเลื่อนไปอย่างนี้ สังเกตตำแหน่ง if if นี้ เด็ก ๆ จะต้องเลื่อนให้มันตรงกับลบกลับไปใหม่ ให้มันไปเริ่มต้นใหม่ พอมันพ้น 800 ปุ๊บ จะต้องลบแล้วมันจะไปเริ่มที่ 0 ใหม่ อย่างนี้นะคะ ก็คือให้นึกถึงว่าอันนี้เป็นฉากที่วิ่งเข้ามาในจอนี่นึกออกหรือเปล่าลูก มันจะหลุดออกไปเลยใช่ไหม ถ้าเราไม่ทำให้วันวนลูปน่ะ หมุนกลับคืนมา เพราะฉะนั้น ถึงบอกว่าค่าตัวนี้มาจากไอ้ตรงนี้นั่นเอง ก็คือขนาดของจอที่เรากำหนดไว้แต่แรกนะคะ ก็คืออะไร เดี๋ยว Run ให้ดูนี่ เห็นไหม เพราะพอกด เดี๋ยวให้ดูนะคะ พอกดเมาส์คีย์บอร์ดไปทางขวา 1 ครั้ง ไอ้นี่มันก็จะเลื่อนใช่หรือเปล่า ใช่หรือเปล่า มันก็จะเลื่อน สังเกตมันจะมีจังหวะกระตุก 1 วิ (นาที) เห็นไหม เห็นได้ชัดเลยมันกระตุก เพราะอะไร เพราะความเร็วมันน้อย ค้างเลย ทางโน้น เคลื่อนหรือยังดอม ลอง Run ดู ใส่เสร็จหรือยัง ใส่ครบตรงนี้หรือยัง if นี่ if ใส่เข้าไปสิ นี่เด้ screen bile screen.blit นี่ แล้วเราก็ไปเรียกพื้นหลังมา อันนี้มันจะข้ามไปอันนี้โน้นแล้ว นี่ ๆ screen background นี่ไง 0, 0 นี่ไง ตำแหน่งเริ่ม ให้ background มันอยู่คุ้มพื้นที่นี้ ทีนี้ เมื่อกี้พิมพ์ตรงนี้เสร็จหรือยังคะ พี่การ์ตูนมาแล้ว โอเค เอาใหม่นะ เมื่อกี้บอกว่ากำหนด loop ให้แล้วนะ ใส่ค่าให้ กำหนดลูปไปแล้วใช่ไหม ตรงส่วนของการแสดงผลเห็นไหมคะ ตรง drawing ตรง Drawing เราจะไปที่ Drawing ไหนล่ะ ติดอีกแล้วหรือ ตรงนี้เด็ก ๆ ใส่แล้วนะ pygame.K_RIGHT ปุ๊บนะคะ แล้วก็ตรง bgvelo ที่ 1 เห็นไหมว่าของแม่มันกระตุก แม่จะกลับมาที่เลข 5 เหมือนเดิม ไม่กระตุกนะคะ และให้ไปที่ส่วนแสดงผลนี่ ตรง... หลังจากที่กำหนด bgvelo เท่ากับ 5 แล้ว มาใส่เงื่อนไขอีกตัวหนึ่ง if ใช่ไหมคะ โดยบอกไว้แล้วว่าตำแหน่งของ if จะต้องอยู่ให้ตรงกับ ดนพ แล้วกำหนดค่าให้ bgx = -800 เมื่อกี้บอกแล้วว่า 800 นี่มันมีที่มาก็คือมันจะเท่ากับค่าของขนาด screen. ไม่ได้ทำตัวแปร screen width ดูตรงนี้ตรงตำแหน่งที่เรียกไฟล์ screen นี้มาก็ได้ ไฟล์ตัวแรก นี่ถ้าแม่ไม่ใส่ตัวแปรนี่ แม่จะใส่ให้ดูนะ มันก็จะเป็น ตรงนี้ก็จะเป็น 800 นึกออกนะ ตรงนี้ก็คือ 150 นี่นะคะ ก็คือค่าของตัวนี้นั่นเอง นั่นก็คือค่าของความกว้างของฉากของเรานั่นเองนะคะ เพราะฉะนั้น ถ้าของเด็ก ๆ 500 เด็ก ๆ ตรงนี้เด็ก ๆ ก็พิมพ์ไป 500 ก็คือให้นึกถึงว่าภาพมันเคลื่อนจนสุดค่าสุดท้ายของฉากเรา คือ 800 นี่ เราจะต้องลบมันเพื่อกลับคืนน่ะ ให้เงื่อนไขมันทำเป็นลบ แล้วก็ bg = x แล้วก็ไปเริ่มต้นที่ 0 ใหม่ นี่ไง ดูตัวแปรฉากหลังตัวเองด้วยว่าตั้งชื่อไว้ว่าอะไรนะคะ นี่ไง นะคะ ต่อไป เมื่อเรากำหนดเงื่อนไขให้เขาเสร็จแล้วทีนี้เราก็จะมาเรียกใช้เขาล่ะ เราให้ไปตำแหน่งที่เรา... เห็นไหมคะ อยู่ต่อจากฉากเราน่ะ screen.blieแล้วให้เด็ก ๆ พิมพ์ bgx-= bgveloิbg.velo ต้องดูนะคะ ว่าชื่อตัวแปรที่เราตั้งแต่ละเครื่องด้วย ตั้งไม่เหมือนกันน่ะ อย่าลืม คือ ตอนสอนนี่ แม่ตั้งตัวแปรนี้ แต่บางคนไปตั้งตัวแปรเองน่ะ แล้วพอเรียกใช้ เรียกใช้ไม่ถูกน่ะ นะคะ ก็คือเราก็กด Enter แล้วก็พิมพ์ bgx มันจะขึ้นมา ให้ไปเลือก จะได้ไม่ผิดอย่างนี้นะคะ ต้องเป็น - นะคะ ใส่ค่าลบเข้าไป ให้มันเริ่มที่ติดลบเลย ติดลบ แล้วเท่ากับ bgvelo ใช่ อันตัวนี้ก่อนนะ ตัวนี้ก่อนนะ ครับ ค่า... คำสั่ง เครื่องหมายเท่ากับจะใช้ 2 ตัว อยู่ในอะไรคะ อยู่หลังคำว่า "if" จะใช้เครื่องหมายเท่ากับ 2 ตัวเสมอเห็นไหม แต่ถ้าไม่มี if น่ะ เครื่องหมาย = จะใช้แค่ตัวเดียว เพราะฉะนั้น เมื่อเราเลือกใช้ if เมื่อไหร่ เวลาพิมพ์เครื่องหมายเท่ากับจะต้องพิมพ์ 2 ครั้งนะคะ จะไม่พิมพ์ครั้งเดียว จำไว้เลย จำไว้เลย โอเค โอเคไหม ประกาศตัวแปรนี้หรือยัง แล้วอะไร -800 bgx อยู่ไหน เดี๋ยวขอดูตำแหน่งก่อน bgx = 0 ตอนนี้มันไปบรรทัดที่ 6, 7 ตรงนี้ปุ๊บ เท่ากับ 0 ปุ๊บ 17 ขึ้นว่า Unexpexted เอาอันนี้ออก ลบสิ Delete Ctrl + B ใหม่ นั่นไง ทีนี่ เดี๋ยวสิ ยังใส่ค่าไม่ครบเลย เพราะอะไร ตัวเองลืมอะไร อ๋อ เข้าใจแล้ว นี่ มันมีpygame.type ตัวเองพิมพ์แล้ว แต่ตัวเองไปพิมพ์ใหม่หรือ ทำไมมันมีเพิ่มมาอีก เห็นไหมนี่ นี่ อันไหน เอาตัวไหน dino.run นี่หมายถึงตัวของแม่นะนี่ เพราะฉะนั้น ต้องแก้ นี่ไง ข้างบน แล้วบรรทัดนี้มันโผล่มาจากไหน ตอนให้แก้ ให้แก้ที่บรรทัด if event type pygame.KEYDOWN copy บรรทัดนี้ไปแทน dino.run ที่ Run น่ะ คือตัวการ์ตูนตัวเองใช่ไหม จะมาใช้ dino.run ก็คงจะมาเจอหรอก จะหาเจอหรอก เอาตัวนี้ใส่ตรงนี้แทน ดูนะคะ เวลาพิมพ์นี่ สังเกตดี ๆ นะ ตำแหน่ง event นี่ เห็นไหม ตรงนี้ เป็นของตัวเองนะคะ ไม่ใช่ dino rตัวนี้มาจากตัวอะไร ก็คือชื่อตัวแปรของเรา จะให้มันวิ่งของเราน่ะ ใส่ชื่อ dino เหมือนแม่ ก็คงจะมาเจอนะ เพราะของตัวเองไม่ได้ตั้งชื่อนี่ใช่ไหม ต้องเช็กนะคะ ตัวนี้ที่เราสร้างไว้น่ะ นี่ Class นี้ที่เก็บรูปนี่ แล้วก็มากำหนดตัวแปรเพื่อเรียกใช้งานมัน อยู่ตรงนี้นี่ เห็นไหม ตัวแปรชื่อ dino มาจาก class ที่เราสร้างไดโนเสาร์วิ่งไว้นี่เพราะฉะนั้น ตรงนี้ของเด็ก ๆ นี่ เวลาเรียกใช้งานมันก็ต้องเป็นของตัวเองนะคะ เมื่อเสร็จเงื่อนไขแล้ว ใส่ตรงแสดงผลพิมพ์ bgx- = bgvelo หรือยังคะ หรือยังคะ ใครยังไม่พิมพ์บรรทัดนี้ บรรทัดนี้นะคะ บรรทัดนี้ นี่ ๆ บรรทัดที่ไฮไลท์ไว้นี่ เพราะอะไร เพราะเมื่อเราประกาศตัวแปรไปแล้ว แล้วเมื่อต้องการให้แสดงผล เราก็ต้องเรียกใช้ตัวแปรนั้น เหมือนกำหนดเงื่อนไขไปแล้วไม่เรียกใช้มัน มันก็จะไม่ทำงานนะคะ ต้องสั่งให้มันทำงาน ชื่ออะไร นั่นไง นั่นไง นี่ beat ของตัวเองก็พิมพ์ ix แล้วอะไรมานี่ screen บรรทัดนี้ลบออก ตรงนี้ไม่ใช่ event ไง ก็บอกมา miss ไง event มาจากไหนนี่ ไม่ใช่ mix ใหญ่ ต้องเป็นตัวแปร เลื่อนไป พิมพ์เดี๋ยวมันก็ขึ้นมาเอง เพราะประกาศแล้ว m เลย พิมพ์ i เลย mi Enter บรรทัดนี้ 68 - 69 ลบออก ทำไมกลับมาอีกแล้ว 68 กับ 69 ลบ เอาแค่ 68 กับ 69 ออก ซ้ำน่ะ คำสั่งซ้ำ Ctrl ใหม่ นั่นสิ ยังไม่เคลื่อน ฉากยังไม่เคลื่อน ยังไม่เรียกใช้ฉากที่ให้เคลื่อนเลย มีแต่ไอ้นี่เคลื่อนใช่หรือเปล่า ตอนนี้ยังไม่ถึงอุปสรรคเลย ตอนนี้ให้ฉากมันเลื่อนก่อน สิ่งที่จะทำต่อมาพอเห็นไหมพอเราเรียกใช้... เรากำหนดเงื่อนไขแล้ว ยังไม่มาเรียกใช้น่ะ ยังไม่มาพิมพ์ว่า bgx =- bgx -= bgblow น่ะ ฉาก... Background มันจะไม่เคลื่อนนะคะ เพราะไม่ได้เรียกใช้มันใช่ไหม ไปทำเงื่อนไขให้มัน แต่ไม่เรียกใช้มันก็ไม่มีประโยชน์ เพราะฉะนั้น ต้องเรียกใช้มันด้วย อยู่ตรง Display ต่อจาก... ก็โหลดมาหรือยัง ก็เดี๋ยวจะพาไป ฉาก ไม่ใช่ Run ที่อุปสรรคเลย ตอนนี้คือที่ต้องทำให้ได้ คือ ฉากต้องเคลื่อนก่อนใช่ไหม เพราะสัปดาห์ที่แล้วเราใส่ฉากเข้าไป แต่ฉากยังไม่เคลื่อน เพราะฉะนั้น ของใคร ถ้าฉากยังไม่เคลื่อนนั่นหมายความว่าเด็ก ๆ ยังไม่ได้ไปเรียกใช้ค่า bgx ถูกไหม เพราะไปกำหนดเงื่อนไขให้มันแล้ว ไปกำหนดเงื่อนไขให้มันทำงานแล้ว แต่ไม่เรียกใช้มัน ตอนนี้ต้องเรียกใช้มัน ตำแหน่งที่จะเรียกใช้ก็คือเห็นไหมคะ ให้ต่อจาก screen.bilt มันต้องอยู่หลัง Background ที่เราเอาลงไว้ หนูก็ว่ามันโอเคนะ ทีนี้บางคนเหมือนมุก พอพิมพ์แล้ว run ให้ดูความเร็วของฉากที่มันเคลื่อน เออ ถ้าเร็วมาก แม่บอกว่าอย่างไรคะ ปรับตัวเลขใช่ไหม ตัวเลขความเร็วมันจะอยู่คำว่า "bgvelo" ใช่ไหมคะ ที่เรากำหนดในตรง if event key เห็นไหม ในเงื่อนไขนะคะ ถ้า 1 มันเร็วก็คือเพิ่ม เพิ่มตัวเลขเข้าไปนึกออกนะ เพิ่มจาก 1 เป็น 2 เป็น 3 น่ะ ความเร็วมากหรือน้อย จะขึ้นอยู่กับจำนวนตัวเลขนะ โอเคนะคะ ทีนี้แม่บอกว่าพอลองเรียกใช้ bgx แล้วลองกดอะไร Ctrl + B กด Ctrl + B ดูว่า กด Ctrl + B แล้วกดอะไรคะ ลูกศรอะไรคะ ลูกศรซ้ายใช่ไหม ขอโทษ ๆ ขวา ๆ ลูกศรที่ชี้ไปทางขวาน่ะ กดดู 1 ครั้ง แล้วฉากเรามันเลื่อนไปไหม เห็นหรือยังลูกศรขวาอยู่ตรงไหน ในกลุ่มคีย์บอร์ดน่ะ มันจะมีลูกศรชี้ขึ้น ลูกศรชี้ลง ใช่ไหมคะ ลูกศรไปทางซ้าย ลูกศรไปทางขวา ให้กดลูกศรที่ไปทางขวาน่ะค่ะ 1 ครั้ง ถ้ากดแล้วฉากเลื่อนแสดงว่าเด็ก ๆ ผ่านแล้ว ของส่วนนี้ เห็นไหมคะ ตำแหน่งที่เรียกใช้นี่ ที่เราเรียก background มาน่ะ เพราะฉะนั้น เราจะต้อง bgx จะต้องอยู่ข้างหลังมัน เพื่อบอกให้รู้ว่า Background ถูกเคลื่อนด้วยตัวนี้ bgx นี่ บางคน ไหนของใครที่ตัวฉาก ตัว Background ไม่เลื่อนบ้างยกมือ ดูนะคะ อันดับแรก มาดูที่ตำแหน่งนี้ ตำแหน่ง เงื่อนไขเราก่อน event type แรก เท่ากับ pygame.KEYDOWN แล้วมี if ที่ 2 ก็คือ ถ้า event.key == pygame.K_RIGHT เสร้จแล้ว กด Enter ปุ๊บนี่นะคะ ให้ดูตำแหน่งนะ Enter ลงไปปุ๊บ สังเกต bg velo มันจะอยู่แท็บเยื้องลงไปนะ เพราะฉะนั้น บาลบขึ้นไปให้หมด เพราะบางคนจะใช้วิธีกด space bar นี่ ให้มันขึ้นไปชิด Colon เสร็จแล้วกด Enter แล้วบรรทัดที่ 2... บรรทัดที่ต่อจากค่า bgvelo ที่เรากำหนดนะคะ นั่นก็คือชื่อของตัวเกมที่เราจะสั่งให้มัน Run น่ะ มันจะอยู่ตรง .bgvelo เลยนะ เสร้จแล้ว พอสั่งให้ไอ้ตัวเกมมันเคลื่อนด้วยนี่ เราจะมาใส่เงื่อนไขให้ bgx ใช่ไหมคะ ตรงตำแหน่งเงื่อนไขของ bgx นี่ ตำแหน่งมันจะอยู่ตรงกับอะไรคะ for ใช่ไหม if นี้จะต้องอยู่ตรงกับ for เท่านั้น และตำแหน่งของ bgx ตัวที่ 2 มันจะต้องอยู่ตรงกับดูนะคะ ดูดี ๆ มันจะเยื้องนะ มันจะไม่อยู่ตรงกับ bg ตัวแรก เห็นไหม มันจะเยื้องเข้าไปน่ะ คืนก่อน บางคนกดแป้น space bar น่ะ เพราะเราใช้ Sublime Text ช่วยจัดบล็อก จัด Template ของรูปแบบคำสั่งไว้ให้นะ มันจะไปเป็นบ็อก ๆ นะ จะอยู่ส่วนนี้ if ตรงนี้จะอยู่ส่วนนี้ เขาจัด box ไว้แล้วน่ะ เสร็จแล้วหลังจากนั้นตำแหน่งของการเรียกใช้ Draw Screen build จะอยู่ตรงนี้ มันจะไม่อยู่ชิด ไม่ได้อยู่ชิด ไม่ได้อยู่ชิดอย่างนี้นะ เด็ก ๆ เห็นไหมนะคะ ตำแหน่งมันจะต้องอยู่ตรงกับ if ล่าสุด โอเคนะคะ สิ่งที่จะต้องทำต่อมา เดี๋ยวดูสไลด์เราก่อน บางทีโค้ดอาจจะยังไปไม่หมดนะคะ นี่นะคะ พอใส่ ใส่ตัวนี้แล้ว มาเพิ่มอะไร เพิ่ม screen.blit เรียกใช้ Screen build อีกครั้งหนึ่งเพื่อเรียก Background นะคะ ที่มันเคลื่อนไปแล้วแล้วมันโดนลบนี่ ค่าแรกมันโดนลบใช่ไหม เรียกกลับคืนมาน่ะ ที่ตำแหน่งไหน ไปยังตำแหน่ง Sublime เราอยู่ไหน Sublime ให้เด็ก ๆ มาที่ตำแหน่งต่อจาก bgx ที่เราเรียกนะคะ พิมพ์บรรทัดนี้ก่อน ต้องพิมพ์บรรทัดนี้ก่อนนะคะ ซ้อนให้ ทำ Remark ไว้ก่อน อย่าเพิ่งพิมพ์บรรทัดนี้นะ มันต้องผ่านการเรียกจากจุดนี้ก่อน เดี๋ยว ๆ อันนี้ซ่อนไว้ก่อน screen พิมพ์ screen วิธีการก็คือพิมพ์ sc ปุ๊บ พอขึ้นคำว่า "screen" กด 1 คแล้วกด . แล้วก็ตามด้วย b b แล้วไปหา blit เห็นไหม Build นะคะ สังเกตว่าเราจะไม่พิมพ์เยอะ เราจะไม่พิมพ์เยอะ เราจะ... บางตัวแปรมันโดนประกาศไปแล้ว screen.blit ใส่วงเล็บค่ะ วงเล็บนะคะ ใส่แค่วงเล็บเปิดวงเล็บปิดจะมาอัตโนมัติใช่ไหมคะ แล้วตามด้วย bg ก่อน b ตัวแปร bg ที่เราสร้างนะคะ แต่ทีนี้ตัวเองดูนะ บางคน เพราะเหมือนดอมใช้ชื่อไม่เหมือนกันน่ะเช็กด้วย ตัวแปรตัวเองตัวนี้คืออะไร bg ตัวนี้ คือ Background ตัวแรกนะคะ ที่เราเอามาใส่ แล้วใส่อะไรคะ ใส่เครื่องหมายอะไรน่ะ คอมมาร์หรือคอมมาร์ แล้วก็ใส่เครื่องหมายสี่เหลี่ยมใหญ่นะคะ ไม่ใช่สิ ไม่ใช่สี่เหลี่ยมใหญ่ ใส่วงเล็บสี่เหลี่ยม วงเล็บก้ามปูวงเล็บสี่เหลี่ยมมีหลายวงเล็บเลย แล้วเรียกใช้ตัวแปร bgx นะคะ bgx พิมพ์ bg หา bgx เลยแล้วก็กด Enter หรือดับเบิลคลิกก็ได้ เดี๋ยวมันจะเรียก แล้วก็เพิ่มค่าให้มันนะคะ บวกเข้าไป พอลบไปแล้ว 800 ก็ใส่ให้มันเต็มเท่าจำนวนนึกออกไหม จำนวนหน้าจอน่ะ ก็คือ ลบไป 800 ก็ต้องเพิ่มเท่าไรคะ 800 เท่ากัน ให้ยึดจากตัวนี้ ให้เพิ่มไป 800 ถ้าลบไป ก็ต้องเพิ่มไป 800 ดูให้ตรงกันนะคะ ดูให้ตรงกับ bgx ที่กำหนดเงื่อนไขไว้ใน if ก็คือสลับค่าน่ะ -100 ก็ต้อง +100 -800 ก็ต้อง +800 แล้วก็ใส่ comma แล้วก็เรียกใช้ มี bgx แล้วก็ต้องมีอะไรคะ มีตำแหน่ง bgy โอเคไหมทันไหม ใจเย็น ๆ นะคะ เขียนโค้ดนี่ บางทีใส่โค้ดไม่ครบ การแสดงผลลัพธ์ไม่กรากฏนะบางอัน ต้องค่อย ๆ ไล่ไป ก็คือสั่งงานไม่หมดนะ นึกออกนะ เครื่องก็ไม่รู้จะให้ทำอะไร ต่อไปนะคะ สิ่งที่จะต้องมีเพิ่มเราไปดูก่อน เดี๋ยวสิ ก็เพิ่มแสดงว่าตรงนี้ทำไม่หมด เพิ่มบรรทัดอีกตัวหนึ่ง Screen build bgx bgy ลืมครอบ โอเค ๆ ไม่เป็นไร เราเพิ่มเองก็ได้ ไม่ต้องใช้ตัวช่วย ทีนี้บรรทัดนี้นะคะ เราจะเพิ่มข้างบน ก็พิมพ์ sc พอ sc แล้วก็คลิกเลือก screen นะคะ แล้วก็กด .b b ปุ๊บแล้วหา b-l-i-t blit แล้วก็เหมือนเดิม วงเล็บเปิดวงเล็บปิดเหมือนเดิม นะคะ แล้วก็พิมพ์ bg ก็คือเรียก Background มา แล้วก็ตามด้วย วงเล็บสี่เหลี่ยม กดผิดเป็นปีกกาเฉยเลยวงเล็บสี่เหลี่ยมนะคะ ไม่ต้องกดเรียก แล้วก็เรียก bgx, bgy ของเรามา แล้วก็เรียกใช้ทั้ง bgx, bgy ทีนี้ใครยังไม่ออก ลอง Ctrl + B ดูใหม่ เมื่อพิมพ์เสร็จแล้วนะคะ ลอง Ctrl + B ดูใหม่สิ ออกหรือยัง เลื่อนหรือยัง มันเลื่อนไหม ๆ ลองดูนะคะ เดี๋ยวของเขียด นั่นไง มันอาจจะ ก็เรายังไม่ได้ให้มันหยุด ของแม่มันก็เลื่อนไม่หยุด นี่เห็นไหม สังเกตถ้าไม่ใส่มันจะเป็นภาพมาซ้อนเห็นหรือเปล่า เห็นหรือเปล่า มันจะเป็นคนละแบบ เดี๋ยวทำให้ดูไง เห็นไหมดูลักษณะการเคลื่อน ถ้าอย่างนี้มันไม่ต่อเนื่อง เพราะอะไร เพราะไม่ได้เรียกใช้ตัวนี้นะ ก็คือต้องให้มันมีทั้งที่เป็นตัวพื้นแรกก่อน ว่าอย่างนั้นเถอะ เห็นหรือเปล่า แล้วมันก็จะเหมือนน้องเลื่อน คือรอยต่อ Background เรา อาจจะยังไม่สมูต ลักษณะภาพมันมีสูง ๆ ต่ำ ๆ นะ ภูเขามันก็เลยเห็นชัด ไหนใครฉากยังไม่เลื่อนอีกคะ ยกมือ ขึ้น Error อะไรไหม (เจ้าหน้าที่) พี่การ์ตูน (พี่อี๊ด) สวัสดีค่ะ ได้ยินฝั่งล่ามไหมคะ ล่ามพูดอยู่ค่ะ ได้ยินฝั่งล่ามไหมคะ (เจ้าหน้าที่) ตอนนี้ได้ยินไหมคะ ฮัลโหลพี่การ์ตูน เจ้าหน้าที่ตอนนี้ได้ยินไหมคะ ฮัลโหล วันนี้ได้กี่บรรทัดแล้ว วันนี้เพิ่งได้กี่บรรทัดแล้ว วันนี้ได้กี่บรรทัดแล้ว 3 บรรทัด นี่ยังไม่ใส่อุปสรรคไง ตอนนี้ได้ยินหรือยังคะพี่การ์ตูน ได้ยินแล้วค่ะ ได้ยินแล้ว (อาจารย์สุธิรา) ต่อไป ๆ ก็คือหัวข้อที่ 3 นะคะ บางคนยังไม่หารูปไง แล้วบางคนก็... นี่ Adding Obtecless ก็คืออุปสรรค เราจะเอาอุปสรรคใส่นะ เช่น ของแม่อุปสรรคที่จะใช้ก็คือก้อนหิน ให้บอกแล้วว่าให้ไปหาโหลดรูปอุปสรรคที่จะใช้อย่างน้อย 4 แบบ ใครยังไม่โหลด โหลดเสีย เดี๋ยวเอ็มค่อยต่อ บอกไว้ก่อนนะคะ ตัวอย่างภาพเห็นไหม ก่อนหินจะมีขนาดและก็รูปทรงไม่เหมือนกันเห็นไหมคะ เพราะฉะนั้น เด็ก ๆ อุปสรรคของเด็ก ๆ ก็ควรเลือกขนาดแล้วก็รูปทรง ไม่เหมือนกันนะ ไม่ใช่หมายถึงว่าใหญ่กว่าตัวการ์ตูนเรานะ มันต้องให้ได้สมดุลใกล้สมดุลด้วยนะ ก่อนอื่นโหลดก่อนนะคะ ให้ได้ 4 รูป 1. เช็กอะไร โดยส่วนมากนะคะ เวลา Coding แล้วทำไมไม่นั่นทำไมม่นี่ เหมือนเพื่อน 1. ต้องย้อนกลับไปเช็กที่ตัวแปร บางคนตั้งชื่อตัวแปรไม่เหมือนที่แม่ตั้งถูกไหม แล้วตัวเองดันมาเรียกใช้ตัวแปรเดียวกับแม่น่ะ มันก็หาไม่เจอใช่หรือเปล่า เพราะฉะนั้น กดไปเถอะ มันก็ไม่ Run มันเป็นตัวแปรคนละตัวไง มันไม่รู้จักใช่หรือเปล่า มันก็ไม่ทำงานอย่างนี้เป็นต้นนะ ทีนี้ โหลดรูปมาแล้วนะ บางคนน่าจะโหลดไว้แล้ว แม่ Thank you เลยหรือ สไลด์ต่อไปยังไม่ได้เอาลง บอกก็ได้เมื่อเราโหลดเสร็จแล้วใช่ไหม ทุกอย่างที่เป็นรูป นึกออกนะ เราก็ต้องเรียกมันเพื่อมาวางใช้งานใช่ไหมคะ ตัวที่จะวางล็อกหรือตัวอุปสรรคของเรานะคะ อยู่ตรงไหนนะ นี่ ๆ แม่ก็มาสร้างตัวแปร เห็นไหมคะ ตัวแปรเพื่อจะวางตำแหน่งของไอ้ตัวอุปสรรคนั้นน่ะ มันก็จะมี logx ก็คือตำแหน่งค่าเริ่มต้นของภาพนี้ในแนว แนวจากซ้ายไปขวาน่ะ แล้วก็ rocky นะคะ ให้เราเทียบดูกับอะไร Ctrl + B ก่อน เห็นไหม ก็คือจอของแต่ละคนใช่ไหม เพราะขนาดจอแต่ละคนไม่เท่ากัน ใช่ไหม ของเครื่องแม่แค่ 800 แต่เหมือนของดอมน่ะ ตั้ง 1600 ใช่ไหมคะ ก็คือขนาดของพื้นที่จอเกมของเราไม่เท่านั้น เพราะฉะนั้น ตำแหน่งไอ้นี่ อาจจะตั้งไม่เท่ากับแม่ก็ได้ ก็คือพอเราลองตั้งไว้ก่อน เสร็จแล้วตอนเรามาเรียกวางรูปลงไปนะคะ ตรงวางรูปอยู่ตรงนี้ ก่อนอื่นต้องโหลด โหลดรูปก่อนใช่ไหมคะ ถึงจะถูกต้อง อันดับแรกไปโหลดรูปค่ะ อันนี้ไง เห็นไหม กำหนดตัวแปร แล้วนำเข้าไอ้ตัวอุปสรรค มี 4 รูปใช่ไหมคะ ก็คือใช้ 4 ตัวแปร OBS มาจากคำว่า Obtracless นั่นเอง เพราะฉะนั้น แม่ก็เลยให้พิมพ์ว่า ตั้งชื่อตัวแปรนี้ว่า obs จะได้ไม่ต้องพิมพ์จนเต็มว่า obstacles ยาว ๆ น่ะ เข้าใจไว้เลยว่า obs คืออุปสรรคที่เราจะเอามาลง เพราะฉะนั้น 1. ก็คือถ้าของใครเป็นรูปอะไรก็แล้วแต่น่ะ ก็ตามด้วยลำดับที่ของตัวอุปสรรคใส่ลงไปเลยนะ อุปสรรคชิ้นที่ 1 ชิ้นที่ 2 เพราะเมื่อกี้บอกให้โหลดรูปมาอย่างน้อย 4 รูป เพราะฉะนั้น อุปสรรคเราก็ต้องมี 4 รูปเหมือนกันใช่ไหมคะ แล้วเราก็ใช้คำสั่ง = pygame.imageload ก็คือให้ pygame มันไปโหลดอุปสรรคนั่นั้นเข้ามา ชื่อในนี้ ให้เด็ก ๆ ดูที่อะไร ดูที่ไฟล์รูปของตัวเองนึกออกนะ ชื่อ rock1 rock2 rock3 rock4 นี่ อันนี้เป็นชื่อจากรูปที่แม่โหลดมานึกออกนะ ของเด็ก ๆ โหลดมาชื่ออะไร แต่สังเกตว่าบางทีไฟล์ที่เราไปโหลดรูปมาใช่น่ะ ชื่อมันยาวใช่ไหมลูก ก็แก้ชื่อเสียหน่อย ถ้ามันเป็นก้อนหินก็ใช้คำว่า "rock" หรือ "storn" รูปที่เราไปโหลดมาโหลดมาหรือยัง สรุปพยักหน้ากับส่ายหัว ขึ้น Error อีกแล้ว เมื่อกี้ได้แล้วนี่เอ็มไปกดโดนอะไรนะ ไม่เป็นอะไร 70 มีโมดูล แบบนี้หรือ Screen build ค่าเริ่มต้น ไม่มีอัปเดตหรือ มี ๆ นี่อัปเดตแล้ว แบบนี้ล่ะ มันจะ Error ไม่เป็นไร ก็โหลดไปเก็บไว้ในนี้เหมือนเดิม โหลดเพิ่มก็ไปโหลดอีก โหลดให้ครบ 4 รูป ชื่อนะคะ สิ่งที่เด็ก ๆ จะต้องเปลี่ยนก็คือชื่อนะ ชื่อตรงนี้ ชื่อของไฟล์รูปของเด็ก ๆ เข้าใจนะ มันจะไม่เหมือนกับของแม่นะ ยกเว้นว่าตั้งเหมือนกัน ตั้ง log 1 log 2 log 3 กับอะไรอีกที่ห้ามลืม กับนามสกุลของรูป โยโก๊ะจำได้นะ ให้ดูด้วย ให้เช็ก เวลาเราโหลดรูปมาใช้ใช่ไหมคะ นามสกุลเครื่องแม่รูปของแม่มันโหลดมามันอาจจะเป็น png แต่ของเด็กโหลดมาอาจจะเป็นอะไรคะ Jpeg ใช่ไหม ต้องเช็กที่นามสกุลของรูปภาพเราด้วยนะคะ อาจจะไม่ได้ใช้ png เหมือนเครื่องแม่ ก็ต้องเปลี่ยนให้มันตรงกัน อันดับแรก ก็คือให้ Import รูปเข้ามาก่อน บางคนมีพื้นหลังให้เอาออกก่อนนะ เอาพื้นหลังออกนะ Remove Background น่ะ อย่าลืมเอาออกนะคะ ออกทางลัดไม่ให้พิมพ์ผิดบ่อย เด็ก ๆ เด็ก ๆ แค่พิมพ์บรรทัดเดียวนะลูก พิมพ์แค่บรรทัดนี้ มันจะได้ไม่ผิดน่ะ เพื่อจะได้ไม่ผิดนะ ให้พิมพ์แค่ obs1 นะคะ ตัวแปร obs 1 เท่ากับ pygame p-y-g-a-m-e game.image .load พิมพ์แค่บรรทัดเดียวแล้วเราก๊อปปี้วางนึกออกไหม แล้วแก้ obs เป็น 1, 2, 3, 4 เพราะฉะนั้น พิมพ์แค่บรรทัดเดียวจะได้ไม่ผิดอีก นึกออกเปล่า ในวงเล็บนะคะ วงเล็บเปิดวงเล็บปิด แล้วก็ใส่เครื่องหมาย Single quหรือ Double quoat ก็ได้ ใส่ชื่อและนามสกุลนะคะ ของรูปอุปสรรคเรา พิมพ์ obs1 วรรคลงมาบรรทัดหนึ่ง = วรรคก่อน วรรค ทีนี้ไปดูว่าไฟล์ตัวขอนไม้เมื่อกี้เอ็มใช้ชื่อว่าอะไร ก็เพราะฉะนั้น ตรงโค้ดตรงนี้ เอ็มก็ใส่ชื่อเข้าไป เสร็จแล้วก็ก็อปบรรทัดที่ 1 แล้วแก้แค่อะไร แก้แค่ obs1 ใช่ไหม เป็น 2, 3, 4 ตัวอื่นที่ไปพิมพ์ในบรรทัด แล้วแค่ไปแก้อะไร ชื่อไฟล์รูปแค่นั้น โอเคไหม ผิดเกือบทุกบรรทัด ชื่อรูปเข้าไปก่อน ใส่เครื่องหมาย Single นะ ถ้าบรรทัดแรกมันผิด ไม่มี . นี่ pygame ลบออกสิอะไรอยู่ข้างหน้า ไอ้นี่มันขึ้น... มาเฉย ๆ ลองขยายใหญ่สิ เด็ก ๆ ดูดี ๆ นะคะ เวลามันขึ้นในหน้าจอน่ะ พอแม่ขยายน่ะ มันจะไปขึ้นโครงร่างของตัว Sublime น่ะ แต่ความจริงแม่ไม่ได้ให้ใส่จุดใช่ไหม แม่บอกว่า obs1 วรรค pygame.image.load นะครับ ดูดี ๆ เมื่อพิมพ์เสร็จ 1 อุปสรรคให้ใช้วิธีการก๊อปปี้แล้ววางเพิ่ม 3 ครั้ง แล้วแก้ตัวเลขอุปสรรค นึกออกนะ แก้เป็น obs 1 เป็น obs 2, 3 แล้วก็ 4 แก้ตรงตัวแปรอุปสรรคแล้วก็แก้ตรงไหนอีกตัวหนึ่งคะ ตรงชื่อไฟล์ใช่ไหมลูก แค่นั้นนะคะ จะไม่มีโอกาสผิดเลย สิ่งที่เด็ก ๆ จะผิดก็คือชื่อตัวแปรที่พิมพ์กับชื่อไฟล์รูปที่จะเอามาใช่แค่นั้นเองนะคะ ถ้าผิดตรงจุดนี้ก็ไปไล่จากภาพที่ไปโหลดมา วิธีก๊อปปี้ วิธีก๊อปปี้นะคะ ก็คือลากเมาส์คลิกเมาส์ค้างไว้นะคะ แหม เมาส์ไม่เป็นใจ บางคนยังก๊อปปี้ไม่เป็นนะคะ ทำแถบสีให้มันขึ้นใช่ไหม ลากจากข้างหน้าไปข้างหลัง ข้างหลังไปข้างหน้าก็ได้ ปุ่ม Ctrl แล้วก็ปุ่ม C ใช่ไหมคะ เสร็จแล้วกดอะไร กด Ctrl + C เพื่อวาง กด Ctrl + Cเสร็จแล้วก็กด นี่นะ Crtl + V 3 ครั้ง 1 2 3 ถ้ามันต่อกัน ถ้ามันต่อกันแบบนี้นะคะ ก็คือกด Enter เมื่อถึงคำว่า "obs 1" ทุกครั้งเห็นไหม กด Enter ลงไปเลย เด็ก ๆ จะมีคำว่าตอนนี้ถ้าทำเหมือนแม่นี่ เด็ก ๆ จะมี obs1 4 อันใช่ไหมคะ ก็มาแก้ตัวเลขนะคะ จาก 1 เป็น 2 เป็น 3 เป็น 4 ให้มี obs ครบ 4 แก้ตัวเลขเสร็จ ก็ไปแก้ตรงชื่อใช่ไหมคะ ชื่อไฟล์รูปน่ะ เพราะฉะนั้น บางทีไปโหลดรูปมานะคะ เราทำให้มันง่าย เราก็ตั้งชื่อให้มันเหมือนกัน แล้วก็ใส่หมายเลขเข้าไปใช่ไหม ค่อยมาเปลี่ยนหมายเลขน่ะ มันจะง่ายกว่านะคะ เหมือนของแม่ไปโหลดมาแล้ว แม่ก็เลยตั้งมันเป็น rock1 rock2 log3 แล้วก็log4 แม่ก็จะแก้ที่ อย่างนี้นะคะ เขียนผิดใช่ไหม เห็นไหมคะ เวลาเราแก้ครบ มันก็หมายความว่าเราไปโหลดมาแล้ว 4 รูป เห็นเปล่า ครบ ไม่เห็นหรือ เห็นไหม เสร็จหรือยัง เดี๋ยวไปดู เดี๋ยวค่อยรัน ไปดู มันก็ได้เห็นใช่ไหมว่ารูปมันได้หรือเปล่า เดี๋ยวไปเช็กให้นะคะ บางคนบอกอยากรู้ หนูทำถูกไหม ทีนี้เวลาเรียกใช้ต้องเรียกใช้มันก่อนนะคะเด็ก ๆ ตำแหน่ง display เห็นไหม หรือ drawing น่ะ ตรงนี้นะคะ ให้ใช้คำสั่ง ให้ไปก๊อป (ปี้) ขอโทษ แล้ว... ก่อนอื่น ๆ พอใช้ใช้คำสั่งโหลดเสร็จนะคะ เด็ก ๆ ทำตัวแปรเพื่อกำหนดตำแหน่งก่อน ก็ดูจากรูปเรา รูปเราใช้ชื่อ Rock ตัวนี้เราก็เลยใช้ตำแหน่งตัว rocky rockx เห็นไหมคะ เด็ก ๆ เห็นตัวแปรชื่อ logx ไหม ชื่อเดียวกันกับไฟล์ภาพของเราน่ะค่ะ แต่ใช้คำว่า ใช้ตัวแปร Rock x ตัวนี้หมายถึงตำแหน่งของภาพที่เราจะวางในแนวตั้ง ก็คือจากซ้ายไปขวานะคะ ส่วน rock y นะคะ ก็คือตำแหน่งของรูปไอ้ตัวอุปสรรคเรานี่ ที่จะวางจากในแนวบนลงมาข้างล่างน่ะค่ะ นะคะ ดูอย่างไร ค่าของ Rockx ก็ดูจากจอเราน่ะค่ะ ว่าจอของเรากว้างเท่าไร เราจะเอามันไปวางที่ตำแหน่งไหน จอเราสูงเท่าไร เราจะเอามันไปวางตำแหน่งไหนนะคะ ลองใส่เท่าของแม่ก่อนก็ได้ พอเรียกการแสดงผลน่ะ แล้วมันอยู่ในตำแหน่งที่ไม่ตรงกับที่เราต้องการ เราก็มาแก้ที่เลขนะคะ ก่อนอื่นกำหนดตำแหน่ง กำหนดตำแหน่งการวางของก้อนหินก่อน จากนั้น คำสั่งถัดมานะคะ คำสั่งสุดท้าย ก็คือให้มันไปเรียกตัวนี้มา คำสั่ง screen.blit นะคะ บรรทัดที่ 98 screen.blit พูดผิด Screen.build วงเล็บเปิดก่อน วงเล็บเปิดแล้วพิมพ์ obs1 ตอนนี้ให้วางแค่อุปสรรคแรกก่อน พอรู้วิธีวางอุปสรรคที่ 1 อุปสรรคที่ 2 ที่ 3 ก็ค่อยเปลี่ยนได้นะ นะคะ แล้วก็ตามด้วย ตัดปัญหาไปเลย ใช่ เพราะเรามีทั้งหมด 4 ตัว ถ้าเราไปตั้งค่าตัวแปร logx, logy จะมีปัญหานะคะ ลบออกได้เลย เอาไว้ก่อนก็ได้ เอาไว้ก่อน เอาไว้ให้ดู ก็คือเรียกอุปสรรคที่ 1 มาวางนะคะ แล้วก็ในวงเล็บสี่เหลี่ยมใหญ่ ให้ใส่ค่าตัวแปร rockx แล้วก็ตัวแปร logy สังเกตว่าเมื่อเราประกาศตัวแปรไปแล้ว บอกแล้วนะคะ ถ้าเด็ก ๆ ประกาศตัวแปรอะไร มันจะขึ้นมาอยู่ในนี้ เราก็คลิกเลือกได้เลยนะคะ เพราะเรามี Rock x ที่เราประกาศไป แล้วเราก็มีที่เราประกาศลงไป เราก็เลือกให้มันตรงนะคะ ทีนี้ล่ะ กด Ctrl + B ดูได้เลย ถ้าอุปสรรคมันมาวางก็แสดงว่าใช้ได้แล้ว นี่เห็นไหมคะ นี่คือก้อนกินโดนเอามาวาง ก้อนหินใหญ่กว่าไดโนเสาร์ อย่าลืมวิธีปรับขนาด เดี๋ยวไปปรับขนาดก่อน บรรทัดนี้นะคะ ขอโทษ ไอ้ตัวนี้มันมาบังใช่ไหมไม่เห็น ไม่เห็นโค้ด Run แล้วไม่เห็นโค้ด ได้หรือยัง บางคนไปโหลดรูปอุปสรรคมาแล้วรูปมันใหญ่ใช่ไหม จำได้ไหมแม่สอนวิธีลดขนาดรูปน่ะ ใช้อะไรคะ ใช้อะไร โปรแกรมอะไร ระบายสีไง ใช่ไหม แล้วเปิดไฟล์รูปมา สมมติ เมื่อกี้ log1 ก็ยังใหญ่ไปอีก เห็นไหมคะ เสร็จแล้วให้ไปที่อะไร ไม่แน่ใจว่ารูปมันเล็กมันใหญ่ ให้เด็ก ๆ เช็กตรงนี้ด้วยนะ 100 เปอร์เซ็นต์นี่ เสร็จแล้ว คลิกปรับขนาด ลดลงนะคะ เราก็ลดลงตามเปอร์เซ็นต์เลย ลดลงสัก 50 เปอร์เซ็นต์ เสร็จแล้วกด Save นะคะ ไฟล์เดิมเรานี่ล่ะ เดี๋ยว Run ให้ดูใหม่ เราว่าก้อนหินเรามันก้อนใหญ่ เห็นไหม พอปรับขนาดแล้ว มันจะมี Background มาอย่างที่บอก สังเกต ก้อนหินเล็กลงหรือยัง ไม่อยากแก้มากก็เรามาแก้การ์ตูนเราให้ใหญ่ขึ้นก็ได้นะ มีวิธีการแก้ 2 แบบเข้าใจนะ ก็คือถ้าเราไม่ทำอุปสรรคให้มันเล็ก เราก็ไปทำตัวการ์ตูนให้มันใหญ่ขึ้น แต่เด็ก ๆ ต้องเข้าใจนะคะ ให้มันสมดุลกับฉากด้วย ไม่ใช่เล็กนิดเดียว ก้อนหินก้อนเบอเรอมันก็ไม่ใช่ไหม ให้มันได้สมดุลกันด้วยนะคะ ไอ้เรื่องนี้นี่ต้องตัดสินใจด้วยตัวเอง ทีนี้ อันนี้เป็นการบ้านให้ไปทำแล้วกันให้ไปแก้รูปให้มีขนาดพอดีกับฉากเรานะคะ แล้วสัปดาห์หน้าแล้วเราค่อยมาต่อวิธีการว่าพอเจออุปสรรคปุ๊บเราจะกระโดดข้ามมันอย่างไรใช่ไหม สัปดาห์หน้าจะยากยิ่งกว่านี้อีกนะคะ เพราะฉะนั้น เคลียร์รูปภาพให้มันเสร็จเรียบร้อยก่อนโอเคนะ ตอนนี้บางคน คือก้อนหินน่ะ เกือบเต็มจอก็มี บางคนเอามาใส่ เพราะฉะนั้น ต้องไปปรับลดขนาดนะคะ ค่อย ๆ เช็กไป เช็กรูปตัวเอง เพราะแม่เอามาแม่ก็แก้ไป 3 รอบแล้ว พอแก้ปุ๊บดันมี Background มาอีก เราก็ต้องเอาออกนะ โอเคนะคะ รู้วิธีการวางแล้วค่อยไปจัด อย่างนั้นเดี๋ยวสัปดาห์นี้เราจะพอแค่นี้ ขอบคุณพี่อีโกับพี่การ์ตูนนะคะ สำหรับวันนี้ เจอกันสัปดาห์หน้าค่ะ (พี่การ์ตูน) ขอบคุณอาจารย์แม่ขอบคุณพี่สุภาพร ด้วยค่ะ