Jadi kita bisa mencapai layar permainan sekarang dan komputer menebak angka
di sini, angka acak yang mengecualikan angka asli kita untuk tebakan awal pertama.
Sekarang kita perlu memastikan bahwa tebakan selanjutnya dapat dilakukan ketika kita menekan tombol lebih rendah atau lebih besar
di sini di layar permainan. Untuk itu, mari
kita tambahkan fungsi di dalam komponen fungsional kami karena fungsi ini akan memerlukan akses ke
keadaan sekitar dan ke komponen sekitarnya dan berikan nama apa pun yang Anda inginkan, seperti pengendali tebakan berikutnya, nama apa pun yang
Anda inginkan dan ini adalah
fungsi yang Anda benar-benar harus mendapatkan argumen, arah tebakan selanjutnya, jadi lebih
rendah atau lebih besar. Sekarang hal pertama
yang ingin saya lakukan di sini adalah saya ingin memastikan bahwa kami memvalidasi arah.
Sekarang fungsi ini di sini harus dieksekusi ketika tombol-tombol di bawah ditekan tetapi tentu
saja nilai arahannya, jadi nilai yang kita berikan sebagai argumen harus berbeda
berdasarkan tombol.
Jadi di sini kita memiliki pengendali tebakan berikutnya yang terhubung ke onPress, tanpa tanda kurung untuk hanya
menyediakan penunjuk itu pada fungsi kita ke onPress sehingga ini akan dieksekusi pada akhirnya ketika
pengguna menekan ini, tetapi saya pergi untuk mengkonfigurasi ulang argumen yang akan diteruskan ke penebak tebakan berikutnya ketika
ini dijalankan.
Kita dapat melakukan ini dengan bind, bind ini karena argumen pertama untuk mengikat adalah selalu apa ini harus merujuk
pada fungsi yang dipanggil, tidak masalah di sini sehingga kita bisa mengikatnya dengan ini.
Nilai kedua yang kami lewati di sini untuk mengikat akan menjadi argumen pertama yang diterima oleh fungsi kami dan
oleh karena itu, ini akan menjadi arah yang diterima di sini dan tentu saja terserah Anda logika mana yang Anda gunakan
di sini,
bagi saya masuk akal untuk hanya menggunakan string di mana di sini kita lewat lebih rendah sebagai string dan untuk tombol lainnya, kita melewati lebih besar
sehingga kita memiliki dua pengidentifikasi
ini yang pada dasarnya diteruskan ke penangan tebakan berikutnya. Jadi arahnya akan lebih rendah atau
lebih besar dan
sekarang kami ingin memvalidasi apakah itu benar.
Jadi misalnya, jika Anda memilih angka katakanlah 55 dan komputer menebak 60, maka jika Anda memberi
komputer petunjuk angka harus lebih besar, itu jelas salah karena jumlahnya
harus lebih kecil, nomor Anda adalah 55, tebak adalah 60, itu
salah jika Anda
memberi tahu komputer bahwa nomor yang seharusnya ditebak selanjutnya harus lebih besar dari 60,
kan?
Jadi kami ingin
memvalidasi ini dan oleh karena itu di sini kami dapat
memeriksa apakah arahnya sama dengan yang lebih rendah, jadi jika Anda menekan tombol yang lebih rendah dan tebakan saat ini lebih kecil maka props pilihan pengguna, sehingga komputer benar-benar
menebak angka yang lebih kecil dari pilihan kita, maka yang lebih rendah adalah petunjuk yang salah
benar
karena jumlahnya memang harus lebih
rendah, perlu lebih besar karena tebakannya sudah terlalu rendah. Jadi itulah satu kemungkinan skenario di mana kita mendapatkan petunjuk
yang salah, alternatifnya dan saya akan membungkusnya dalam tanda kurung untuk memperjelas bahwa ini
adalah satu syarat di sini.
Jadi alternatif untuk itu,
syarat kedua yang ingin saya periksa adalah bahwa arah di sini sebenarnya lebih besar dan
pada saat yang sama tebakan saat ini sudah lebih besar dari pilihan
kita dan kemudian itu juga petunjuk yang
salah, hanya di arah yang berlawanan.
Dalam kedua kasus di mana kami memberikan petunjuk yang salah, saya ingin memberikan peringatan dan Anda mengetahui bahwa Anda dapat melakukan ini
dengan API peringatan, kelas peringatan yang dapat Anda impor dari Bereaksi Asli pada akhirnya. Kemudian di sini, di cek kami, saya akan menggunakan lansiran
waspada untuk melemparkan lansiran dengan judul katakanlah jangan berbohong, tentu saja Anda dapat memilih nama yang Anda inginkan, saya lolos
dari satu kutipan yang saya
cetak sebagai karakter di sini dengan garis miring terbalik terkemuka karena jika tidak maka akan
menutup string karena saya menggunakan tanda kutip tunggal untuk mengelilingi string saya.
Jadi itulah judul saya dan
kemudian teksnya bisa jadi Anda tahu bahwa ini salah, tetapi tentu saja Anda dapat memiliki teks yang
Anda inginkan di sini, Anda juga dapat menjadi kurang bermoral jika Anda mau. Sekarang saya ingin menyajikan satu tombol di sini
dan tombol mengatakan sudah dijelaskan adalah objek yang Anda lewati untuk argumen argumen ketiga
yang memerlukan peringatan dan teks di sana bisa minta maaf dan gaya dapat dibatalkan dan Anda tidak perlu memberikan penangan
onPress, jika Anda tidak memberikan satu, satu-satunya hal yang akan terjadi adalah mengklik tombol itu akan
menutup peringatan yang baik-baik saja.
Jadi di sini, kami memberikan pengguna ketukan pada jari-jarinya sehingga untuk mengatakan dan memastikan bahwa tidak ada petunjuk
yang salah
diberikan dan saya ingin kembali
ke sini, jadi saya ingin menghentikan eksekusi fungsi jika kami memiliki nilai yang salah.
Jika kita berhasil melewati ini
jika blok, jadi jika kita memberikan petunjuk yang benar, maka kita ingin menghasilkan nomor acak baru.
Jadi di sini, saya ingin memeriksa apakah arahnya lebih rendah dan
sekarang kita tahu
itu benar, sehingga komputer harus menebak angka yang lebih rendah dari angka sebelumnya, maka kita tahu
bahwa angka acak baru harus dihasilkan ke arah dugaan saat ini adalah batas atas maksimum.
Jadi karena itu, kita dapat memanggil menghasilkan acak antara lagi dan jumlah minimum, baik itu mungkin satu tetapi bagaimana
jika pengguna sudah menebak nomor lain
di mana kita memberi tahu komputer bahwa itu terlalu kecil dan kemudian kita akan memiliki masalah
di sini karena yang terendah batas tidak selalu satu, bagaimana jika pengguna
menebak 10 dan kami berkata tidak, itu harus lebih besar?
Kalau begitu pengguna menebak 50 dan kami mengatakan itu harus lebih rendah dari itu, komputer tentu
saja dan
menebak lagi tetapi tidak boleh menebak di bawah 10 karena kami telah menyebutkan bahwa ini terlalu kecil sebelumnya.
Jadi maksimum dan minimum kami saat ini harus menyesuaikan dari waktu ke waktu karena kami memberikan petunjuk mengenai apakah angka yang ditebak
komputer terlalu kecil atau terlalu besar.
Jadi karena itu, kita dapat menggunakan pengait lain yang disediakan oleh React dan itulah pengait useRef.
Sekarang Anda mungkin tahu hook itu sebagai hook yang memungkinkan Anda untuk membuat objek yang dapat Anda ikat ke input,
jadi ke elemen input Anda di jsx untuk mendapatkan akses ke mereka dalam kode Anda dan itu
salah satu cara menggunakannya tetapi useRef juga memungkinkan Anda untuk melakukan sesuatu yang keren.
Hal ini memungkinkan Anda untuk menentukan nilai yang bertahan rendering ulang komponen, sehingga yang bertahan
bahwa komponen ini dibangun kembali dan itulah
yang kami butuhkan di sini karena kami ingin login minimum dan maksimum yang dapat kami ubah
tetapi yang tidak dibuat ulang hanya karena komponen dirender lagi.
Jadi di sini di bagian atas komponen ini, setelah menginisialisasi keadaan, kita dapat membuat konstanta
baru, currentLow mungkin di mana useRef adalah satu dan kemudian konstanta, currentHigh di mana useRef adalah 100, ini adalah batas awal kami
yang kami gunakan untuk acak nomor dan sekarang kami dapat memperbarui referensi ini
di sini.
Jadi kita tahu arahnya harus lebih rendah, apa yang bisa
kita lakukan dalam kasus itu, daripada langsung menghasilkan nomor baru, kita dapat mengatur currentHigh. saat ini, karena referensi yang dihasilkan oleh
Bereaksi adalah objek yang memiliki properti saat ini di mana nilai aktual disimpan,
jadi kami menetapkan
arus sama dengan tebakan saat ini.
Jadi yang kami katakan adalah jika saya memberi tahu Anda, komputer yang angka yang Anda duga terlalu besar dan Anda
harus menebak yang lebih rendah, maka saya tahu angka ini yang saya duga adalah arus saya sekarang. Tinggi, angka yang benar dapat ' t lebih tinggi
dari yang ini, jadi saya
menyimpan angka yang baru saya duga sebagai tinggi saya saat ini.
Dan lagi, konstanta referensi ini di sini tidak diregenerasi ketika komponen ini dibuat lagi, sebaliknya
jika mereka telah diinisialisasi sekali, sedikit seperti keadaan sebenarnya, maka mereka disimpan terlepas dari komponen
itu dan Bereaksi mengakui bahwa mereka telah diinisialisasi dan itu tidak akan membuat
ulang mereka melainkan menginisialisasi currentHigh dengan nilai yang disimpan sebelumnya.
Jadi agak seperti jika Anda mengelola ini dalam keadaan, perbedaannya dengan keadaan alih-alih jika Anda mengubah nilai yang disimpan
di sana, komponen tidak dirender ulang karena kami tidak menginginkannya di sini.
Saya tidak ingin merender ulang komponen itu hanya karena saya menyimpan tinggi baru, yang tidak berdampak pada pandangan
saya, pada kode jsx saya,
itu hanya berdampak pada logika saya tetapi untuk itu, saya tidak perlu merender
ulang komponen, itu sebabnya saya menggunakan referensi di sini alih-alih keadaan.
Jadi itu terjadi jika lebih rendah, jika kita
memberi tahu komputer bahwa tebakan itu terlalu kecil dan jumlah sebenarnya harus lebih
tinggi, harus lebih
besar, baik dalam hal ini kita menetapkan arus rendah ke tebakan saat ini karena kita tahu kami memiliki batas
bawah.
Dan sekarang tujuannya atau triknya adalah untuk menghasilkan angka acak baru yang memperhitungkan batasan-batasan ini, jadi di
mana kita
menggunakan low saat ini dengan ref kita dan kemudian. saat ini sebagai minimum dan saat ini Tinggi. saat ini sebagai maksimum dan saya
ingin mengecualikan tebakan saat ini sehingga kami tidak dapat menebak angka yang sama lagi di sini, sehingga untuk peran
selanjutnya, kami pasti akan mendapatkan nomor yang berbeda. Jadi itu adalah sesuatu yang saya simpan di angka berikutnya
yang konstan, ini dihasilkan
di sini ketika
pengendali tebakan berikutnya dijalankan yang terjadi ketika kita mengetuk salah satu tombol ini.
Dan sekarang angka berikutnya adalah angka berikutnya yang ingin
kita gunakan, jadi sekarang apa yang bisa kita lakukan adalah memanggil set tebakan saat ini dan tambahkan
nomor berikutnya, sekarang komponen akan dirender ulang dan akan menampilkan tebakan berikutnya. Jadi mari kita coba, untuk saat ini kami tidak
memiliki permainan yang
sudah lewat, tapi setidaknya kami bisa mencoba menebak angka di sini.
Jadi saya memasukkan 53 sebagai nomor
saya, sekarang kita mulai dan komputer menebak 85.
Jika sekarang saya katakan lebih besar, kami mendapat peringatan itu karena kami berbohong, kami memiliki angka 53, jadi tebakannya terlalu
tinggi, itu harus lebih rendah.
Sekarang 28, yah itu terlalu rendah, itu harus lebih besar.
Jadi jika saya mengetuk lebih rendah, saya mendapatkan peringatan, jika saya mengetuk lebih besar, kita naik sekarang
78 dan sekarang pada saat ini, 23, tebakan sebelumnya akan menjadi batas bawah kita dan sekarang
ketika saya mengetuk lebih rendah, 78 tebakan saat ini akan menjadi batas atas
kita, jadi tebakan berikutnya tentu tidak akan di atas 78 dan tidak di bawah 23 tetapi masih terlalu
rendah, itu terlalu besar maksud saya, itu
terlalu rendah jadi mari kita
gunakan yang
lebih besar, lebih rendah dan
itu akan menjadi yang benar .
Sekarang
untuk saat ini kami tidak memiliki apa pun yang memeriksa apakah
komputer menebak dengan benar.
Jadi itulah hal berikutnya yang harus kita laksanakan di sini.