>> 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.