WEBVTT
Kind: captions
Language: th

00:00:19.204 --> 00:00:22.716
(อาจารย์สุธิรา) สวัสดีค่ะ (ล่าม) สวัสดีค่ะ

00:00:22.716 --> 00:00:30.289
(อาจารย์สุธิรา) โอเคค่ะ ได้ยินนะคะ เดี๋ยวเราจะมาทำต่อนะคะ จากสัปดาห์ที่แล้ว

00:00:30.843 --> 00:00:38.668
สัปดาห์ที่แล้วเราลงตัวเกมเราไปแค่ 1 ตัว แต่ความจริง ตัวเกมเราที่จะใช้นี่

00:00:38.668 --> 00:00:45.684
ก็คือถ้าสมมติน้องเดินอย่างนี้นะคะ มันก็จะมีหลายท่าเหมือนรูปเล็ก ๆ อย่างนี้เห็นไหม

00:00:46.053 --> 00:00:55.372
ท่าเขาก็จะเปลี่ยน ก็เลยให้ไปค้น Sprite Sheet ทุกคนน่าจะมีแล้ว ใครยังไม่มีภาพแบบนี้ยกมือ

00:00:56.788 --> 00:01:07.799
นะคะทีนี้โฟลเดอร์อย่าลืม ๆ มันจะต้องอยู่ในโฟลเดอร์ที่ Drive C: ของเรานะ แล้วก็โฟลเดอร์ชื่อ

00:01:08.291 --> 00:01:13.274
Drive ที่เป็นชื่อของเด็ก ๆ นะคะ

00:01:15.000 --> 00:01:26.188
นี่ เพราะว่าไฟล์ pygame ที่เรา Coding จะอยู่ในนี้ด้วยเหมือนกัน ก็คือตำแหน่งของไฟล์

00:01:26.188 --> 00:01:34.344
ที่เราจะใช้โค้ดกับรูปภาพ มันจะต้องอยู่ในที่เก็บเดียวกัน โฟลเดอร์เดียวกันนะคะ พร้อมหรือยัง

00:01:35.390 --> 00:01:36.766
ถ้าพร้อมแล้ว

00:01:41.267 --> 00:01:43.919
สิ่งแรกที่เราจะทำนะคะ

00:01:47.735 --> 00:01:55.303
ให้เปิด Sublime เหมือนเดิม เปิดไฟล์ Sublime Text เก่าเราขึ้นมาเลย

00:02:00.904 --> 00:02:04.483
ใครอยู่ไหนนะคะ

00:02:13.900 --> 00:02:16.379
เปิด Sublime แล้วนะคะ แล้ว...

00:02:29.182 --> 00:02:36.044
ทีนี้เด็ก ๆ ดูนะคะ ข้อแรกสิ่งที่เราจะทำ ก็คือ

00:02:36.475 --> 00:02:46.267
เราจะไป Import Module ขึ้นมาอีก 1 ตัวนะ คือ ตอนเดิมนี่ โมดูลที่เรา Import คือ โมดูล pygame

00:02:46.267 --> 00:02:50.364
แต่ทีนี้จะมีเพิ่มขึ้นมา 1 ตัวนะคะ

00:02:51.718 --> 00:02:58.856
แล้วลำดับที่ 2 เราก็จะมาตั้งค่า พอเราไป Import มา เราก็ต้องมาตั้งค่าเพื่อ...

00:02:58.856 --> 00:03:02.938
เพื่อจะเรียกใช้ไอ้โมดูลตัวใหม่เรานี่นะคะ

00:03:04.354 --> 00:03:14.088
จากนั้นเราก็ไปกำหนดการแสดงผล ให้โมดูลตัวใหม่นี้ ว่ามันแสดงผลในลักษณะไหนนะคะ

00:03:14.088 --> 00:03:23.470
มาดูโค้ดกัน คำสั่งแรกคือ import pygame ใช่ไหม เรา import pygame

00:03:23.470 --> 00:03:31.027
แล้วเราคั่น ก็คือเราไม่ต้องไปพิมพ์คำว่า "import" ใหม่ คั่นด้วยเครื่องหมาย : นะ

00:03:31.027 --> 00:03:41.869
แล้วก็ตามด้วย sys s-y-s มาจาก System ตอนนี้เรา import module ที่ชื่อว่า system นะคะ

00:03:45.993 --> 00:03:48.648
ตัวนี้นะคะ

00:03:49.694 --> 00:03:58.818
แหม สีไม่ได้ ไฟไม่กะพริบ เอาใหม่ เลือกตัวชี้ สี ๆ ๆ สีอะไร

00:04:03.557 --> 00:04:10.457
นี่นะคะ เราจะ import module ที่ชื่อว่า sys หรือ system

00:04:10.457 --> 00:04:23.195
ทีนี้พอ Import Module นี้เสร็จนะคะ module นี้จะเอาไว้ทำอะไร มันจะช่วยในเรื่องของเวลานะคะ

00:04:23.195 --> 00:04:27.905
System ก็คือตัวระบบนั่นเอง นี่เห็นไหมค่าทั่วไปที่จะตั้ง

00:04:28.951 --> 00:04:39.555
clock = pygame.time.clock นะคะ จะกำหนดระยะะเวลา แล้วพอในส่วนของการแสดงผล

00:04:40.294 --> 00:04:50.982
เรียกใช้ตัวแปรที่ชื่อ clock เราสร้างตัวแปรชื่อ clock เพื่อเก็บเวลานี่ clock. tick (60) ก็คือ

00:04:51.351 --> 00:04:58.408
ให้ระยะเวลาในการทำงานมันอยู่ที่ประมาณ 60 วินาทีนะคะ ในคอมพิวเตอร์ไม่ใช่ 60 นาทีนะ

00:04:58.408 --> 00:05:05.688
60 วินาทีนะเด็ก ๆ เพราะฉะนั้น เปิด sublime เราขึ้นมานะคะ

00:05:06.796 --> 00:05:15.036
แล้วไปที่ตำแหน่งที่ import ก็คือตำแหน่งแรกเห็นไหม บรรทัดนี้นะ นะคะ

00:05:17.252 --> 00:05:33.838
ใส่อะไรคะ : ใช่ไหมคะ แล้วตามด้วยโมดูลที่ชื่อว่า system หรือ sys s-y-s เห็นนะคะ เห็นไหม

00:05:34.330 --> 00:05:41.853
เพระาคำสั่ง import นะคะ Import Module นี่จะอยู่ที่บรรทัดแรกเสมอเลย เพราะ

00:05:41.853 --> 00:05:49.527
การทำงานของโปรแกรมนี่ ก็คือมันจะอ่านจากบนลงล่าง เพราะฉะนั้น เราอยากจะให้มันไป

00:05:49.896 --> 00:05:53.535
ทำอะไรก่อน เราต้องเอามันไปไว้ข้างบนว่าอย่างนั้นเถอะ

00:05:54.889 --> 00:06:06.918
เมื่อได้โมดูลนี้แล้ว ส่วนต่อมาจะอยู่ที่ส่วนนี้นะคะ กำหนดค่าทั่วไป ตัวที่ในหมายเลข 2 เด็ก ๆ เห็นนะ

00:06:06.918 --> 00:06:18.543
นี่ ก็คือเพิ่ม clock. เอ้ย clock = นะคะ เท่ากับนะคะตรงนี้

00:06:19.220 --> 00:06:28.722
pygame.time เราจะเรียกใช้ library time นั่นเองนะคะ เพราะฉะนั้น เราก็เลยต้องเปิด

00:06:28.722 --> 00:06:37.384
โมดูล system ขึ้นมานะคะ clock = pygame.time.Clock ( )

00:06:37.815 --> 00:06:45.214
พร้อมนะคะ ใน sublime จะอยู่บรรทัดที่ต่อจากอะไร ดูดี ๆ pygame.init( ) เห็นไหม

00:06:46.014 --> 00:06:49.901
ตำแหน่งของการตั้งค่าทั่วไปนะคะ

00:06:52.934 --> 00:07:04.758
อุ๊ย ทำไมมันลบล่ะ แหม ตรงส่วนนี้เดี๋ยวนะคะ ตรงส่วนนี้จะแก้ว่าเป็น...

00:07:45.259 --> 00:07:55.147
จะเตือนเด็ก ๆ เสมอว่าให้เราใส่ # เพื่ออธิบายว่าตรง Coding นี้นะคะ เราใช้ทำอะไร

00:07:55.147 --> 00:08:04.815
เราจะได้รู้ว่า อ๋อ คำสั่งนี้นะคะ มันเป็นการสั่งให้นำเข้าโมดูล ซึ่งโมดูลที่เรานำเข้า ก็คือ pygame แล้วก็

00:08:04.815 --> 00:08:08.513
sys นะคะ 2 ตัวนี้นั่นเองนะคะ

00:08:09.252 --> 00:08:17.900
เสร็จแล้วในส่วนของการตั้งค่าทั่วไป ก็คือ pygame.init นี่ ก็คือเรียกใช้ pygame

00:08:17.900 --> 00:08:25.786
โมดูล pygame และอีกตัวหนึ่งนะคะ อันดับแรกประกาศตัวแปรที่ชื่อว่า clock

00:08:28.125 --> 00:08:38.835
ขอโทษ c นะคะ พิมพ์ตัว c-l-o-c-k clock clock ที่แปลว่า นาฬิกาน่ะลูก

00:08:39.204 --> 00:08:45.010
วิธีการประกาศตัวแปร ก็คือชื่อตัวแปรตามด้วยเครื่องหมาย = วรรค เครื่องหมาย =

00:08:45.010 --> 00:08:48.581
กดวรรคนะคะ กด Space Bar

00:08:49.012 --> 00:08:53.716
แล้วก็ใส่เครื่องหมาย = แล้วก็กด Space Bar อีก 1 ครั้ง

00:08:55.070 --> 00:09:04.400
แล้วก็พิมพ์ libary.pygame.time พิมพ์ตัว p ปุ๊บนะคะ

00:09:04.769 --> 00:09:12.930
คลิกเลือก pygame บอกแล้วว่าเราจะไม่พิมพ์ยาว เพราะ Sublime มันจะขึ้นตัว

00:09:13.669 --> 00:09:19.757
โค้ดที่เราเขียนไปแล้วหรือตัวอะไรก็แล้วแต่ เราก็มาเลือกเอานะคะ .

00:09:21.050 --> 00:09:27.382
. นะคะ . t-i-m-e time

00:09:27.690 --> 00:09:31.557
.time แล้วก็ .clock อีกทีหนึ่ง

00:09:31.803 --> 00:09:38.082
เลือก clock นะคะ เห็นไหม มันจะช่วยให้เราไม่ไปพิมพ์ผิด

00:09:38.082 --> 00:09:46.572
บอกให้รู้ว่าอ๋อเราจะใช้ตัวแปรชื่อว่า clock ตัวนี้ แล้วก็ใส่วงเล็บ เห็นไหมคะ นี่

00:09:48.111 --> 00:09:56.890
มันจะไม่มีปัญหาว่าพิมพ์ตัว o เป็นตัว a อะไรอย่างนี้ เพราะบางทีเด็ก ๆ มองแล้วดันเห็นไม่ชัด

00:09:56.890 --> 00:09:58.892
นี่ขยายนะคะ

00:10:03.693 --> 00:10:06.350
ตรงนี้คือส่วนของการตั้งค่าทั่วไป

00:10:09.551 --> 00:10:12.132
ใครยังไม่เสร็จบรรทัดนี้

