ROB Bowden: Hi. Aku Rob. Ingin tahu bagaimana menerapkan permainan ini? Nah, mari kita keluar solusi staf. Jadi, mari kita kepala pertama ke init fungsi yang kita katakan untuk menerapkan pertama. Pertama akan kita lihat hal itu adalah init dayung. Baiklah, jadi ingatlah bahwa kita ingin mendayung harus persis berpusat di sumbu-x. Jadi kita perlu mencari tahu mana yang harus pergi. Mengingat lebar papan - yang juga hash didefinisikan di bagian atas - kita perlu mengurangi keluar lebar dayung dan membagi dengan 2, sehingga pusat dayung dalam pusat papan. Ingat bahwa x-koordinat mengacu pada pojok kiri atas dayung, dan jadi ini adalah persis di mana kita ingin menjadi. Y-koordinat tidak masalah sebanyak karena kita dapat menempatkan di mana pun kita inginkan. Jadi kita instantiating dayung, kami menetapkan warna hitam, kita mengatur isi ke True jadi ini diisi persegi panjang, dan kami kemudian menambahkannya ke jendela dan kembali dayung. Dan itu saja untuk menginisialisasi dayung. Ini akan menjadi serupa untuk init papan skor. Jadi kita akan menginisialisasi label, kita akan mengatur warna untuk abu-abu terang - Anda dapat memilih apa pun yang Anda ingin - kita akan mengatur font untuk sans serif 48 - juga bisa memilih apa pun yang Anda inginkan - kami akan menambahkannya ke jendela. Sekarang kirim ini ke belakang tidak benar-benar diperlukan, itu hanya dalam kasus sesuatu lain terjadi tumpang tindih label. Kemudian ketika kita menggunakan Mendeteksi Tabrakan, Mendeteksi Collision akan mendeteksi lain hal sebelum mendeteksi label. Tapi itu benar-benar tidak akan mempengaruhi kami dalam program ini. Akhirnya, kami memiliki Scoreboard Pembaruan ini fungsi yang kita tulis. Jadi mari kita lihat itu. Sekarang, di sini kita melihat sesuatu yang hampir identik dengan apa yang kita lihat di label.c tersebut. Jadi kita memiliki label - buffer karakter 12 karakter, yang hanya cukup untuk menangani integer, negatif atau positif. Kemudian kita menggunakan sprintf untuk menyalin menunjuk ke buffer itu. Jadi s ini berisi string yang mewakili jumlah poin. Akhirnya, kami menetapkan label untuk string tersebut. Dan kemudian kita perlu memusatkan label dalam kasus kami telah pergi dari sembilan sampai 10 poin dan kami telah bergeser itu. Jadi kita menghitung x dan y-koordinat label yang akan mendapatkan lebar dan tinggi jendela. Meskipun, kami juga bisa hanya menggunakan konstanta Lebar dan Tinggi hash didefinisikan di bagian atas. Kami juga mendapatkan lebar dan tinggi label dan membagi bahwa oleh 2 ke pusat. Dan kemudian kita gunakan Tetapkan Lokasi untuk benar-benar meletakkannya di lokasi tersebut. Jadi itu saja untuk init papan skor. OK. Jadi init bola akan menjadi sangat mirip init dayung juga. Kita lihat di sini bahwa kita menggunakan newgoval untuk instantiate bola baru. Dan di sini kita menggunakan 2 kali jari-jari sebagai lebar dari bola, dan 2 kali jari-jari sebagai ketinggian bola. Sekarang, juga untuk newgoval, x dan y-koordinat yang kita lulus dalam akan untuk merujuk pada kiri atas bola, yang sebenarnya luar bola itu sendiri. Jadi untuk mendapatkan bola tepat berpusat di papan, kita harus lulus lebar dibagi 2 untuk pusat, dan kemudian kurangi keluar radius untuk mendorong pusat sebenarnya bola ke pusat papan. Dan kami melakukan hal yang sama persis untuk sumbu y, kecuali menggunakan tinggi bukan lebar. Sehingga menempatkan bola di tengah. Dan ini instantiates bola, mengatur warna menjadi hitam, mengisi bola, kemudian akhirnya menambahkannya ke jendela dan mengembalikannya. Dan itu saja untuk menginisialisasi bola. Jadi sekarang mari kita lihat init batu bata yang sedikit lebih rumit, tapi cukup mirip dengan init dayung. Sekarang, pertama-tama kita perlu mencari tahu lebar setiap bata. Ingatlah bahwa kita memiliki konstan disebut panggilan yang menentukan jumlah kolom dari batu bata yang kita miliki. Jadi, kita akan menentukan lebar dari batu bata tunggal dengan mengambil lebar dari seluruh papan, mengurangkan out ukuran jeda kami - hash yang didefinisikan di bagian atas dan mengacu dengan jumlah piksel yang harus antara setiap bata - dan jadi kita akan memiliki total gap kali panggilan piksel kosong dalam baris tunggal. Dan itu juga akan mengacu kepada beberapa kosong pixel ke kiri dan kanan meninggalkan kolom dan kolom kanan bata. Jadi kurangi keluar mereka piksel kosong meninggalkan kita dengan jumlah pixel yang batu bata benar-benar menggunakan. Dan kemudian kita bagi dengan panggilan untuk mendapatkan jumlah pixel per bata. Jadi di sini kita mendefinisikan sebuah array yang hanya menentukan warna yang kita inginkan untuk setiap deretan batu bata. Jika kita memiliki baris lebih banyak batu bata dari warna yang kita tentukan, kita akan melihat bahwa kita hanya akan loop kembali sekitar dan menggunakan warna merah lagi, dan kemudian oranye dan kuning dan sebagainya. Jadi, sebagai petunjuk spesifikasi p-set, kita akan loop atas semua baris dan kolom batu bata. Tapi sebelum kita loop atas kolom, kita lihat di sini bahwa kita menentukan posisi y dari setiap bata dalam baris tertentu. Kita juga bisa bergerak ini ke kedua untuk loop, tapi kemudian kita akan hanya menjadi melakukan perhitungan berulang lagi ketika kita tidak perlu. Jadi posisi y dari batu bata akan menjadi margin, yang merupakan hash didefinisikan di bagian atas dan hanya mengacu pada ruang antara bagian atas papan dan awal semua batu bata. Dan kita akan menambah bahwa baris bahwa kita berada di kali tinggi dari bata individu ditambah kesenjangan yaitu antara setiap bata. Jadi ini juga merupakan vertikal gap antara setiap bata. Sehingga memberi kita y-koordinat bata. Jadi di sini kita akan menghitung x-koordinat dari batu bata. Sekarang, kami memiliki gap dibagi 2 karena, ingat sebelumnya, saya mengatakan bahwa pada sisi kiri papan, kita akan meninggalkan sedikit ruang. Jadi gap dibagi 2 ruang itu. Dan kemudian kita menambah bahwa kolom bahwa kita berada di kali lebar ditambah gap, di mana lebar adalah jumlah ruang bahwa batu bata tunggal mengambil dan maka gap adalah ruang antara setiap bata. Sehingga menghitung x-koordinat bata. Sekarang kita hanya perlu instantiate bata mengingat bahwa x dan y koordinat menggunakan lebar yang kita dihitung untuk setiap tinggi bata, dan istirahat yang hash didefinisikan di bagian atas. Kami mengatur warna dari batu bata. Perhatikan kita sedang menggunakan warna array kita dan kita lewat di baris yang pada warna num mod yang akan membuat kami membungkus kembali sekitar menjadi merah jika kita memiliki lebih baris dari warna. Akhirnya, kita akan mengisi bata warna dan menambahkannya ke jendela. Dan itu saja. Jadi, itu saja untuk semua kami metode inisialisasi. Sekarang kita perlu melihat sementara loop yang Anda harus mengisi masuk Jadi di sini kita melihat bahwa ini adalah saat kami loop yang akan berlanjut sampai permainan yang lebih, yang bisa berarti kita kehabisan kehidupan atau kita kehabisan batu bata. Jadi hal pertama yang harus kita adalah Tunggu Klik. Jadi permainan menunggu kita untuk benar-benar klik sebelum bola mulai bergerak. Dan kemudian kita akan untuk pengurangan kehidupan. Jadi jika kita memiliki tiga nyawa, sekarang kita ke dua kehidupan, kita menggunakan kami kehidupan ketiga. Kita akan ke pusat bola. Jadi sekarang, ini tidak benar-benar akan membantu kita pada kehidupan pertama kami bermain karena bola sudah akan telah berpusat dari ketika kita instantiated itu. Tapi kita lihat ketika kita akhirnya kehilangan hidup dan loop kembali sekitar, maka kita akan ingin recenter bola dari bagian bawah papan kembali ke pusat. Jadi, sekarang di sini kita perlu untuk menghasilkan x kecepatan bola. Dan, sesuai spesifikasi, kami menggunakan d rand 48 untuk menghasilkan beberapa nomor acak untuk menentukan kecepatan. Kami menambahkan satu untuk itu karena kita hanya ingin kecepatan di kisaran satu dua bukannya nol sampai satu. Akhirnya, kita menggunakan d rand 48 lagi untuk menentukan apakah bola akan bergerak ke kiri atau hak untuk memulai. Jadi d rand 48 mengembalikan nomor acak antara nol dan satu, dan sebagainya dengan meminta kalau itu kurang dari 0,5, kita memiliki 50 50 kesempatan switching kecepatan bola menjadi negatif. Akhirnya, kami menetapkan kecepatan vertikal bola hanya beberapa konstan. Kami memilih tiga. Dan sekarang kita memiliki loop lain. Jadi loop batin ini akan terus. Perhatikan di sini, sementara batu bata lebih besar dari nol - jadi jika kita kehabisan batu bata, kami telah memenangkan pertandingan dan kita bisa keluar dari lingkaran ini - dan semua Dapatkan y Bola kurang dari ketinggian minus 2 kali jari-jari. Jadi apa ini adalah mengakui jika bola terjadi untuk melewati dayung, di hal ini Anda telah kehilangan kehidupan. Melihat ke dalam ini untuk loop yang kita miliki pengecekan untuk event mouse. Jadi, jika ada event mouse, yang berarti bahwa kita ingin memeriksa untuk melihat apakah mouse dipindahkan, dan jika tikus dipindahkan, kami ingin memiliki dayung bersaing dengan mouse. Jadi, untuk melakukan itu, kita menghitung baru posisi dayung, yang akan untuk meraih posisi mouse - yang meraih posisi menggunakan Acara bahwa kami melewati - dan kemudian kita akan kurangi keluar lebar dayung dibagi 2, sehingga tetap dayung berpusat pada mouse bukannya sisi kiri dayung tinggal terpusat. Jadi sekarang kami juga ingin memastikan bahwa kita tidak pergi ke sisi kiri atau kanan sisi papan. Dan jadi di sini kita hanya memeriksa apakah dayung akan dari sisi kiri papan, hanya menempel ke sisi kiri. Dan di sini kita memeriksa apakah dayung akan ke sisi kanan papan, hanya menempel ke sisi kanan. Dan akhirnya, kita benar-benar mengatur lokasi dayung. Sekarang, jika tidak ada gerakan mouse, itu berarti kita akan ingin memindahkan bola. Dan jadi kita sudah punya x dan y kecepatan bola dan jadi kami memindahkannya. Tapi sekarang kita ingin mendeteksi beberapa hal. Jadi di sini kita mendeteksi jika kita memukul baik Sebelah kiri atau kanan papan, kami ingin bola untuk bangkit. Jadi, dalam kasus itu, kami mengatur kecepatan x dengan kecepatan x negatif. Jika bola membentur bagian atas papan, maka kita juga ingin bola memantul. Tapi sekarang kita ingin mengubah kecepatan y. Perhatikan kita tidak memiliki kondisi untuk memukul bola bagian bawah papan karena itu sudah ditangkap di sini sementara lingkaran ini. Akhirnya, kami ingin mendeteksi beberapa tabrakan di mana jika hit bola baik dayung atau batu bata, kita ingin untuk melakukan beberapa hal kasus khusus. Jadi jika ada tabrakan, di mana benda kasus tidak akan null, maka, jika objek memukul dayung, kita akan hanya ingin untuk bangkit bola. Dan di sini, juga, kami menetapkan lokasi bola hanya di atas dayung. Perhatikan kita mengambil posisi x dari bola dan hanya menggunakan kembali itu. Tapi di sini kita mendapatkan posisi y dari dayung dan bergerak bola atas dayung. Ini adalah kasus khusus sehingga bola tidak memukul dayung dan kemudian, sebelum itu mampu bergerak dari dayung, loop lain terjadi di sekitar dan berpikir itu masih pada panel dan sehingga kecepatan y akan diatur kembali ke negatif dan kemudian bola hanya jenis tongkat memantul di dayung. Jadi, jika kita tidak memukul dayung, maka kami juga ingin memeriksa jika kita memukul bata. Dan jadi ini adalah bagaimana kita dapat memeriksa untuk melihat apakah kita memukul batu bata. Kita perlu memeriksa ini karena kita mungkin telah benar-benar memukul label dan kami tidak ingin menghapus label. Jadi jika kita memukul batu bata, kita bisa menghapus itu bata dari jendela, penurunan Kami menghitung dari batu bata, kenaikan kami jumlah poin, dan sekarang kita perlu memperbarui papan skor yang persis sama seperti yang kita lihat sebelumnya ketika kita melihat init papan skor. Tapi sekarang kita hanya memperbarui scoreboard karena kita telah mengubah jumlah poin. Dan sekarang harus menampilkan bahwa kita memukul satu lagi istirahat. Dan akhirnya, jika kita memukul batu bata kami juga ingin bangkit. Jadi akhirnya, kita berhenti sejenak hanya sehingga bola tidak bergerak super cepat dan kami benar-benar dapat memukulnya dengan dayung kami. Dan itu cukup banyak itu. Jadi sekarang kita akan loop kembali ke atas sementara ini lingkaran dan berlanjut sampai baik kita kehilangan kehidupan atau kita kehabisan batu bata. Apa yang terjadi jika kita kehilangan kehidupan? Kemudian kita akan keluar saat ini lingkaran, dan kita akan melihat akan loop cadangan ke puncak sementara lingkaran luar. Dalam hal ini, kita akan mengeksekusi set up lagi. Dan ini dibentuk akan memiliki kita menunggu untuk klik, pengurangan jumlah kami kehidupan, recenter bola, menghitung ulang sebuah kecepatan x dan y, dan kemudian melanjutkan permainan. Jadi, yang akan terus sampai baik batu bata akhirnya menjadi kurang dari atau sama dengan nol - dalam hal ini kita memenangkan pertandingan - atau hidup kurang dari nol, di mana jika kita telah kehilangan permainan. Jadi, sekali itu yang terjadi, kita keluar itu sementara lingkaran, dan kami mencapai di sini di mana kita akan menunggu klik sebelum keluar permainan sehingga permainan tidak hanya segera tutup pada kami. Dan akhirnya kita akan menutup jendela dan hanya itu. Nama saya Rob, dan ini adalah Breakout.