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