00:10:12.501 --> 00:10:19.686
ทำให้เสร็จนะคะ ไม่อย่างนั้นไปขั้นตอนต่อไปไม่ได้นะ ตอนนี้เรา Import แล้ว

00:10:19.686 --> 00:10:28.215
แล้วเรามาตั้งค่ากำหนดค่าให้มัน ก็คือให้เป็นตัวแปรที่ชื่อว่า clock ทีนี้เราจะไปเรียกใช้งาน

00:10:58.142 --> 00:11:00.844
เราจะไปที่ตำแหน่งท้าย ๆ

00:11:03.922 --> 00:11:06.683
แสดงผลจะอยู่ประมาณตรง...

00:11:08.284 --> 00:11:09.823
เดี๋ยวนะ

00:11:18.440 --> 00:11:27.611
เอาไปไว้ท้าย ๆ ก่อน นี่ ๆ ๆ แถว ๆ พวกนี้นี่ แถว screen.blit อะไรพวกนี้นะเด็ก ๆ

00:11:31.673 --> 00:11:40.314
อย่างนั้นเดี๋ยวใส่... ใส่ไอ้นี่ให้ก่อนนะคะ ใส่ # ก่อน ใส่ # เข้าไป

00:11:42.345 --> 00:11:48.683
ตรงนี้ส่วนของการแสดงผลนะ คั่นส่วนไว้จะได้รู้

00:11:55.145 --> 00:12:05.716
เห็นไหมคะ สังเกตตรงการแสดงผลเรา เพราะ screen.blit ก็คือให้มันแสดงไอ้ภาพพื้นหลังเราน่ะนะคะ

00:12:06.885 --> 00:12:13.959
ความจริงตัวเดียวก็ได้นะนี่ ลบออกก็ได้

00:12:20.483 --> 00:12:31.979
ลบตัวนี้ได้เลยนะนี่ เดี๋ยวค่อยมาลบนะคะ ไล่ลบ เพราะฉะนั้น คำสั่งที่ 3 ก็คือให้... เดี๋ยวนะ

00:12:32.841 --> 00:12:41.029
เราจะ... นี่นะคะ ตรงส่วนของการแสดงผลที่บอก ก็คือเราจะเรียก

00:12:41.706 --> 00:12:52.401
ตัวแปร clock นะคะ clock.tick นี่ แล้ว ระบุ ระบุว่าไอ้เวลาน่ะ เวลาที่ให้มันทำงานนี่

00:12:52.401 --> 00:13:04.182
อยู่ที่ประมาณ 60 วินาทีนะคะ วินาทีนะคะ ไม่ใช่นาที เพราะฉะนั้น ตำแหน่งก็จะอยู่ตรงเมื่อกี้ที่มาร์กไว้นะ

00:13:04.674 --> 00:13:08.030
การแสดงผลก็คือตรงนี้นะคะ

00:13:08.707 --> 00:13:15.000
อย่ากด Space Bar กดอะไรคะ กด Tab ให้ไปตรงกับตำแหน่ง screen บอกแล้วนะคะ

00:13:15.000 --> 00:13:20.487
เพราะบางคนจะติด พอเห็นย่อหน้าที่ 2 มันวรรคนี่

00:13:20.733 --> 00:13:26.638
ใน sublime มันจะไม่ค่อยใช้วรรค ใช้วรรคจะใช้เฉพาะระหว่างคำ

00:13:26.638 --> 00:13:37.691
แต่ว่าทำย่อหน้านี่ เราจะใช้ Tab นะคะ เราก็เรียกใช้ clock พิมพ์ c ปุ๊บ เลือก clock ของเรานะคะ

00:13:37.691 --> 00:13:39.940
แล้วก็ตามด้วย .

00:13:50.834 --> 00:13:55.781
memory ไม่ดีนะคะ ก็เลยจำไม่ได้ค่ะ

00:13:56.151 --> 00:13:57.827
ขอบอก

00:13:59.366 --> 00:14:12.282
สมงสมองไปหมด อากาศเย็น สกลนครหนาวนะคะ บอกเลยว่าหนาว เด็ก ๆ พากันไม่มานี่ t-i...

00:14:12.282 --> 00:14:23.405
tick นี่เป็นคำสั่งใน library นั่นเองนะคะ แล้วก็ตามด้วยวงเล็บ ใส่ 60 ตัวเดิมน่ะ 60

00:14:23.897 --> 00:14:32.239
เดี๋ยวตัวเลขเราแก้ได้ ให้นึกถึงนะ ถ้าเราลอง Run โปรแกรมแล้ว ตัวเกมเรามันวิ่งไวเกินไป

00:14:32.239 --> 00:14:38.216
เราก็ไปเพิ่มเวลาให้มัน แต่ถ้ามันวิ่งช้า 60 แล้วมันช้า เราก็

00:14:39.816 --> 00:14:49.334
ลดเวลาลงนะคะ ก็คือให้นึกถึงน่ะ เวลา 1 วินาที 2 วินาที 3 วินาที 1 คือ เพิ่มใช่ไหม

00:14:49.334 --> 00:15:00.000
พอ 1 มันเร็วไปเราก็ต้องเพิ่มให้มันช้า ก็ต้องเพิ่ม แต่ถ้ามันช้าเราต้องลด ลดตัวเลขลงนะคะหลักการ

00:15:00.000 --> 00:15:10.587
นี่คือเราจะได้ ยังไม่ Run นะคะ เพราะตัวที่เรา Run ถ้าเรากดมันก็จะไม่แสดงผลอะไรใด ๆ ทั้งสิ้นนะคะ

00:15:14.649 --> 00:15:20.154
ยังไม่กด Run นะคะ ไปทำต่อ เราต้อง... ยังเขียนโค้ดไม่เสร็จ อย่าลืมว่าโค้ด

00:15:20.154 --> 00:15:23.391
ไม่ได้มีแค่ 3 บรรทัดแน่นอนนะคะ

00:15:24.622 --> 00:15:28.829
กดผิดอันอีก ไปไสล่ะ

00:15:37.385 --> 00:15:39.109
เดี๋ยวเอาตัวชี้ออก

00:15:43.233 --> 00:15:45.891
ไปที่ถัดไปนะคะ

00:16:04.817 --> 00:16:17.580
ลำดับต่อมานะคะ เรากำหนดไอ้นี่ไปเรียบร้อยแล้วนะ ข้ามนะคะ เราตั้งค่าหน้าจอเกมเราตั้งไปแล้ว

00:16:19.796 --> 00:16:21.328
set mode หรือ

00:16:36.839 --> 00:16:42.393
เราจะมาทำ Loop นะคะ ทำ Loop ให้เขา เราทำไปแล้ว

00:16:43.316 --> 00:16:48.249
เดี๋ยวจะข้ามส่วนนี้ เพราะเรามาทำต่อจากอันเดิมนะ

00:16:50.157 --> 00:16:59.213
นี่ ๆ ๆ เราจะใส่ moving_sprites เข้าไปได้นี่ นี่นะคะ เราต้องไปตรงนี้ก่อน

00:17:13.739 --> 00:17:21.263
เราจะมาสร้าง class ให้ก่อนนะคะ สร้าง class เพื่อ... เพื่อที่จะทำอะไร

00:17:21.263 --> 00:17:27.947
จำได้นะ ตัวเกมบอกแล้ว ในหนก่อน เราใส่เข้าไปแค่ตัวเดียว แต่ทีนี้

00:17:27.947 --> 00:17:35.028
เราจะเอาน้องมาทั้งเซ็ตเลย น้องการ์ตูนเราน่ะมาทั้งเซ็ตเลยนะคะ

00:17:35.028 --> 00:17:42.551
เพราะฉะนั้น เราจะต้องสร้าง class ให้น้อง เพื่อจะได้เรียกใช้ เราจะได้

00:17:42.982 --> 00:17:47.210
เรียกตามชื่อ class ครั้งเดียวพอจบนะคะ

00:17:47.210 --> 00:17:57.071
ทีนี้ตอนจะสร้าง class นี่นะคะ รูปแบบก็คือเราจะต้องพิมพ์คำว่า "class" แล้วก็ตามด้วยชื่อของ class

00:17:57.071 --> 00:18:04.467
คือ ในการเขียนโปรแกรมนี่ การสร้าง class จะช่วยให้เราไม่ต้อง

00:18:05.513 --> 00:18:13.776
เขียนโปรแกรมใหญ่มาก ๆ หลาย ๆ ครั้ง หรือเขียนเรียกใช้ตัวอะไรก็แล้วแต่นะคะ

00:18:13.776 --> 00:18:19.925
ตัวรูปภาพนี่หลาย ๆ ครั้ง เหมือนใน class นี้ รูปมันมีหลายรูปน่ะ ไม่อย่างนั้นเราต้องไป

00:18:19.925 --> 00:18:26.212
เรียกรูปหลายรูปเลยว่าอย่างนั้นเถอะนะคะ เราจะเรียกแค่ตรงใน class ครั้งเดียวนะคะ

00:18:27.443 --> 00:18:33.814
แล้วก็ใส่ : พอเสร็จชื่อ class ปุ๊บนี่จะต้องระบุ : เข้าไปนะคะ

00:18:33.814 --> 00:18:43.260
แล้วก็ใส่ statements ก็คือเงื่อนไขอะไรตามทีหลังมา พร้อมนะคะ เราจะไปต่อนะคะ

00:18:44.183 --> 00:18:54.024
ดูดี ๆ นะคะ ชื่อ class จำไว้เลยนะคะ ถ้าเมื่อไหร่ที่ให้สร้าง class เวลาตั้งชื่อ class เด็ก ๆ จะต้อง

00:18:54.824 --> 00:19:02.695
พิมพ์ชื่อ class ตัวแรกด้วยตัวพิมพ์ใหญ่ เพราะฉะนั้น เตรียมกด Caps Lock ได้เลยนะคะ

00:19:05.896 --> 00:19:11.559
นะคะ เมื่อเราสร้าง class เสร็จ ลำดับต่อมา เราจะมาสร้าง method นะคะ

00:19:11.559 --> 00:19:19.359
ให้ class ของเรานั่นเองนะคะ method นี่ 1 ตัวนะคะ method_init_( ) นะคะ

00:19:22.466 --> 00:19:30.593
ก่อนหน้า เราจะเปิดหน้านี้ไว้นะคะ เริ่มค่ะ ไปที่ Sublime เราเหมือนเดิม ทีนี้

00:19:31.024 --> 00:19:40.320
เขาบอกว่าอยากให้มันรู้อะไรมันต้องอยู่ข้างบนเสมอเลย class จะอยู่ตรงส่วนที่

00:19:41.736 --> 00:19:50.135
เมื่อกี้นะ ในที่โค้ดจะเห็นว่า class จะอยู่ต่อจากส่วนของ import

00:19:53.336 --> 00:20:02.131
นะคะ ใส่ # ค่ะ เพื่อจะได้รู้ว่าตรงนี้เป็น... เราจะทำอะไร เราจะสร้าง class

00:20:04.901 --> 00:20:12.175
อยู่ต่อจาก... เดี๋ยวนะ เพราะเมื่อกี้มันต้องอยู่ต่อจาก...

00:20:16.360 --> 00:20:25.963
อยู่ต่อจากการตั้งค่าทั่วไปนะคะ เราจะอยู่ตำแหน่งนี้ ถัดมา เพราะตรงนี้จะต้องโดนเรียกใช้ก่อน

