>> ROB สลิง: สวัสดี
ฉันร็อบ
สงสัยว่าจะใช้เก​​มนี้หรือไม่
ดีขอแบ่งออก การแก้ปัญหาพนักงาน
>> ดังนั้นขอหัวแรกลงไป init ฟังก์ชั่นที่เราบอกคุณไป
ใช้ครั้งแรก
คนแรกที่เราจะดู ที่มันเป็น init พาย
ขวาทั้งหมดดังนั้นจำไว้ว่าเราต้องการ พายเรือที่จะเป็นศูนย์กลางในการว่า
แกน x
ดังนั้นเราจึงจำเป็นที่จะคิดออก ที่ที่ควรไป
>> ป.ร. ให้ไว้ความกว้างของคณะกรรมการ - ที่ นอกจากนี้ยังมีการสับที่กำหนดขึ้นด้านบน -
เราจำเป็นต้องลบออกกว้างพาย และหารด้วย 2 เพื่อให้
ศูนย์กลางของพายที่อยู่ใน ศูนย์ของคณะกรรมการ
โปรดจำไว้ว่าพิกัด x หมายถึง ที่มุมซ้ายด้านบนของพาย,
และเพื่อให้ตรงนี้เป็นที่ เราต้องการให้เป็น
y ที่ไม่ได้เรื่อง มากเพราะเราสามารถวาง
มันทุกที่ที่เราต้องการ
ดังนั้นเราจึง instantiating พายเราตั้ง สีดำที่เรากรอกไปตั้งที่แท้จริง
ดังนั้นจึงเป็นเรื่องที่เต็มไปในรูปสี่เหลี่ยมผืนผ้าและเรา แล้วเพิ่มไปที่หน้าต่างและกลับ
พาย
และนั่นมันสำหรับการเริ่มต้น พาย
>> มันเป็นไปได้ที่คล้ายกัน กับป้ายบอกคะแนน init
ดังนั้นเรากำลังจะเริ่มต้นฉลาก เราจะกำหนดสีที่จะ
แสงสีเทา - คุณสามารถเลือกสิ่งที่คุณ ต้องการ - เราจะกำหนดตัวอักษรเพื่อ
ซอง serif 48 -
นอกจากนี้ยังสามารถเลือกสิ่งที่คุณต้องการ -
เราจะเพิ่มไปที่หน้าต่าง
ตอนนี้ส่งกลับนี้ไม่ได้จริงๆ ที่จำเป็นก็เพียงในกรณีที่บางสิ่งบางอย่าง
อื่นที่เกิดขึ้นกับป้ายทับซ้อน
จากนั้นเมื่อเราใช้ตรวจสอบการปะทะกัน, ตรวจสอบการปะทะกันจะตรวจสอบอื่น ๆ
สิ่งที่ตรวจพบก่อนที่จะป้าย
แต่ที่มันไม่ควรจะส่งผลกระทบต่อ เราในโปรแกรมนี้
>> สุดท้ายเรามีนี้ปรับปรุง Scoreboard ฟังก์ชั่นที่เราเขียน
ดังนั้นลองมาดูที่ว่า
ตอนนี้ที่นี่เราจะเห็นสิ่งที่ เกือบจะเหมือนกันกับสิ่งที่
ที่เราเห็นใน label.c
ดังนั้นเราจึงมีฉลาก -
บัฟเฟอร์ตัวจาก 12 ตัวอักษร ซึ่งเป็นเพียงแค่พอที่จะจัดการใด ๆ
จำนวนเต็มลบหรือบวก
จากนั้นเราจะใช้ sprintf ที่จะคัดลอก ชี้ลงในบัฟเฟอร์ที่
ดังนั้นนี้คือมีสตริงที่เป็นตัวแทนของ จำนวนจุดที่
>> สุดท้ายเราตั้งป้าย สตริงที่
แล้วเราจะต้องอยู่ตรงกลางป้าย ในกรณีที่เราได้หายไปจาก 10 ถึงเก้า
จุดและเราได้เปลี่ยนมัน
ดังนั้นเราคำนวณ x และ y พิกัด ของฉลากที่จะ
ได้รับความกว้างและความสูง ของหน้าต่าง
ถึงแม้ว่าเราอาจจะใช้เพียง ค่าคงที่กว้างและความสูงกัญชา
ที่กำหนดขึ้นด้านบน
นอกจากนี้เรายังได้รับความกว้างและความสูง ของฉลากและหาร
ที่ 2 ไปยังศูนย์
และจากนั้นเราจะใช้การตั้งค่าที่ตั้งจริง วางไว้ในตำแหน่งที่
เพื่อให้มันสำหรับ init ป้ายบอกคะแนน
>> ตกลง
ลูกดังนั้น init เป็นไปได้คล้ายกันมาก init จะพายเป็นอย่างดี
เรามาดูกันที่นี่ที่เรากำลังใช้ newgoval เพื่อที่จะยกตัวอย่างลูกใหม่
และที่นี่เรากำลังใช้ 2 ครั้งรัศมี ความกว้างของลูกและ 2
ครั้งรัศมีเป็น ความสูงของลูก
ตอนนี้ยัง newgoval, x และ y พิกัดที่เราผ่านในที่เกิด
อ้างถึงด้านบนซ้ายของ ลูกที่เป็นจริง
นอกลูกตัวเอง
ดังนั้นเพื่อที่จะได้รับลูกว่า ศูนย์กลางในกระดานที่เราต้องผ่าน
ความกว้างหารด้วย 2 ศูนย์และ แล้วลบออกรัศมีที่จะผลักดัน
ศูนย์ที่แท้จริงของลูกเป็น ศูนย์ของคณะกรรมการ
และเราจะทำสิ่งเดียวที่แน่นอน สำหรับแกน y ยกเว้นการใช้
ความสูงแทนของความกว้าง
>> เพื่อให้สถานที่ที่ลูกในศูนย์
และนี้ instantiates ลูกตั้ง สีดำกรอกบอล
แล้วในที่สุดเพิ่มไปยัง หน้าต่างและส่งกลับมา
และนั่นมันสำหรับการเริ่มต้น ลูก
>> ดังนั้นตอนนี้ลองมาดูที่ init อิฐซึ่งเป็นเล็กน้อย
ซับซ้อน แต่ก็สวย คล้ายกับ init พาย
ตอนแรกที่เราต้องคิดออก ความกว้างของแต่ละอิฐ
โปรดจำไว้ว่าเรามีอย่างต่อเนื่องที่เรียกว่า สายที่ระบุ
จำนวนคอลัมน์ของอิฐ ที่เรามี
ดังนั้นเราจะกำหนดความกว้าง ของอิฐเดียวโดยการความกว้าง
ของคณะกรรมการทั้งลบ ออกขนาดของช่องว่างของเรา -
ซึ่งกัญชาที่กำหนดขึ้นด้านบนและหมาย จำนวนพิกเซลที่
ควรอยู่ระหว่างแต่ละอิฐ -
และอื่น ๆ ที่เรากำลังจะมีทั้งหมด ครั้งช่องว่างเรียกพิกเซลว่างใน
แถวเดียว
และที่ยังจะอ้างถึงบางส่วนที่ว่างเปล่า พิกเซลไปทางซ้ายและขวาของ
คอลัมน์ด้านซ้ายและอิฐคอลัมน์ขวา
>> เพื่อลบออกพิกเซลที่ว่างเปล่าเหล่านั้น ทำให้เรามีจำนวนพิกเซลที่
อิฐเป็นจริงโดยใช้
แล้วเราหารด้วยสายที่จะได้รับ จำนวนพิกเซลต่ออิฐ
ดังนั้นที่นี่เรากำหนดอาร์เรย์ที่เพียงแค่ ระบุสีที่เราต้องการสำหรับแต่ละ
แถวของอิฐ
ถ้าเรามีแถวของอิฐกว่า สีที่เรากำหนดเราจะเห็น
ที่เราจะห่วงเพียงแค่กลับไปรอบ ๆ และ ใช้สีแดงอีกครั้งแล้วสีส้มและ
สีเหลืองและอื่น ๆ
>> ดังนั้นที่พีตั้งคำแนะนำสเป็คเรา จะไปห่วงกว่าทุกแถวและ
คอลัมน์ของอิฐ
แต่ก่อนที่เราห่วงกว่าคอลัมน์เรา ดูที่นี่ที่เราระบุ
ตำแหน่ง y ของแต่ละอิฐ ในแถวนั้น
นอกจากนี้เรายังสามารถย้ายนี้เป็นที่สอง สำหรับวง แต่แล้วเราต้องการเพียงแค่เป็น
การคำนวณการทำซ้ำไปซ้ำมา อีกครั้งเมื่อเราไม่จำเป็นต้อง
>> ดังนั้นตำแหน่ง y ของอิฐที่เป็นไป จะมีอัตรากำไรขั้นต้นซึ่งเป็นกัญชา
ที่กำหนดขึ้นด้านบนและเพียงแค่หมายถึง ช่องว่างระหว่างด้านบนของคณะกรรมการและ
จุดเริ่มต้นของทั้งหมดของอิฐ
และเรากำลังจะเพิ่มไปที่แถว ว่าเรากำลังอยู่ในช่วงเวลาที่ความสูงของ
อิฐแต่ละบุคคลรวมทั้งช่องว่าง ที่อยู่ระหว่างแต่ละอิฐ
ดังนั้นนี้ยังเป็นแนวตั้ง ช่องว่างระหว่างแต่ละอิฐ
เพื่อที่จะให้เราพิกัด y อิฐ
>> ดังนั้นที่นี่เรากำลังจะคำนวณ พิกัด x ของอิฐ
ขณะนี้เรามีช่องว่างหารด้วย 2 ตั้งแต่ จำได้ว่าก่อนที่ผมบอกว่า
ด้านซ้ายของคณะกรรมการที่เรากำลังจะ ที่จะออกจากพื้นที่น้อย
ดังนั้นช่องว่างหารด้วย 2 เป็นพื้นที่ที่
แล้วเรากำลังเพิ่มไปที่คอลัมน์ ว่าเรากำลังอยู่ในช่วงเวลาที่ความกว้างบวก
ช่องว่างที่กว้างเป็นจำนวนของพื้นที่ ที่อิฐเดียวจะขึ้นและ
แล้วช่องว่างเป็นพื้นที่ ระหว่างแต่ละอิฐ
เพื่อที่จะคำนวณพิกัด x อิฐ
>> ตอนนี้เราก็ต้องยกตัวอย่าง อิฐที่กำหนดว่า x และ y-ประสานงาน
โดยใช้ความกว้างที่เราคำนวณสำหรับแต่ละ ความสูงของอิฐและทำลายซึ่งเป็น
สับกำหนดขึ้นด้านบน
เราตั้งค่าสีของอิฐ
ขอให้สังเกตว่าเรากำลังใช้สีแถวของเราและ เรากำลังผ่านในแถวที่
สี NUM mod ซึ่งจะทำให้ เราห่อรอบกลับเป็นสีแดงถ้าเรา
มีแถวมากกว่าสี
สุดท้ายเราจะกรอกข้อมูลลงในอิฐ สีและเพิ่มไปที่หน้าต่าง
>> และที่มัน
ดังนั้นที่มันสำหรับทุกของเรา วิธีการเริ่มต้น
ตอนนี้เราต้องมองในขณะที่ วงที่คุณต้องกรอกค่ะ
ดังนั้นที่นี่เราจะเห็นว่าในขณะนี้เป็นของเรา ห่วงที่จะดำเนินต่อไปจนกว่า
เกมที่มีมากกว่าซึ่งอาจหมายถึง เราทำงานออกไปจากชีวิตหรือ
เราวิ่งออกมาจากอิฐ
>> ดังนั้นสิ่งแรกที่เรามี คือรอคลิก
ดังนั้นเกมที่รอให้เราไปจริง คลิกลูกก่อนที่จะเริ่มเคลื่อนไหว
แล้วเรากำลังจะ การพร่องชีวิต
ดังนั้นถ้าเรามีสามชีวิตตอนนี้เรากำลัง ลงไปสองชีวิตเรากำลังใช้ของเรา
ชีวิตที่สาม
เรากำลังจะไปอยู่ตรงกลางลูก
ดังนั้นตอนนี้ไม่ได้จริงจะช่วยให้ เราในชีวิตเป็นครั้งแรกที่เราเล่น
ตั้งแต่ลูกที่มีอยู่แล้วไป ได้รับการเป็นศูนย์กลางจากเมื่อเรา
อินสแตนซ์มัน
แต่เราเห็นเมื่อเราสิ้นสุดการสูญเสีย ชีวิตและห่วงกลับไปรอบ ๆ แล้วเรา
จะต้องการกลับไปตำแหน่งบอลจาก ด้านล่างของคณะกรรมการกลับไปที่
ศูนย์
>> ดังนั้นตอนนี้ที่นี่เราต้องสร้าง x ความเร็วของลูก
และตามสเป็คที่เรากำลังใช้งแรนด์ 48 ที่จะสร้างบางจำนวนสุ่ม
เพื่อระบุความเร็ว
เรากำลังเพิ่มหนึ่งไปว่าตั้งแต่ที่เราเพิ่ง ต้องการความเร็วในช่วงหนึ่ง
สองแทนศูนย์หนึ่ง
สุดท้ายเรากำลังใช้งแรนด์ 48 อีกครั้งใน เพื่อตรวจสอบว่าลูก
จะย้ายไปทางซ้าย หรือสิทธิในการเริ่มต้น
>> ดังนั้นงแรนด์ 48 ส่งกลับตัวเลขสุ่ม ระหว่างศูนย์และหนึ่งและอื่น ๆ โดยขอให้
ถ้าที่น้อยกว่า 0.5 เรามี 50 50 โอกาสในการเปลี่ยนความเร็วของ
ลูกจะเป็นเชิงลบ
สุดท้ายเราตั้งค่าความเร็วในแนวตั้งของ ลูกเพียงแค่จะคงที่บางส่วน
เราเลือกที่สาม
และตอนนี้เรามีห่วงอีก
>> ดังนั้นห่วงด้านนี้ จะยังคง
สังเกตเห็นที่นี่ในขณะที่อิฐ มากกว่าศูนย์ -
ดังนั้นหากเราวิ่งออกมาจากอิฐเราได้ ชนะเกมและเราสามารถ
แยกออกจากวงนี้ -
และทุก y รับบอลน้อยกว่าความสูง ลบ 2 ครั้งรัศมี
ดังนั้นสิ่งนี้จะตระหนักก็คือถ้า ลูกที่เกิดขึ้นกับการพายเรือไปที่ผ่านมาใน
ซึ่งในกรณีที่คุณได้สูญเสียชีวิต
>> มองภายในนี้สำหรับวงเรามี การตรวจสอบสำหรับเหตุการณ์เมาส์
ดังนั้นหากมีเหตุการณ์เมาส์ที่ หมายความว่าเราต้องการที่จะตรวจสอบเพื่อ
ดูว่าเมาส์ที่ถูกย้ายและถ้า เมาส์ถูกย้ายเราต้องการที่จะมี
พายเรือให้ทันกับเมาส์
ดังนั้นจะทำอย่างไรที่เราคำนวณใหม่ ตำแหน่งของพายซึ่งเป็นไป
ที่จะคว้าตำแหน่งของเมาส์ - ที่คว้าตำแหน่งโดยใช้
กรณีที่เราได้ผ่าน -
แล้วเราจะลบออก ความกว้างพายหารด้วย 2 ดังนั้น
เข้าพักพายศูนย์กลางบนเมาส์ แทนด้านซ้ายของพาย
ที่อยู่ตรงกลาง
>> ดังนั้นตอนนี้เรายังต้องการที่จะให้แน่ใจว่าเรา ไม่ได้ไปกว่าด้านซ้ายหรือขวา
ด้านข้างของคณะกรรมการ
และอื่น ๆ ที่นี่เรากำลังตรวจสอบว่า พายเรือจะออกที่ด้านซ้ายของ
คณะกรรมการเพียงแค่ติด มันไปทางด้านซ้าย
และที่นี่เรากำลังตรวจสอบว่าพาย จะไปทางด้านขวาของ
คณะกรรมการเพียงแค่ติดมัน ไปทางด้านขวา
และในที่สุดเราตั้งจริง ตำแหน่งของพาย
>> ตอนนี้ถ้าไม่มีการเคลื่อนไหวของเมาส์, นั่นหมายความว่าเรากำลังจะ
ต้องการที่จะย้ายลูก
และเพื่อให้เรามีอยู่แล้ว x และความเร็วของลูก y
และเพื่อให้เราย้ายไป
แต่ตอนนี้เราต้องการที่จะตรวจสอบ สองสิ่ง
ดังนั้นที่นี่เรากำลังตรวจสอบว่าถ้าเราตีอย่างใดอย่างหนึ่ง ด้านซ้ายหรือด้านขวาของ
คณะกรรมการที่เราต้องการลูกที่จะตีกลับ
ดังนั้นในกรณีที่เราตั้ง x ความเร็ว ความเร็ว x ลบ
>> ถ้าลูกบอลตีด้านบนของบอร์ดที่ แล้วเรายังต้องการให้ลูกตีกลับ
แต่ตอนนี้เราต้องการที่จะเปลี่ยน ความเร็ว y
ขอให้สังเกตว่าเราไม่ได้มีเงื่อนไขในการ ลูกตีด้านล่างของ
คณะกรรมการตั้งแต่ที่ถูกจับแล้ว ขึ้นที่นี่ในห่วงขณะนี้
>> สุดท้ายเราต้องการที่จะตรวจสอบบางส่วน ชนซึ่งถ้าตีลูก
ทั้งพายเรือหรืออิฐที่เราต้องการ ที่จะทำบางสิ่งที่กรณีพิเศษ
ดังนั้นหากมีการปะทะกันซึ่ง วัตถุกรณีที่จะไม่เป็นโมฆะแล้ว
ถ้าวัตถุตีพายเรือที่เราจะ เพียงแค่ต้องการที่จะตีกลับที่ลูกบอล
และที่นี่ยังเป็นที่เรากำหนดตำแหน่งของ ลูกไปอยู่เหนือพาย
ขอให้สังเกตว่าเรากำลังรับตำแหน่ง x ของ ลูกและเพียงแค่การนำที่
แต่ที่นี่เราได้รับตำแหน่ง y ของพายและย้ายลูก
ไปพายเรือ
>> นี้เป็นกรณีพิเศษเพื่อให้ลูก ไม่ได้ตีพายแล้ว
ก่อนที่จะสามารถย้ายออกไปพายเรือ, วงอื่นไปรอบ ๆ และ
มันคิดว่ามันยังคงอยู่บนแผงและ ดังนั้นความเร็ว y ที่ได้รับการตั้งค่ากลับไป
ลบแล้วลูกชนิดเพียง ของไม้ใหญ่ในการพายเรือ
ดังนั้นถ้าเราไม่ได้ตีพาย, แล้วเรายังต้องการที่จะตรวจสอบ
ถ้าเราตีอิฐ
และดังนั้นนี่คือวิธีการที่เราสามารถตรวจสอบ เพื่อดูว่าเราตีอิฐ
>> เราจำเป็นต้องตรวจสอบนี้เพราะเราอาจจะ มีการตีจริงฉลากและเรา
ไม่ต้องการที่จะเอาป้าย
ดังนั้นถ้าเราตีอิฐเราสามารถลบที่ อิฐจากหน้าต่างที่ลดลง
นับของอิฐที่เพิ่มขึ้นของเรา จำนวนจุดและตอนนี้เราจำเป็นที่จะต้อง
ปรับปรุงป้ายบอกคะแนนที่ว่า เช่นเดียวกับที่เราเห็นก่อนที่เมื่อเราเห็น
init ป้ายบอกคะแนน
แต่ตอนนี้เราเป็นเพียงการปรับปรุง ป้ายบอกคะแนนตั้งแต่ที่เราได้เปลี่ยน
จำนวนจุด
และตอนนี้มันควรจะแสดงว่า เราตีหนึ่งหยุดเพิ่มเติม
>> และสุดท้ายถ้าเราตีอิฐ เรายังต้องการที่จะตีกลับ
ดังนั้นในที่สุดเราเพียงแค่หยุดการทำงานชั่วคราวเพื่อให้ ลูกจะไม่ย้ายเร็วสุดและเรา
จริงสามารถตีมันด้วยการพายเรือของเรา
และที่มันสวยมาก
ดังนั้นตอนนี้เราจะห่วงกลับไปด้านบนของ ห่วงขณะนี้และต่อไปจนกว่า
อย่างใดอย่างหนึ่งที่เราสูญเสียชีวิตหรือ เราวิ่งออกมาจากอิฐ
>> จะเกิดอะไรขึ้นถ้าเราสูญเสียชีวิตหรือไม่
แล้วเรากำลังจะออกในขณะนี้ ห่วงและเราจะเห็นจะห่วงสำรอง
ไปด้านบนของห่วงในขณะที่ด้านนอก
ซึ่งในกรณีที่เรากำลังจะ รันชุดนี้ขึ้นมาอีกครั้ง
และการตั้งค่านี้จะมีให้เรารอ สำหรับการคลิกที่พร่องของเราจำนวน
ของชีวิตกลับไปตำแหน่งลูกที่คำนวณ x และ y ความเร็วและ
แล้วกลับเกม
>> และเพื่อที่จะดำเนินต่อไปจนทั้ง อิฐสิ้นสุดขึ้นเป็นน้อยกว่า
หรือเท่ากับศูนย์ -
ซึ่งในกรณีที่เราได้รับรางวัลเกม -
หรือชีวิตที่มีค่าน้อยกว่าศูนย์ที่ กรณีที่เราได้สูญเสียเกม
ดังนั้นเมื่อเป็นกรณีที่เราแบ่งออก ของวงในขณะที่เราและเรามาถึงที่นี่
ที่เรากำลังจะรอการคลิก ก่อนที่จะจบเกมเพื่อให้
เกมไม่ได้เพียงแค่ทันที ปิดเรา
และในที่สุดเราจะปิด หน้าต่างและที่มัน
ชื่อของฉันคือร็อบและนี่คือ Breakout