00:20:25.963 --> 00:20:34.552
แล้วก็ค่อยมาตรงนี้ได้ ทำไมเป็นภาษาไทย กดผิดหรือนะคะ

00:21:07.545 --> 00:21:15.496
ตอนนี้ใส่ # เพื่ออธิบายว่าเราจะสร้าง class เพื่อนำเข้าภาพต่อเนื่อง

00:21:15.496 --> 00:21:20.854
หรือ Sprite Sheet เรานั่นเองนะคะ อธิบายไว้เด็ก ๆ จะได้รู้นะคะ

00:21:34.949 --> 00:21:40.906
ถ้าใครพิมพ์ # หรือคอมเมนต์เสร็จแล้วนะคะ

00:21:45.000 --> 00:21:49.097
ก็จะจะสร้าง class ได้เลยนะคะ

00:22:36.669 --> 00:22:46.733
พิมพ์นะคะ พิมพ์ C บางคนพิมพ์ C ยังไม่ขึ้น พิมพ์ C-l ก็ได้นะคะ

00:22:46.733 --> 00:22:51.973
แล้วเลือกตัวแรก ClassNew class นะคะ

00:22:52.589 --> 00:22:58.727
คลิกเข้าไป หรือกด Enter เห็นไหมคะ มันจะสร้าง

00:23:00.000 --> 00:23:09.644
โครงสร้างของ class ขึ้นมาเลย มี ClassName นะคะ แล้วก็มี Definition ที่จะตั้งค่าเห็นไหมคะ

00:23:09.644 --> 00:23:18.794
รูปแบบเหมือนไหม เหมือนในสไลด์เราไหม เห็นไหมคะ สร้าง Class แล้วก็มีตัวนี้เห็นไหม

00:23:18.794 --> 00:23:22.490
ส่วนของ class ต่าง ๆ นี่นะคะขึ้นมา

00:23:27.783 --> 00:23:34.672
ทีนี้มาดูตรงนี้ ClassName ที่เขียว ๆ แล้วมีไฟกะพริบ เด็ก ๆ

00:23:36.641 --> 00:23:44.103
ทำแถบครอบ ตรง ClassName นี่ ที่มันขึ้นสีเขียว ๆ นี่ คือเราจะต้องเป็นคน

00:23:44.103 --> 00:23:48.876
ตั้งชื่อให้ class ของเรานะคะ เพราะฉะนั้น class นี้

00:23:48.875 --> 00:23:54.457
ภาพที่จะนำมาใช้หรือตัวเกมที่เรานำมาใช้คือตัวอะไรคะเด็ก ๆ

00:23:54.949 --> 00:23:59.905
จำได้นะ ของใครให้ดูที่ตัวนี้

00:24:00.336 --> 00:24:06.520
ตัวเกมที่เราเอามาใช้ในครั้งก่อนนี่ เราใช้คำว่า "cat" ใช่ไหม

00:24:07.751 --> 00:24:16.069
ของเด็ก ๆ ชื่ออะไรคะ เพราะฉะนั้น เอาชื่อ class เป็นตัวนี้ แต่อย่าลืมว่าตัวต้นของมันคืออะไรคะ

00:24:16.069 --> 00:24:22.139
ตัวใหญ่ใช่ไหม เดี๋ยวเราค่อยไปลบบรรทัดนั้น เรายังไม่ Run ไม่มีปัญหา

00:24:22.139 --> 00:24:29.699
กด C-a-t เป็นตัวใหม่นะคะ class กับ Cat เห็นไหม

00:24:30.499 --> 00:24:35.665
class จะพิมพ์ด้วยตัวแรก จะต้องเป็นตัวพิมพ์ใหญ่เสมอ

00:24:35.665 --> 00:24:39.518
ชื่อ class จะต้องขึ้นต้นด้วยตัวใหญ่เสมอนะคะ

00:24:41.057 --> 00:24:48.685
ทีนี้มาดูในส่วนไอ้เขียว ๆ นี้อีกที่เราจะต้องแก้ object มันนะคะ วัตถุที่เราจะเอามาวาง

00:24:48.685 --> 00:24:52.532
เราจะระบุอะไรลงไปนะคะ ใน object

00:24:55.486 --> 00:25:07.835
ของอุบลตัวอะไรนะลูก ก็ Boy แต่เดิม Boy เล็ก ก็เป็นตัวใหญ่นะคะ อย่าลืมนะคะ

00:25:07.835 --> 00:25:14.239
ตัวอักษรตัวแรกต้องเป็นตัวใหญ่นะลูก ถ้าเป็นชื่อ Class เวลาเราตั้งชื่อ class

00:25:14.239 --> 00:25:21.796
สังเกตชื่อตัวแปรตัวเล็กตัวใหญ่ก็ได้ แต่เมื่อตั้งไปแล้วต้องเช็กนึกออกนะ แต่ถ้าชื่อ class น่ะ

00:25:21.796 --> 00:25:25.462
ต้องขึ้นต้นด้วยตัวใหญ่เสมอนะคะ

00:25:26.324 --> 00:25:33.992
ต่อมา Object ใน Object นี้เราจะใส่อะไรเข้าไปใน class ของเรานะคะ มาดูกัน

00:25:33.992 --> 00:25:43.874
Object ที่เราจะใส่ ก็คือเรียกใช้ sprite คือ pygame นี่มันจะมี library บอกแล้ว

00:25:43.874 --> 00:25:53.269
เพราะฉะนั้น Library ที่จะใช้ก็คือ ดูนะคะ เด็ก ๆ ดูดี ๆ Sprite 2 ครั้งนี่ sprite ตัวแรก ตัวพิมพ์เล็ก

00:25:54.992 --> 00:26:04.381
มันจะเป็นคนละตัว นึกออกนะ เพราะอะไร เพราะเห็นไหม Sprite ตัวที่ 2 ขึ้นต้นตัว S มันเป็นตัวใหญ่

00:26:04.381 --> 00:26:11.415
สังเกต แล้วถ้าเวลาแม่บอกว่าเรียกใช้ Sprite ตัวใหญ่ เราต้องพิมพ์ตัวใหญ่ก่อน นึกออกนะ

00:26:11.415 --> 00:26:17.439
แต่ถ้าเรียก sprite เล็ก ก็คือพิมพ์ตัวพิมพ์เล็กทั้งหมดนะคะ มันจะมี 2 ตัวนะคะ

00:26:17.439 --> 00:26:27.359
เพราะฉะนั้น ใน Object เราจะเรียกใช้ Library pygame ที่ใช้ sprite เล็ก.Sprite ใหญ่ ว่าอย่างนั้นเถอะ

00:26:28.221 --> 00:26:30.340
โอเคไหมนะคะ

00:26:30.709 --> 00:26:40.786
เพราะฉะนั้น กลับมาที่ตัวนี้เรา ใน Object เห็นไหมคะ เราพิมพ์ p ตัว p แล้วกด

00:26:41.155 --> 00:26:48.125
pygame กด Enter ได้เลย พอขึ้น pygame เลือก pygame แล้วกด Enter นะ .

00:26:49.171 --> 00:26:52.705
ใส่ . นะคะ sprite

00:27:00.000 --> 00:27:13.852
ขึ้น Sprite ใหญ่ ยังไม่กดนะเด็ก ๆ เพราะ sprite แรก คือ sprite ตัวเล็กนะคะ s-p-r-i-t-e.

00:27:15.500 --> 00:27:21.618
Sprite ที่ 2 นี่ ตัวใหญ่ ต้องเลือก Sprite ตัวใหญ่ ไปไหนแล้ว อยู่ข้างล่าง

00:27:22.849 --> 00:27:24.998
อยู่เกือบล่างสุดเลยเห็นไหม

00:27:26.906 --> 00:27:37.745
คือ Sprite ที่ 2 มันสร้างไว้ใน คือ Library มันมีอยู่แล้วนึกออกนะ โอเคนะคะ

00:27:37.745 --> 00:27:46.034
เพราะตัว : เราไม่ต้องใส่เลย สังเกตถ้าเราอย่างนี้ ไอ้พวกเครื่องหมายมันจะไม่หาย

00:27:46.896 --> 00:27:53.771
ดูใหม่นะ ไอ้ sprite ที่ 2 เด็ก ๆ ดูใหม่นะ กด S ปุ๊บ ให้เลื่อนไปหา

00:27:54.448 --> 00:28:02.749
Sprite ใหญ่ เห็นไหมคะ แล้วกด Enter เพราะมันเป็นตัวที่เป็นอยู่ใน Library แล้วว่าอย่างนั้นเถอะ

00:28:02.749 --> 00:28:08.970
แต่ Sprite เล็กนี่เหมือนบอกให้รู้ว่าฉันสร้างตัวนี้ขึ้นมานะคะ เพื่อจะเรียกใช้

00:28:13.402 --> 00:28:15.319
เขาบอก

00:28:17.350 --> 00:28:24.439
ตรงนี้เราจะลบออกนะคะ เป็นแค่อธิบาย ซึ่งเราอธิบายไว้ข้างบนแล้ว เรากด Delete ได้เลย

00:28:24.439 --> 00:28:33.429
เรา... เราต้องพยายามลดบรรทัดในการเขียนโค้ด นึกออกนะ คือ 1 บรรทัดนี่จะใช้พื้นที่ในการเก็บนะคะ

00:28:37.061 --> 00:28:47.956
เมื่อกี้เราสร้าง class ไปแล้ว ทีนี้เราจะมาสร้างส่วนของ Statements นี่นะคะ ต่อ

00:28:50.867 --> 00:28:53.705
ก็คือส่วนนี้ เห็นไหม

00:28:54.936 --> 00:29:04.269
def def นี่ย่อมาจาก Definition init นะคะ มันจะพิมพ์ของมันมาแล้ว

00:29:04.269 --> 00:29:10.701
เพราะฉะนั้น ถ้าเด็ก ๆ พิมพ์เอง จะพิมพ์ไม่ถูก มันพิมพ์มาแล้ว เราจะมาแก้เฉพาะในวงเล็บ

00:29:26.643 --> 00:29:34.566
เอาตัวนั้นออก มันบัง มันบังโค้ดเรานะคะ นะคะ เราจะพิมพ์จนถึงตัวนี้ก่อน

00:29:34.935 --> 00:29:39.257
super อันนี้ init( ) นี่น่าจะพิมพ์มาแล้วนะคะ

00:29:44.673 --> 00:29:50.789
self ต่อจาก self self แล้วตามด้วยอะไรคะ เห็นไหม

00:29:54.605 --> 00:29:57.146
นะคะ ดูนะคะ

00:30:00.000 --> 00:30:05.354
pos_x, pos_y ตัวแปร pos_x, pos_y นะคะ

00:30:06.400 --> 00:30:12.205
ย้ายตำแหน่งแน่นอน เดี๋ยวพิมพ์ไปก่อน

00:30:40.225 --> 00:30:47.060
pos... ใช้ _x คั่น ตัวเดียวกันน่ะแหละ แล้วแต่จะตั้ง

00:30:49.399 --> 00:31:01.984
คือแยกนี่ ใส่ _ เข้าไปนี่ มันจะได้เห็นว่า อ๋อ pos มาจาก position นั่นเองนะคะนี่ ไอ้ pos

00:31:01.984 --> 00:31:10.225
นี่ pos มาจาก position นะคะ แล้วก็ตามด้วย _x ก็คือตำแหน่งแกน x

00:31:10.225 --> 00:31:17.253
ตำแหน่งของแกน x แกน y นั่นเอง ก็คือเราจะเอาไอ้รูปนี้ไปวางในตำแหน่งนี้

00:31:17.253 --> 00:31:20.003
ในแกน x แกน y ที่ระบุ

00:31:27.943 --> 00:31:29.273
นะคะ

00:31:33.089 --> 00:31:45.614
บรรทัดนี้นะคะ ก็คือจะเริ่มกำหนดว่าตำแหน่งของสิ่งที่เราจะเรียกมานี่จะอยู่ตรงไหนอะไรอย่างไรนะคะ

00:31:45.614 --> 00:31:47.712
บอกตำแหน่ง ระบุตำแหน่งแล้ว

00:31:53.682 --> 00:32:00.245
บรรทัดต่อมา มันจะเริ่มยาวขึ้นแล้วนะเด็ก ๆ ดูดี ๆ นะคะ

00:32:11.201 --> 00:32:14.012
ตรงช่องนี้เห็นไหมคะ class name

00:32:16.412 --> 00:32:23.052
เราไม่ต้องระบุลงไป ลบออกให้มันเป็นเปล่า ๆ แล้วเหลือแค่นี้

00:32:25.021 --> 00:32:35.317
บรรทัดที่ต่อจาก Definition นะคะ บรรทัด super( ) นี่ตรงที่อยู่ในวงเล็บนี่ ลบออกนะคะ

00:32:36.486 --> 00:32:39.928
บรรทัดนี้เราจะเหลือแค่นี้ โอเคนะคะ

00:32:45.529 --> 00:32:52.996
บรรทัดถัดจากนี้ ตั้งแต่พอเริ่มเรียก self นี่ มันจะยาวขึ้นนะคะ

00:32:53.735 --> 00:33:06.863
แต่เราจะพิมพ์แค่ 1 ครั้ง แล้วใช้วิธีคัดลอกแล้วก็ไปแก้ แก้เฉพาะตัวนะคะ ดูนะคะ

00:33:25.205 --> 00:33:28.186
self sprite เล็ก

00:33:41.296 --> 00:33:47.710
นะคะ self ตัวแรก arg ตัวแรกนี่ sprite

00:33:53.804 --> 00:34:00.147
sprite เล็ก แล้วเติม s ให้เขาด้วย มันจะเป็นคนละตัวกับตัวบนนะคะเด็ก ๆ

00:34:02.424 --> 00:34:04.040
เติม s เข้าไป

00:34:07.733 --> 00:34:14.484
ตรงนี้ ค่าที่ใส่ก็คือสี่เหลี่ยม วงเล็บแบบสี่เหลี่ยม โอเคไหม

00:34:16.084 --> 00:34:25.634
ดูดี ๆ นะคะ sprite ใน self นี่เป็น sprites ที่เติม s เข้าไปด้วย เราเรียก sprites ปุ๊บ ใช่ไหม

00:34:25.634 --> 00:34:28.894
กดมี sprite ขึ้นมานี่นะคะ

00:34:31.725 --> 00:34:33.876
แล้วเติม s เพิ่มเข้าไป

00:34:36.461 --> 00:34:46.015
โอเคนะ มันจะเป็นคนละตัวนะ มันมีหลายตัว ดูดี ๆ ถ้าบอก sprites ทีนี้ พอเรียกไปแล้วนี่

00:34:46.015 --> 00:34:57.736
อย่ารีบ ๆ เห็นไหม ตัวนี้ 1 ใช่ไหม 2. Sprite ใหญ่ 3 sprites

00:34:57.736 --> 00:35:05.811
ตอนนี้ sprites เรามี 3 sprites นะคะ

00:35:12.274 --> 00:35:24.868
โอเคนะคะ บรรทัดที่เหลือจะเริ่มไปเรียกใช้คำสั่งที่มันให้โหลดรูป

00:35:26.161 --> 00:35:33.355
ที่เราเก็บไว้น่ะมานะคะ เราต้องวางเรียงเป็นครบทั้งหมด เรามีกี่รูปเราก็ต้องใส่เข้าไปทั้งหมด

00:35:33.355 --> 00:35:37.102
จำนวนรูปนั้นนะคะ เดี๋ยวเขียนให้ดูก่อน

00:35:38.210 --> 00:35:44.361
ตอนนี้เราระบุ sprite ไปแล้ว sprites ไปแล้ว

00:35:44.361 --> 00:35:53.012
สิ่งที่เราจะทำต่อมา บรรทัดต่อไป เราก็พิมพ์ self เหมือนเดิม เลือกนะคะ s-e

00:35:54.181 --> 00:36:02.663
เลือก self เหมือนเดิมนะคะ .sprites เหมือนกัน แต่เลือก sprites

00:36:03.402 --> 00:36:09.795
sprites ที่มีตัว s เห็นไหมคะ เลือกให้ถูก ตามด้วย .

00:36:11.826 --> 00:36:13.692
self.sprites.

00:36:22.986 --> 00:36:31.743
เพราะตัวแรก sprites ตัวแรก เราแจ้งโปรแกรมไปแล้ว เราสร้าง sprites มานะ

00:36:31.743 --> 00:36:34.626
เพราะฉะนั้น ครั้งที่ 2 เราเรียกใช้มันได้เลยนะคะ

00:36:34.626 --> 00:36:39.588
. แล้วก็ตามด้วย โค้ดจะยาวหน่อย รอบหนึ่ง ขออีกรอบหนึ่ง

00:36:40.881 --> 00:36:45.447
.append แล้วก็ pygame.image.load โอเค

00:36:49.017 --> 00:37:03.632
.append a-p-p-e-n-d นะคะ เรียกใช้คำ... ใน Library append.

00:37:07.756 --> 00:37:16.544
พิมพ์ append ผิดตรงไหนนะ . ในวงเล็บ ใส่วงเล็บนะคะ (pygame) . p-y

00:37:17.713 --> 00:37:27.231
กด py แล้วกด Enter ให้มันเรียกใช้ pygame.image เหมือนเดิม i-m เลือก image นะคะ

00:37:28.893 --> 00:37:32.083
.load เลือก load

00:37:38.792 --> 00:37:43.401
ถ้าใครไม่ขึ้นแสดงว่าบางทีพิมพ์ผิด ลองลบออกก่อน

00:37:44.386 --> 00:37:47.294
เดี๋ยวย่อลงหน่อยนะคะ

00:37:54.372 --> 00:38:00.857
ที่ต้องย่อเพราะว่า มันยังมีต่ออีก เดี๋ยวเด็ก ๆ จะไม่เห็นว่าในบรรทัดนี้มัน

00:38:01.226 --> 00:38:09.008
มีอะไรต่อนะคะ ก็คือตอนนี้เราจะมาเรียก self.sprites.append นะคะ

00:38:09.008 --> 00:38:16.616
แล้วก็ให้สั่งให้ pygame มันไปโหลดภาพ แล้วมาดูภาพที่เราจะโหลด

00:38:22.340 --> 00:38:28.285
กดผิดนี่หว่า วงเล็บทีหลัง วงเล็บหลัง load นะ

00:38:28.285 --> 00:38:37.713
append.pygame.image.load แล้วก็ชื่อรูป รูปตัวไหน ชื่อรูปเด็ก ๆ ดูนะคะ บอกแล้ว

00:38:37.713 --> 00:38:43.615
บอกวิธีไปแล้วนะ ถ้าไม่อยากพิมพ์ผิด เหมือนอย่างนี้

00:38:45.000 --> 00:38:52.167
เราไปที่ไฟล์ภาพเราแล้วเราคลิกขวาใช่ไหมคะ ที่ตำแหน่ง Properties

00:38:52.475 --> 00:38:59.720
แล้วเราก็ก๊อบชื่อไฟล์มันมาเลย มันจะทำให้เราไม่พิมพ์ชื่อไฟล์ผิด นึกออกนะ

00:39:00.000 --> 00:39:05.034
แล้วก็เช็กด้วยว่านามสกุลมันเป็นนามสกุลอะไร .png โอเค

00:39:10.758 --> 00:39:19.889
.png แบบนี้นะคะ มันจะไม่เกิดปัญหาการพิมพ์ชื่อไฟล์ผิด

00:39:19.889 --> 00:39:24.471
เพราะฉะนั้น ภาพที่เป็น sprites เรามีกี่รูป

00:39:26.502 --> 00:39:37.218
บรรทัดต่อไปไม่ต้องพิมพ์ใหม่ เด็ก ๆ ดูนะคะ ใช้วิธี Copy บรรทัดที่เราสั่งมันโหลดภาพ

00:39:37.218 --> 00:39:54.612
กด Ctrl + C แล้วก็กด Ctrl + V ลงไป เราก็เปลี่ยนแค่อะไรคะ หมายเลขใช่ไหม 2 ถูกไหมคะ

00:40:00.459 --> 00:40:11.358
ตรงนี้นะคะ sprites เด็ก ๆ จะต้องไปสั่งให้มันโหลดรูปที่เราจะเอามาใช้น่ะ ให้ครบตามจำนวน

00:40:11.358 --> 00:40:18.357
นึกออกไหมลูก เพราะฉะนั้น เพิ่มบรรทัดเอาเองนะ ของใครมีกี่รูป จำนวนบรรทัด

00:40:18.357 --> 00:40:22.717
ของรูปที่โหลด มันก็จะเท่ากับภาพตัวเอง นึกออกนะ

00:40:23.086 --> 00:40:30.720
Copy Copy อันที่ 1 แล้วก็ไปเปลี่ยนหมายเลขถูกไหม ถ้าของใครมีหมายเลข แต่ถ้าของใครไม่มี

00:40:30.720 --> 00:40:44.370
นึกออกนะ นะคะแล้วก็วาง จนกว่ามันจะครบจำนวนไอ้ตัวนั้นของเรานะคะ เดี๋ยววางของตัวเองก่อน

00:40:56.373 --> 00:41:07.859
ตรงนี้นะคะ ชื่อไฟล์ภาพนี่ ให้ดูในเครื่องตัวเองนะลูก ไม่ใช่มาพิมพ์ตาม ก็คือชื่อภาพใครภาพมัน...

00:41:07.859 --> 00:41:13.542
ภาพของใครของมัน อันนี้เป็นชื่อไฟล์ภาพที่อยู่ในเครื่องของแม่

00:41:13.542 --> 00:41:18.656
ของเด็ก ๆ ชื่ออะไร เด็ก ๆ ก็ดูเอาในโฟลเดอร์ตัวเองน่ะค่ะนะคะ

00:41:18.656 --> 00:41:26.310
มีกี่รูปหว่า เดี๋ยวขอไปดูก่อนนะ ว่าของเรามีทั้งหมดกี่รูป

00:41:28.834 --> 00:41:37.364
ของเครื่องแม่มีถึง Walk 10 นะคะ เพราะฉะนั้น ก็จะใส่เพิ่มอีก 5 ตัว

00:41:43.581 --> 00:41:59.831
มีเยอะก็จะก๊อบแผงใหญ่ ๆ เลย 5 แล้วก็นับต่อ 6 7 8 9 10

00:41:59.831 --> 00:42:04.249
เพราะฉะนั้น ให้เด็ก ๆ ดูในโฟลเดอร์ตัวเองนะ

00:42:04.249 --> 00:42:10.355
ไฟล์ภาพใครชื่ออะไรก็ก๊อบมาวาง แล้วค่อยมาแก้อย่างนี้นะคะ

00:42:11.401 --> 00:42:19.467
อันนี้ของแม่มี 10 ภาพแม่ก็ใส่จนครบแล้ว 10 รูปนะคะ ของเด็ก ๆ มีกี่รูป เดี๋ยวไปช่วยดูให้

00:42:19.467 --> 00:42:22.686
จะตรวจให้นะคะ ของใครมีกี่รูป

00:42:26.071 --> 00:42:31.265
ใส่วงเล็บน่ะถูกแล้ว เห็นไหมล่ะ

00:42:33.173 --> 00:42:43.215
เดี๋ยวเราว่าไม่ใส่ถึงว่าทำไมมันไม่ขึ้น ตรง pygame ใส่วงเล็บให้ด้วยนะ

00:43:29.728 --> 00:43:36.932
นั่นล่ะ ก็ว่าใส่แล้วจำไม่ได้ แล้วก็กดใส่

00:43:38.902 --> 00:43:46.360
ตอนแรกน่ะใส่แล้ว แล้วก็ว่ามันไม่ขึ้นก็เลยเข้าใจว่าเจ้าของใส่ผิด

00:44:11.325 --> 00:44:21.014
เดี๋ยวไปเดินดูนะคะ มันจะต้องขึ้นอย่างนี้ เป็นเซ็ต ๆ เลย self สีส้ม

00:44:21.014 --> 00:44:26.869
มี append คั่นเป็นสีฟ้า แล้วก็ไปปิดด้วย load

00:54:57.230 --> 00:55:12.522
ทีนี้เดี๋ยวดูนะคะ ชื่อไฟล์ เราลืมแน่ ๆ เลย เมื่อกี้เดินไป ผิดแน่ ๆ มันต้องใส่อะไร เครื่องหมายอะไร

00:55:13.877 --> 00:55:26.573
คำพูด นึกออกนะ ใส่เครื่องหมายคำพูด จะเอา ' ' หรือ… ' ' หรือ " " ก็ได้ ตรงชื่อไฟล์นี่ เห็นไหม

00:55:26.573 --> 00:55:37.213
ใส่ลงไป ลืม ๆ นะคะ เห็นไหมคะ เด็ก ๆ ใส่เครื่องหมายคำพูดลงบนชื่อไฟล์ที่เราจะเรียกใช้ด้วย ลืม

00:55:37.952 --> 00:55:41.115
เยอะ เยอะหลายน่ะลืม

00:55:46.387 --> 00:55:53.935
นี่นะ เมื่อกี้ลืมใส่นะคะ ใส่เครื่องหมายคำพูดเข้าไปให้น้องด้วย เห็นไหม

00:55:56.397 --> 00:56:03.354
เพราะถ้าเช็กจาก... จากสไลด์นี่ ตรงชื่อไฟล์มันจะเป็นสีเหลืองเห็นไหมคะ

00:56:04.031 --> 00:56:07.349
เห็นไหม มันถึงจะถูกต้องนะคะ

00:56:09.811 --> 00:56:17.107
เพราะฉะนั้น แก้ ใส่ single quote หรือ double quote ก็ได้ ใส่ตัวไหนก็ได้นะคะ ตัวใดตัวหนึ่ง

00:56:17.107 --> 00:56:23.876
เลือกเอานะคะ ใครถนัดใส่ single ก็ใส่ ใครจะใส่ double ก็ใส่ double

00:56:26.461 --> 00:56:34.591
เดี๋ยวทีนี้บางรูปของบางคนนี่รูปมันไม่ต่อนี่ เดี๋ยวตอน Run ออกมามันจะเป็นฮา ๆ นะเด็ก ๆ

00:56:36.376 --> 00:56:39.801
เพราะฉะนั้น เลือกรูปมาใช้ก็มีส่วนนะคะ

00:56:41.278 --> 00:56:47.648
เช็กนะคะเช็ก อันดับแรกเช็กที่ชื่อไฟล์ภาพที่เราจะนำมาใช้

00:56:48.387 --> 00:56:55.547
ว่าชื่อถูกต้องโอเคไหม แล้วก็จำนวนรูปที่เอามาใช้ มีทั้งหมดกี่รูป

00:57:07.242 --> 00:57:10.158
สังเกตนะคะ ถ้าใครแก้ครบแล้ว

00:57:10.158 --> 00:57:16.110
ไอ้ตัวชื่อไฟล์ภาพจะเป็นสีเหลืองทั้งหมด นั่นแสดงว่าถูกต้องแล้วนะเด็ก ๆ

00:57:24.481 --> 00:57:37.599
ต้องเป็นอย่างนี้นะคะ ในโค้ดเราต้องเป็นอย่างนี้ถึงจะถูก ของแถม ๆ

00:59:43.840 --> 00:59:53.364
คือ คำสั่งมันเยอะนะคะ เพราะมันเป็น class คือ มันจะลำบากตอนแรกเท่านั้นนะคะ

00:59:56.134 --> 00:59:58.711
ไหนลองสิ

01:00:05.482 --> 01:00:14.333
ไม่มีส่วน ตัวเล็กตัวใหญ่ ไม่เกี่ยว เพราะอันนี้มันเป็นนามสกุลไฟล์ภาพ

01:00:14.333 --> 01:00:18.916
เออ มันได้อยู่มันเป็นนามสกุลน่ะนะ

01:00:19.778 --> 01:00:26.007
แต่ชื่อน่ะ ชื่อน่ะมันห้ามผิด นามสกุลมันรู้อยู่ โปรแกรมมันจะรู้อยู่

01:00:32.334 --> 01:00:40.900
มันน่าจะเว้นวรรคผิด เดี๋ยวตอน Error ก็จะรู้กัน สร้าง method แล้ว

01:00:46.624 --> 01:00:48.484
ทำอะไรต่อ

01:00:51.438 --> 01:00:54.224
โหลด sprite sheet แล้ว

01:00:57.637 --> 01:01:07.246
มีบรรทัดต่อนะคะเด็ก ๆ นี่ เราจะระบุตำแหน่งว่าตำแหน่งปัจจุบันของตัว sprite

01:01:07.246 --> 01:01:12.648
เราจะเริ่มที่ 0 นะคะ แล้วก็จะมาเรียกใช้

01:01:16.279 --> 01:01:26.322
จะสร้าง จะทำ Animation เห็นไหม Create Animation แล้ว ขั้นต่อไปนะ

01:01:33.647 --> 01:01:44.104
เราโหลด... ตอนนี้เราสั่งให้มันไปโหลดภาพ ต่อมาเราจะสร้างส่วนของ Animation นะคะ

01:01:45.335 --> 01:01:47.211
เดี๋ยว

01:01:57.182 --> 01:02:06.646
ใส่ # ค่ะ ใส่ # เราจะเข้าสู่การสร้าง Animation แล้ว

01:02:08.123 --> 01:02:15.939
สร้าง... สร้างภาพเคลื่อนไหวก็ได้ เดี๋ยวจะงง

01:02:27.264 --> 01:02:34.756
เอาเป็นภาษาไทย สร้างการเคลื่อนไหวนะคะ

01:02:38.203 --> 01:02:40.182
# ไว้ จะได้รู้ส่วน

01:02:46.152 --> 01:02:53.505
ตำแหน่งอยู่ตรง self นะคะ กด Tab นะคะเด็ก ๆ ใช้วิธีกด Tab นะคะ อย่าไปกด Space Bar

01:02:53.505 --> 01:03:05.941
กด Tab เข้าไปให้ตรงกับตำแหน่ง self เดิมเรานะคะ พิมพ์ self ภาษาไม่เปลี่ยน พิมพ์ self s เลือก self

01:03:08.957 --> 01:03:11.008
.

01:03:11.378 --> 01:03:15.803
ดูนะคะ คำสั่งนี้ยาวหน่อยหนึ่ง

01:03:17.403 --> 01:03:27.481
self.current_sprite sprite ธรรมดานะคะ อันนี้เป็นตัวแปรนะ current_sprite

01:03:27.481 --> 01:03:37.758
เพราะฉะนั้น เราต้องพิมพ์เองนะคะ c-u-r-r-e-n-t _s-p-r-i-t-e นี่

01:03:37.758 --> 01:03:42.319
อันนี้เป็นตัวแปรที่เราจะสร้างเพื่อระบุว่า

01:03:42.319 --> 01:03:53.149
ตำแหน่งเริ่มต้นหรือตำแหน่งปัจจุบันนี่ ก็คือให้มันเริ่มที่ 0 self.current_sprite = 0

01:04:08.879 --> 01:04:21.782
นะคะ คำสั่งแรก ก็คือกำหนดให้ตัวแปรที่ชื่อ current_sprite มีค่าเริ่มต้นที่ 0

01:04:21.782 --> 01:04:32.537
ไอ้ตัวนี้ ก็คือเป็นคำสั่งที่บอกว่านี่ค่าเริ่มต้นของภาพนะคะ จะต้องเริ่มที่ 0 เสมอนะคะ

01:04:32.537 --> 01:04:42.102
กำหนดไว้ self.current_sprite = 0 current ใส่ _ ด้วย

01:04:42.348 --> 01:04:50.465
คือ แยก 2 คำน่ะ บางที สาเหตุที่มี _ มีอะไรอย่างนี้ คือบางทีประโยคมันยาวนี่

01:04:50.465 --> 01:04:55.444
ถ้าเราไปพิมพ์ติดกัน เวลาเราเช็กโค้ดมันจะลายตา นึกออกนะ

01:04:55.444 --> 01:05:00.582
เพราะฉะนั้น เราใช้ตัว _ เพื่อในการแยกคำน่ะค่ะ

01:06:05.744 --> 01:06:14.921
ไปบรรทัดต่อไปนะคะ เราจะกำหนดให้เรียกใช้ เรียกรูปนั่นเองนะคะ

01:06:15.290 --> 01:06:22.110
พิมพ์ s แล้วเลือก self เหมือนเดิม ตามด้วยเครื่องหมาย .

01:06:22.910 --> 01:06:31.107
. อะไร .image นะคะ คลิก i-m-a-g-e เห็นไหมคะ .image

01:06:32.769 --> 01:06:37.273
= ใส่เครื่องหมายเท่ากับนะคะ วรรค =

01:06:38.319 --> 01:06:44.598
self อีกครั้งหนึ่งค่ะ เรียกใช้ self อีกครั้งหนึ่ง กด s แล้วเลือก self

01:06:47.614 --> 01:06:56.677
.sprite sprites ที่เราจะใช้ตัวนี้ ก็คือ sprites นะเด็ก ๆ ไปหา sprites นะคะ

01:06:56.677 --> 01:07:07.235
sprites ที่มี s ข้างหลังน่ะค่ะ เราเลือกตัวนี้นะคะ แล้วก็ใส่วงเล็บสี่เหลี่ยมใหญ่เข้าไป

01:07:10.312 --> 01:07:19.003
แล้วพิมพ์ เรียกใช้ self.current_sprites นะคะ รอบต่อมา ในวงเล็บ

01:07:19.372 --> 01:07:24.585
สี่เหลี่ยมใหญ่นี่ เราจะเรียกใช้ self.

01:07:25.754 --> 01:07:35.698
พิมพ์ c แล้วเลือก current... c-u c-u เห็นไหมคะ เลือก current_sprite ที่มันขึ้นมานี่เลย

01:07:35.698 --> 01:07:37.708
เห็นไหมจะได้ไม่พิมพ์ผิด

01:07:41.955 --> 01:07:45.132
ที่เราสร้างไว้นั่นเองนะคะ

01:08:12.574 --> 01:08:14.391
บรรทัดต่อมาเลยนะคะ

01:08:19.253 --> 01:08:24.873
พิมพ์ self เหมือนเดิมนะคะ เลือก self.

01:08:27.827 --> 01:08:33.187
อันนี้พิมพ์เองนะคะ rect r-e-c-t rect

01:08:34.664 --> 01:08:36.555
self.rect =

01:08:39.509 --> 01:08:46.255
self วรรคก่อน self นะคะ เลือก self.

01:08:52.656 --> 01:08:58.201
เลือก self.image ค่ะ i เลือก image

01:09:00.663 --> 01:09:11.890
แล้วก็ .get g เห็นไหมคะ .get_

01:09:17.368 --> 01:09:22.496
r-e-c-t rect นะคะ แล้วก็วงเล็บ

01:09:31.298 --> 01:09:37.414
ก็กำหนดอีกตัวหนึ่งนะคะ self เหมือนเดิม เลือก self เหมือนเดิม

01:09:40.430 --> 01:09:50.890
. เหมือนเดิมค่ะ อันนี้กำหนดตำแหน่ง rect.top นะคะ

01:09:52.183 --> 01:10:00.561
rect ปุ๊บ เลือก rect แล้วก็ .top t-o-p top

01:10:01.238 --> 01:10:07.731
บนซ้าย top แล้วก็ left l-e-f-t

01:10:10.809 --> 01:10:13.470
topleft นะคะ =

01:10:19.256 --> 01:10:24.748
วงเล็บใหญ่ วงเล็บสี่เหลี่ยมใหญ่ pos เลือก pos_x

01:10:25.548 --> 01:10:34.416
แล้วก็ใส่ : แล้วก็เลือก pos_y นะคะ

01:10:34.416 --> 01:10:44.172
เห็นไหมคะ ระบุตำแหน่งแล้ว อยู่ที่ pos_x, pos_y ของเรานะครับ ให้ค่าเริ่มต้นในการทำงาน เริ่มที่นี่

01:10:51.066 --> 01:10:57.388
เช็กดี ๆ นะคะ ถ้าพิมพ์ถูกแล้ว สีจะขึ้นแบบนี้เลย

01:10:58.065 --> 01:11:07.645
สี self สีตัวเลข สี = นี่ จะขึ้นอย่างนี้เลย ถ้าใครไม่ขึ้นนี่แสดงว่าพิมพ์ตรงใดตรงหนึ่งผิดแน่นอน

01:11:07.645 --> 01:11:14.351
โครงสร้างผิดแน่นอนะคะ Sublime จะช่วยในการเช็ก Coding ได้ดีเลยนะคะ

01:11:15.705 --> 01:11:22.560
ใครยังพิมพ์ 1 2 3 4 4 บรรทัดนี้ไม่เสร็จ พิมพ์เสร็จหรือยังคะ

01:11:22.560 --> 01:11:30.479
ดูดี ๆ นะคะ sprites ที่ใช้ ที่เรียกใช้ คือ sprites นะคะ ตอนนี้ ตรงตำแหน่งนี้

01:11:32.326 --> 01:11:39.211
เรียกผิดชีวิตเปลี่ยนนะ มันจะไม่ขึ้น ไม่อย่างนั้นก็จะ Error ไปเลยนะคะ

01:11:44.504 --> 01:11:54.393
โอเคนะคะ ยังไม่จบ ๆ โค้ดมันเยอะหน่อยหนึ่ง แต่พอเวลาไปเรียกน่ะ เรียกนิดเดียวจริง ๆ นะคะ

01:11:54.393 --> 01:11:59.688
เพราะทำ class class ก็คือ class จะใหญ่หน่อย

01:12:00.365 --> 01:12:04.690
เรา Create Animation แล้ว สิ่งที่เราจะทำต่อไป

01:12:07.398 --> 01:12:11.147
นี่นะคะ เราจะมาเรียกใช้มันแล้วนี่ ๆ ๆ

01:12:14.594 --> 01:12:22.734
ไม่ใช่เรียกใช้ เราจะทำ sprite น่ะ จัดมัน Group มันน่ะค่ะ Group มัน

01:12:22.734 --> 01:12:28.518
Group รูปมันน่ะ จากภาพใหญ่ ๆ น่ะ ให้มันเป็นภาพเดียวนะคะ

01:12:30.000 --> 01:12:31.317
นี่นะคะ

01:12:34.395 --> 01:12:41.048
สร้าง sprite แล้วก็ Group น้องด้วยนะคะ

01:12:43.002 --> 01:12:45.825
คือ คำสั่งนี้เลย

01:13:02.998 --> 01:13:08.308
อ๋อ มันเป็นไอ้นี่ อ๋อ มันเรียนรวม

01:13:17.602 --> 01:13:22.507
สอบแล้วหรือ สอบแต่ [เสียงหัวเราะ]

01:13:26.323 --> 01:13:39.153
ดูนะคะ ส่วนต่อมาเมื่อกี้เราจะเรียกใช้มัน เราจะสร้างแล้วก็ไอ้นี่ ตำแหน่งจะอยู่ที่หลังเงื่อนไขนะ

01:13:41.738 --> 01:13:51.658
ตำแหน่งโค้ดเสร็จหมดแล้วนะคะ 4 บรรทัดนี้ใครยังไม่เสร็จ โอเคนะคะ เสร็จหมดแล้ว

01:13:51.658 --> 01:14:02.740
เรามาที่ตำแหน่งนี้ เห็นไหมคะ ตำแหน่งของการแสดงผลนี่ ก่อนตำแหน่งนี้นิดหนึ่งนะคะ

01:14:02.740 --> 01:14:08.558
ใส่ # เข้าไปเพื่อจะอธิบายว่าตรงส่วนนี้เราจะสร้าง

01:14:15.000 --> 01:14:17.254
สร้างภาพต่อเนื่อง

01:14:19.901 --> 01:14:21.662
แล้วก็

01:14:25.601 --> 01:14:31.516
มันไม่สร้างนี่ มันสร้างไปแล้ว เราจะทำภาพต่อเนื่องให้มันเป็น...

01:14:36.378 --> 01:14:40.017
Group มันเข้าไปให้มันเหมือนมันเป็นรูปเดียวน่ะ

01:14:54.161 --> 01:14:59.242
ชื่อพอแปลเป็นไทยนี่แปลลำบากมากเลย ขอเป็นภาษาอังกฤษแล้วกัน

01:15:03.551 --> 01:15:12.225
อธิบายยาก คำไทยคำเยอะเกินอธิบาย เรานักคอมพิวเตอร์ เราแปลด้วยภาษาอังกฤษ

01:15:12.225 --> 01:15:14.074
เป็นภาษาอังกฤษดีกว่า

01:15:15.000 --> 01:15:20.996
c-r-e-a-t-e create_sprites

01:15:23.643 --> 01:15:25.578
and group

01:15:30.810 --> 01:15:39.518
คือ ไอ้รูป sprite ที่เราทำเสร็จแล้วนี่ เราจะนำมันมารวมให้มันเป็นเหลือรูปเดียวน่ะ

01:15:39.518 --> 01:15:44.290
จากหลาย ๆ รูปน่ะ นึกออกนะคะ นะคะ

01:16:08.064 --> 01:16:09.703
เรียน ๆ ๆ

01:16:13.827 --> 01:16:16.391
กำหนดตัวแปร

01:16:23.777 --> 01:16:29.244
moving เคลื่อนไหวนะคะ เคลื่อนไหว

01:16:33.491 --> 01:16:40.615
moving_ การเคลื่อนไหวของภาพ sprite เรา moving_sprite

01:16:48.801 --> 01:16:50.784
=

01:16:55.334 --> 01:17:06.429
pygame กด p เลือก pygame.sprite พิมพ์ sprite เลือก sprite เล็กนะคะ

01:17:06.429 --> 01:17:11.500
sprite ตัวเล็กที่ p เอ้ยไม่มี s

01:17:12.177 --> 01:17:18.989
ดูดี ๆ นะคะ sprite ตัวที่เลือกใน pygame.sprite นี่เป็น sprite ที่ไม่มี s นะคะ

01:17:18.989 --> 01:17:22.920
.Group Group ใช้ตัวใหญ่

01:17:30.000 --> 01:17:37.302
เพราะตัวนี้มันเป็น... เป็นฟังก์ชันที่เขาสร้างไว้แล้วนะคะ ชื่อว่า Group

01:17:37.302 --> 01:17:46.777
ไม่ใช่ฟังก์ชันหลัก ถ้าตัวใหญ่นี่มันคือ class class ที่ชื่อว่า Group ที่อยู่ใน Library น่ะค่ะ

01:17:46.777 --> 01:17:53.800
เราจะไปเรียกใช้ class จาก group นะคะมา เพราะฉะนั้น เลยใช้ตัวใหญ่ สังเกต เห็นไหมคะ

01:17:55.893 --> 01:17:57.972
Group ใหญ่นะคะ

01:18:00.000 --> 01:18:04.518
ต่อไป บรรทัดต่อไปนะคะ

01:18:49.132 --> 01:18:54.316
สิ่งที่เราจะทำต่อมา ก็คือประกาศตัวแปรเพื่อเรียกใช้ไอ้ตัว

01:18:55.362 --> 01:18:59.456
ตัว class ของเรานะคะ

01:19:00.318 --> 01:19:06.411
class เราชื่อ class ตัวใหญ่มันใช้คำว่า "Cat" ใช่ไหม

01:19:06.411 --> 01:19:14.006
เพราะฉะนั้น ตัวแปรเราก็จะใช้เป็นตัวเล็กนะคะ ก็จะเป็น cat เล็ก

01:19:14.745 --> 01:19:24.268
= Cat ใหญ่ เพราะเราจะเรียกใช้ class เราต้องเรียก Cat ใหญ่นะคะ

01:19:24.268 --> 01:19:35.314
ใน class ก็จะมีวงเล็บด้วย ในวงเล็บใส่อะไร ตำแหน่งค่ะ ตำแหน่งของไอ้ตัวนี้

01:19:36.114 --> 01:19:39.423
ลองใส่ก่อนนะ ขอลองที่

01:19:41.761 --> 01:19:46.697
(10,10) เสียก่อน อยากรู้เหมือนกันว่ามันจะไปโผล่ตรงไหน

01:19:53.098 --> 01:20:00.767
แล้วก็กำหนดให้ตัวแปร moving_sprite นี่นะคะ

01:20:01.383 --> 01:20:11.580
นำเข้าไอ้รูปนั้นน่ะ ให้มัน Group น่ะ พิมพ์ m แล้วเลือก moving_sprites.

01:20:13.980 --> 01:20:18.328
sprites นะคะ sprites นี้ใช้ sprites ที่มี s

01:20:20.236 --> 01:20:28.820
sprites ที่เติม s นะคะ ดูดี ๆ เรียกไม่เหมือนกันนะลูก .add add ก็คือเพื่อจะให้มัน add อะไรเข้าไป

01:20:30.000 --> 01:20:35.982
ให้มัน add ตัวแปร

01:20:43.183 --> 01:20:51.638
cat เล็กของเราเข้าไป c-a-t cat เล็ก โอเคนะคะ ให้มันเอาไปไว้ที่ cat นี้

01:20:54.839 --> 01:21:03.275
ตอนนี้คือเป็นเอาภาพที่มันต่อกันหลาย ๆ ภาพนี่ มาให้มันทำให้มันเป็นภาพเดียวน่ะค่ะ

01:21:05.368 --> 01:21:11.334
รวมกันเป็นภาพ 1 ภาพ ให้มันดูเหมือนเป็นรูปเดียวนะคะ

01:21:13.181 --> 01:21:16.535
3 บรรทัดนี้เสร็จหรือยังคะ

01:21:18.689 --> 01:21:20.989
ใครยังไม่เสร็จ

01:21:22.836 --> 01:21:24.807
ยังนะคะ

01:21:25.669 --> 01:21:29.262
ถ้าอย่างนั้นเดี๋ยวไปต่อไม่ได้ มันจะขาดตอน

01:21:30.000 --> 01:21:37.655
เช็กนะคะ เช็กตรง sprite sprite แรก sprite ไม่มี s นะคะ ดูดี ๆ

01:21:37.655 --> 01:21:45.823
sprites ที่ 2 ที่เรียกใช้หลัง . นี่มี s นะคะ ต่างกันตรงนี้ เพราะมันจะไม่ขึ้น Error เพราะมัน

01:21:47.239 --> 01:21:55.798
สร้างแล้ว มันโดนสร้างแล้ว แต่ดูดี ๆ แค่นั้นเอง เช็กตรงนี้ 2 จุดนี้นะคะพอ

01:21:58.383 --> 01:22:09.262
sprite ที่กำหนดใน moving_sprite นี่ไม่มี s แต่เวลาเรียกน่ะ เรียกต้องมี s นะคะ เป็นต้น

01:22:10.985 --> 01:22:18.489
โอเคนะคะ น่าจะเสร็จกันหมดแล้วทุกคน มาดูที่เราจะต้องทำต่อ

01:22:29.360 --> 01:22:36.951
เราจะสร้างฟังก์ชันให้มันวิ่งทีนี้นะคะ

01:22:36.951 --> 01:22:47.167
กำหนดฟังก์ชัน Run เห็นไหมคะ แล้วก็ Update เมื่อมันวิ่งไปแล้วนะคะ

01:23:01.200 --> 01:23:03.690
เด็ก ๆ ต้องบอกว่าทำไมวันนี้

01:23:07.506 --> 01:23:13.441
โค้ดเยอะจังเลย คือ มันยาวน่ะ แต่พอสร้างแล้ว มันจะใช้อันเดียวจบ

01:23:15.595 --> 01:23:19.482
เอาไปใช้กับครั้งต่อ ๆ ไปได้นะคะ

01:23:25.268 --> 01:23:30.729
เพราะฉะนั้น ตัวนี้นะคะ

01:23:46.056 --> 01:23:54.146
เราจะไปที่บรรทัดที่ต่อจาก class เห็นไหมคะ บรรทัดสุดท้ายของ class นี่นะคะ

01:23:55.439 --> 01:24:05.408
Enter ลงไป ใส่ # หน่อย เราจะบอกเขา บอกโปรแกรมบอกตัวเอง บอกตัวเองนี่

01:24:05.408 --> 01:24:10.256
ถ้าใส่ # นี่บอกตัวเองนะคะ ว่าตรงส่วนนี้เราทำอะไร

01:24:11.056 --> 01:24:14.183
สร้างฟังก์ชันค่ะ สร้างฟังก์ชัน

01:24:19.415 --> 01:24:22.209
ตรงส่วนนี้ เราจะสร้างฟังก์ชัน

01:24:27.441 --> 01:24:33.257
Run นะคะ ที่ชื่อว่า Run กับ Update

01:24:33.257 --> 01:24:38.349
Run แล้วก็ Update 2 ตัว

01:24:48.566 --> 01:24:58.000
รูปแบบของการสร้างฟังก์ชัน ก็คือ Definition นะคะ คำว่า "def" นั่นเองนะคะ

01:25:17.096 --> 01:25:25.158
Tab Tab เข้าไปแค่ 1 ครั้งนะคะ มันจะไม่อยู่ตรงกับ self นะ มันจะอยู่ก่อน self d

01:25:25.835 --> 01:25:34.389
เห็นไหมคะ เลือก defFunction นะคะเด็ก ๆ def แล้วก็เลือก Function นะคะ

01:25:34.758 --> 01:25:44.432
definition ชื่อฟังก์ชัน ก็คือ Run ตัวแรก ๆ ตัวเขียว ๆ นี่ ในวงเล็บนี่ เอ้ยไม่ใช่ในวงเล็บ

01:25:44.432 --> 01:25:48.931
ที่ขึ้นคำว่า "function" นี่ เราแก้เป็น run นะคะ

01:25:48.931 --> 01:25:57.060
เพราะ function ที่เราใช้มันชื่อว่า run เราจะใช้มันว่า run นะคะ

01:26:01.122 --> 01:26:07.354
แล้วก็เรียก self มา กด s แล้วเลือก self

01:26:20.957 --> 01:26:25.805
ในส่วนของบรรทัดที่ 2 นะคะ

01:26:27.036 --> 01:26:51.138
พิมพ์ self ค่ะ กด s เลือก self.run_animate นะคะ animate มาจาก animation นี่แหละ

01:26:51.138 --> 01:26:54.980
จะยาวไป animate

01:27:06.490 --> 01:27:19.706
run_anime anime anime anime ดีกว่า anime นี่สั้นกว่าอีก run_anime จะงงไหมล่ะนี่

01:27:20.814 --> 01:27:22.955
เอา animate แล้วกัน

01:27:34.219 --> 01:27:43.816
= True ทำงานเมื่อเป็นจริง จะใส่เงื่อนไขแล้วนะคะ เท่ากับ... True ใช้ True ใหญ่นะ

01:27:43.816 --> 01:27:48.536
t เลือก True True ใหญ่ เห็นไหมคะ

01:27:52.721 --> 01:28:03.499
เรามี function run แล้ว สร้างอีก 1 ฟังก์ชันนะคะ def เหมือนเดิม เลือก def function เหมือนเดิม

01:28:04.361 --> 01:28:12.760
ตรงตำแหน่งชื่อฟังก์ชัน เปลี่ยนเป็นเราสร้าง 2 ตัวนะ เราบอกเราจะสร้าง 2 ตัว ก็คือ 

01:28:14.114 --> 01:28:20.581
run กับ update นะคะ ชื่อฟังก์ชันไม่จำเป็นต้องใช้ตัวใหญ่

01:28:34.368 --> 01:28:43.989
เรียกใช้ self ค่ะ self แล้วก็ใส่ : แล้วก็เรียกใช้ speed

01:29:09.286 --> 01:29:21.828
ในส่วนของ statements หรือ pass นี่นะคะ เราจะมากำหนดเงื่อนไขให้มันทำงานนั่นเองนะคะ

01:29:21.828 --> 01:29:30.254
ก็คือใช้คำสั่ง if ค่ะ เลือก if statements นี่ if condition ตัวแรก

01:29:36.717 --> 01:29:45.117
ไม่พิมพ์เองนะเด็ก ๆ ไม่อย่างนั้นเดี๋ยวรูปแบบมันจะผิด ให้เลือก i แล้วเลือก if condition นะคะ

01:29:45.117 --> 01:29:46.537
ไม่พิมพ์นะคะ

01:30:01.354 --> 01:30:12.945
เลือกใช้... เรียก self มา self. เลือก run_animate เราที่สร้างไว้มาใช้งาน

01:30:15.000 --> 01:30:21.914
ถ้ามี if คำสั่ง = 2 if เราต้องกด 2 ตัวนะคะ ==

01:30:25.299 --> 01:30:31.229
True ค่ะ True พิมพ์ T แล้วเลือก True ใหญ่นะคะ

01:30:43.785 --> 01:30:56.770
ตรงส่วน statements pass เราจะเรียก current_sprite มานะคะ พิมพ์ self เหมือนเดิม

01:30:57.693 --> 01:31:00.440
self self self.

01:31:02.102 --> 01:31:05.868
cu เลือก current_sprite กด Enter

01:31:14.054 --> 01:31:23.451
เราจะเพิ่ม นึกออกนะ พอเวลา... เวลาที่มันเคลื่อนน่ะค่ะ ตำแหน่งปัจจุบันมันเริ่มที่ 0 เพราะฉะนั้น

01:31:23.451 --> 01:31:34.034
เราจะต้องเพิ่มค่าให้มัน + นะคะ + ใส่เครื่องหมาย + แล้วก็ = ก็คือเพิ่ม

01:31:34.034 --> 01:31:41.067
ถ้าในความหมาย ก็คือถ้าใส่ + แล้วก็ = นี่ แสดงว่าเพิ่มนะคะ + ก็คือบวก

01:31:42.113 --> 01:31:52.382
บวกอะไรเข้าไป ให้บวกเข้าไปใน speed speed ที่เราสร้างไว้ กด sp แล้วเลือก speed

01:32:02.415 --> 01:32:08.479
กด Enter นะคะ เราจะเพิ่มเงื่อนไขซ้อนเงื่อนไข

01:32:08.479 --> 01:32:13.063
เพราะอันนี้เพิ่มแค่ speed นะ เพิ่มความเร็วเข้าไป

01:32:14.048 --> 01:32:21.298
กด i แล้วเลือก if condition เหมือนเดิมนะคะ

01:32:27.209 --> 01:32:28.964
if int

01:32:33.703 --> 01:32:39.186
i-n-t ตัวแปรนี้นะคะ ไม่ใช่ตัวแปร มันเป็น...

01:32:43.495 --> 01:32:44.872
วงเล็บค่ะ

01:32:51.519 --> 01:32:59.207
ใส่เปิดแล้วปิดใส่เข้ามาทีเดียวเลยนะ จะได้...  วงเล็บจะได้ไม่หายว่าอย่างนั้นเถอะ

01:32:59.576 --> 01:33:05.970
พิมพ์ self แล้วเลือก self ก่อนนะคะ

01:33:06.586 --> 01:33:15.195
.current_sprite ค่ะ พิมพ์ c-u แล้วเลือก current_sprite

01:33:26.520 --> 01:33:35.923
เงื่อนไขก็คือให้มันเช็กว่ามันยังน้อยกว่าหรือเท่ากับ

01:33:39.124 --> 01:33:44.319
len len นะคะ l-e-n len

01:33:49.920 --> 01:33:51.968
ใส่วงเล็บค่ะ

01:33:56.341 --> 01:34:01.977
เราจะเลือก self s พิมพ์ s แล้วเลือก self

01:34:02.962 --> 01:34:17.548
.sprites sprites นะคะ รอบนี้จะเลือก sprites นะ s-p-r-i-t-e-s sprites นะคะ

01:34:20.872 --> 01:34:26.893
ใน len เลือก self.sprites นะคะ

01:34:37.172 --> 01:34:40.551
ตรง statements pass นะคะ

01:34:55.765 --> 01:34:59.072
พิมพ์ self เหมือนเดิม เลือก self

01:35:03.504 --> 01:35:07.930
. พิมพ์ c-u แล้วเลือก current_sprite

01:35:11.869 --> 01:35:18.161
= 0 นะคะ ค่าเริ่มต้นของ self.current_sprite = 0

01:35:20.623 --> 01:35:30.565
ตอนนี้มันกำลังเช็ก ให้มันเช็กค่ามันจะวนเหมือนวนลูปน่ะค่ะ แล้วก็ self เหมือนเดิม

01:35:35.243 --> 01:35:38.327
run_animate เลือก run_animate

01:35:39.866 --> 01:35:44.777
= False มี True แล้วก็ต้องมี False ก็คือถ้าไม่เป็นจริง

01:35:46.008 --> 01:35:55.155
ก็จะจบการทำงาน จะทำเมื่อเป็นจริง มันจะเข้ามาเช็กค่าก่อน กด F ใหญ่แล้วเลือก False

01:36:08.634 --> 01:36:21.510
บรรทัดนี้เสร็จแล้ว กดย้อนหลังกลับไปที่ตำแหน่ง if แรกนะคะ if ที่ 1 เห็นไหม ดูดี ๆ นะเด็ก ๆ if ที่ 1

01:36:31.481 --> 01:36:34.383
พิมพ์ self ค่ะ s

01:36:38.015 --> 01:36:44.484
self.i เลือก image

01:36:46.269 --> 01:36:48.584
=

01:36:59.076 --> 01:37:09.464
self เหมือนเดิม เลือก self.sprites นะคะ sprites ที่เติม s เลือก sprites ที่เติม s

01:37:13.096 --> 01:37:16.450
สี่เหลี่ยมใหญ่ วงเล็บสี่เหลี่ยมใหญ่

01:37:20.205 --> 01:37:29.653
เรียก... เรียก int เรียก int int น่ะค่ะ เลือก int

01:37:31.869 --> 01:37:38.204
ใส่วงเล็บเข้าไป ในวงเล็บเลือก self.current_sprite นะคะ

01:37:40.112 --> 01:37:53.062
เลือก self มือไวจริง ๆ เลย self.current_sprite

01:37:55.647 --> 01:38:04.130
ตอนนี้เราทำส่วนของฟังก์ชัน run กับ update เสร็จแล้วนะคะ

01:38:04.807 --> 01:38:11.607
มี 2 4 6 8 10 นี่นะคะ ตั้งแต่บรรทัดนี้เลย

01:38:13.269 --> 01:38:18.777
เดี๋ยวจะไปเช็กตำแหน่งนะคะเด็ก ๆ ตำแหน่งของฟังก์ชัน

01:41:56.814 --> 01:42:05.422
ดูต่อนะคะ วันนี้อาจจะยาวหน่อย แต่ผลน่าจะคุ้มค่าพอใจ น่าจะเป็นที่พอใจของเด็ก ๆ อยู่

01:42:10.777 --> 01:42:16.383
เราจะมาเรียกใช้ตัวนี้นะ

01:42:20.753 --> 01:42:24.619
key เรากำหนดแล้ว แต่เราต้องเรียกใช้มันน่ะนะคะ

01:42:28.066 --> 01:42:33.811
ตรง... เดี๋ยวนะ เงื่อนไข

01:42:36.211 --> 01:42:52.168
if key bgvelo moving cat ตำแหน่งจะต้องเป็น

01:42:53.399 --> 01:42:55.496
pygame.QUIT

01:42:59.251 --> 01:43:04.058
ตรง key if keys เป็น K_RIGHT

01:43:06.520 --> 01:43:10.205
เป็น K_RIGHT ตำแหน่งนี้นะครับ

01:43:58.563 --> 01:44:04.475
ดูนะคะ เด็ก ๆ จะเรียกใช้ตัวแปร Cat ที่

01:44:05.768 --> 01:44:10.137
เรียกฟังก์ชัน run มาทำงานนะคะ

01:44:10.137 --> 01:44:12.721
ทีนี้ที่เราจะไปลบ

01:44:13.644 --> 01:44:20.012
ก็จะมีเดี๋ยวเด้อลบตรงไหนบ้าง เราจะเริ่มลบแล้วนะ

01:44:21.243 --> 01:44:24.804
ลบตรงนี้นะคะ นำเข้าภาพนี่

01:44:24.804 --> 01:44:29.052
ลบออกเลย เพราะเราเอาไปไว้ที่ class แล้ว

01:44:29.606 --> 01:44:35.015
เด็ก ๆ ไปหาตัวเดิม โค้ดเดิมเก่าน่ะ ลบออกนะคะ เดี๋ยวมันจะงง

01:44:36.923 --> 01:44:43.887
ที่เรานำรูปเข้าในสัปดาห์ก่อนน่ะนะ เราเขียน # ไว้อยู่ ลบออกนะคะ

01:44:48.995 --> 01:44:55.878
ไปไหนอีก icon เดี๋ยวเด้อ

01:45:07.147 --> 01:45:14.344
โอเค ลองกด B ดู Test ค่ะ Ctrl + B Test

01:45:17.483 --> 01:45:29.145
อ้าว Error ก็มา บรรทัดที่เท่าไรนี่ line 75 line 75 ไหนหว่า ไหนหว่า

01:45:29.514 --> 01:45:33.243
ดูบรรทัดนะคะ ของใครของมัน

01:45:34.105 --> 01:45:38.308
มันบอกว่าอย่างไร Indentation: unexpected indent

01:45:40.832 --> 01:45:59.480
75 clock มันบอกว่า Indentation error : unexpected indent Finished 1 shell_cmd: python

01:46:04.466 --> 01:46:13.205
clock.tick error เดี๋ยวนะ ขอดูต่อ ขอดูโค้ด

01:46:31.329 --> 01:46:33.935
เดี๋ยวย้อนโค้ดนะคะ

01:46:41.690 --> 01:46:45.000
ไปที่การตั้งค่าทั่วไป

01:47:47.753 --> 01:47:59.618
พอย้ายตำแหน่ง เอา screen ไปใส่ข้างล่างนะคะ เอ้ย clock.tick ไปใส่ล่างไอ้ screen.blit นี่นะคะ

01:48:03.094 --> 01:48:04.567
โอเค

01:48:10.234 --> 01:48:15.645
แล้วก็... ไปต่อ ๆ

01:48:25.986 --> 01:48:34.074
เราน่าจะต้องสร้างอีกตัวหนึ่ง รู้แล้วเราลืมตรงนี้ไปด้วย

01:48:44.661 --> 01:48:51.335
โอเคนะคะ เพิ่มโค้ดอีก 3 บรรทัดนี่เห็นไหม moving_sprite ที่เราสร้างเสร็จแล้วน่ะ

01:48:51.335 --> 01:48:53.462
จะต้องมาอยู่ตรงนี้

01:49:19.979 --> 01:49:22.437
เยอะจนเบลอเหมือนกัน

01:49:33.947 --> 01:49:39.436
เราจะไปที่ตำแหน่งการแสดงผลของเรานะคะ เพิ่มโค้ดอีก

01:50:09.462 --> 01:50:19.551
แล้วก็ให้เด็ก ๆ เดี๋ยวก่อนอื่น เลือกตรงส่วนของการตั้งค่าทั่วไป 3 บรรทัดนี้นะ

01:50:19.551 --> 01:50:30.882
แล้วก็กด Ctrl + X เอาไปไว้ข้างล่าง class นะคะเด็ก ๆ

01:50:35.375 --> 01:50:45.596
นี่เอามาไว้ก่อนหน้ากำหนดหน้าจอเกม ต้องขยับตำแหน่งอะไรสักอย่างหนึ่ง

01:51:29.523 --> 01:51:38.645
พิมพ์ moving เห็นไหม เลือก moving_sprites นะ .draw ให้มันวาดนะคะ ให้มันวาด

01:51:39.384 --> 01:51:42.659
d-r-a-w

01:51:43.582 --> 01:51:46.936
draw ให้มันวาด screen

01:52:00.723 --> 01:52:11.628
แล้วก็เลือกใช้คำสั่ง update นะคะ moving พิมพ์ m แล้วเลือก moving_sprite.update

01:52:11.628 --> 01:52:13.600
เลือกฟังก์ชันอัปเดต

01:52:15.693 --> 01:52:22.078
ให้ค่าเริ่มต้นอยู่ที่ 0 ตำแหน่งนะคะ 25

01:52:27.064 --> 01:52:28.513
แล้วก็

01:52:31.283 --> 01:52:34.974
เรียก pygame.display มาใช้งาน

01:52:36.451 --> 01:52:40.382
เลือก display นะคะ .flip

01:52:43.398 --> 01:52:51.315
f-l-i-p flip นะคะ ใส่วงเล็บ

01:52:53.531 --> 01:52:56.953
น่าจะ Ctrl + B ดู

01:52:57.815 --> 01:53:03.699
76 มันบอกว่าอย่างไร

01:53:05.238 --> 01:53:07.349
screen.blit

01:53:09.565 --> 01:53:13.140
unexpected ไม่รู้จัก

01:57:51.457 --> 01:58:02.171
attribute Module ผิดตรงไหน อ๋อ

01:58:08.449 --> 01:58:18.174
เรียกฟังก์ชันผิดนี่เอง ไม่เป็นอะไร ทำไมมาขึ้น

01:58:19.897 --> 01:58:28.552
moving_sprite add(cat) ‘function’ object has no attribute ‘add’

01:58:32.984 --> 01:58:39.731
ผิดอีกหรือ บอกว่าไม่รู้จัก attribute ‘add’ แล้วนะ

01:59:15.637 --> 01:59:17.269
เดี๋ยวนะ

01:59:18.288 --> 01:59:19.738
มีความ...

01:59:24.785 --> 01:59:28.980
clock เล็ก เลือก clock เล็ก

02:01:18.447 --> 02:01:22.699
74 line 74 in &lt;module&gt;

02:01:27.623 --> 02:01:29.686
Traceback 

02:01:30.609 --> 02:01:36.921
moving_sprites AttributeError ‘function’ object has no attribute ‘add’

02:01:38.583 --> 02:01:45.294
มันจะเป็นไปได้อย่างไร ไม่รู้จัก add ผิดเหรอ

02:02:06.467 --> 02:02:12.023
ไม่รู้จัก add ใช้ Dino เข้าไม่ได้

02:02:12.762 --> 02:02:15.025
error ได้อย่างไรนะ

02:02:17.559 --> 02:02:19.728
ข้ามตัวไหนไป

02:02:24.487 --> 02:02:27.515
len current self

02:02:28.069 --> 02:02:30.671
self.image

02:02:35.797 --> 02:02:37.457
True event

02:02:40.535 --> 02:02:42.065
Dino

02:02:45.000 --> 02:02:47.960
moving_sprite.add มีไหม

02:03:23.414 --> 02:03:27.869
ไม่นี่ หา add ไม่เจอ หมดแล้วนี่หว่า

02:03:30.515 --> 02:03:42.712
เดี๋ยวติดไว้ก่อน error อยู่ 1 บรรทัดนะครับ เดี๋ยวจะไปลอง run อยู่ในเครื่องตัวเอง

02:03:42.712 --> 02:03:50.731
บางทีเรื่องของเรื่องคือ Run เครื่องตัวเองออก แล้วมา run ในนี้ไม่ออกคือ... คืออะไรครับพี่น้อง

02:03:50.731 --> 02:03:57.293
โอเคนะคะเด็ก ๆ Save ไว้ก่อน เดี๋ยวเรามาต่อสัปดาห์หน้า

02:03:59.817 --> 02:04:04.846
มันยังไม่วิ่งให้เรา มันขึ้น Error

02:04:06.693 --> 02:04:09.675
attribute ‘add’

02:04:17.553 --> 02:04:20.552
มันหายไปไหนท่อนหนึ่ง

02:05:42.801 --> 02:05:54.479
สำหรับวันนี้จะพอแค่นี้ก่อนนะคะ ขอบคุณพี่ล่ามนะคะ เดี๋ยวเราจะมาต่อกันในสัปดาห์หน้าค่ะ ขอบคุณค่ะ

02:05:56.387 --> 02:05:59.846
display.update

