პროგრამირების საფუძვლები › დამწყები
პროექტი: რიცხვის გამოცნობის თამაში
ეს პროექტი CodeQuest Pro-ს ნაწილია
Pro ხსნის სკოლის ყველა კურსს და თამაშის ყველა ლეველს, ვიდეოს და პროექტს. ერთჯერადი გადახდა, გამოწერის გარეშე.
დამწყები დონე დაასრულე. ახლა დროა, ყველაფერი ერთ ნამდვილ პროგრამაში გააერთიანო: პატარა თამაშში, რომელიც მეგობარს შეგიძლია აჩვენო.
რას ააწყობ
კომპიუტერი შემთხვევით ირჩევს რიცხვს 1-დან 100-მდე. მოთამაშე ველში წერს ვარაუდს და აჭერს ღილაკს. პროგრამა პასუხობს: „ჩაფიქრებული რიცხვი მეტია“, „ნაკლებია“ ან „გამოიცანი 7 ცდაში!“.
მოთხოვნები:
- რიცხვი შემთხვევით ირჩევა, 1-დან 100-ის ჩათვლით.
- ყოველ ვარაუდზე მინიშნება: მეტია ან ნაკლებია.
- ცდები ითვლება და გამარჯვებისას იბეჭდება.
- არასწორი შეტანა (ცარიელი, ტექსტი, 1–100-ის გარეთ) ცდად არ ითვლება და მოთამაშე გასაგებ შეტყობინებას იღებს.
- გამარჯვების შემდეგ ღილაკი „ახალი თამაში“ ყველაფერს თავიდან იწყებს.
ნაბიჯი 1: შემთხვევითი რიცხვი
JavaScript-ში Math.random() აბრუნებს შემთხვევით ათწილადს 0-დან 1-მდე: მაგალითად 0.4271. 1-დან 100-მდე მთელი რიცხვი ასე მიიღება:
Math.random() * 100იძლევა რიცხვს 0-დან 99.99…-მდე.Math.floorქვემოთ ამრგვალებს: 0-დან 99-მდე.+ 1გადაწევს: 1-დან 100-მდე.
გაუშვი რამდენჯერმე: ყოველ ჯერზე სხვა რიცხვი უნდა მიიღო.
ნაბიჯი 2: ერთი ვარაუდის შემოწმება
ჯერ თამაშის „გული“ ააწყე ფუნქციად, ღილაკებისა და ველების გარეშე. ფუნქცია იღებს ვარაუდს და ჩაფიქრებულ რიცხვს და აბრუნებს მინიშნებას. ასე მას ცალკე შეამოწმებ, როგორც კალკულატორის თავში.
სავარჯიშო
დაწერე ფუნქცია hint(guess, secret), რომელიც აბრუნებს "მეტია"-ს, თუ ჩაფიქრებული რიცხვი ვარაუდზე მეტია, "ნაკლებია"-ს, თუ ნაკლებია, და "სწორია"-ს, თუ ტოლია. შეამოწმე სამივე შემთხვევა.
💡 მინიშნება
სამი შემთხვევა, if / else if / else. ყურადღება მიაქციე მიმართულებას: თუ secret > guess, მოთამაშემ მეტი უნდა სცადოს.
✅ ამოხსნის ნახვა
function hint(guess, secret) {
if (secret > guess) {
return "მეტია";
} else if (secret < guess) {
return "ნაკლებია";
}
return "სწორია";
}
console.log(hint(30, 42));
console.log(hint(50, 42));
console.log(hint(42, 42));ნაბიჯი 3: შეტანის შემოწმება
მოთამაშე ყველაფერს ჩაწერს: ცარიელ ველს, „ორმოცს“, 500-ს, 7.5-ს. შეტანის თავში ნასწავლით დაწერე ფუნქცია, რომელიც ტექსტს ამოწმებს.
სავარჯიშო
დაწერე ფუნქცია parseGuess(text). თუ ტექსტი მთელი რიცხვია 1-დან 100-მდე, დააბრუნოს ეს რიცხვი, სხვა შემთხვევაში null. Number.isInteger(n) ამოწმებს, მთელია თუ არა რიცხვი.
💡 მინიშნება
ჯერ ცარიელი ტექსტი (text.trim() === ""), მერე let n = Number(text) და შემოწმება Number.isInteger(n) && n >= 1 && n <= 100.
✅ ამოხსნის ნახვა
function parseGuess(text) {
if (text.trim() === "") {
return null;
}
let n = Number(text);
if (Number.isInteger(n) && n >= 1 && n <= 100) {
return n;
}
return null;
}
console.log(parseGuess("42"));
console.log(parseGuess(""));
console.log(parseGuess("ათი"));
console.log(parseGuess("500"));
console.log(parseGuess("7.5"));ნაბიჯი 4: თამაში ერთად
ახლა ნაწილები ერთად დააკავშირე გვერდზე: ველი, ღილაკი და ტექსტი, რომელშიც პასუხი იწერება. ქვემოთ მოცემულია სრული თამაში. გაუშვი, ითამაშე, და მერე წაიკითხე კოდი: ის მხოლოდ იმას იყენებს, რაც ამ დონეზე ისწავლე, პლუს ველისა და ღილაკის რამდენიმე ხაზს შეტანის თავიდან.
ნაბიჯი 5: გააუმჯობესე
თამაში მუშაობს. აირჩიე სულ მცირე ორი გაუმჯობესება და თვითონ განახორციელე:
- ცდების ლიმიტი: 7 ცდის შემდეგ თამაში მთავრდება და ჩაფიქრებული რიცხვი ჩანს.
- ცდების ისტორია: მასივი, რომელშიც ყველა ვარაუდი ინახება და ეკრანზე იბეჭდება.
- გამეორების დაჭერა: თუ მოთამაშე ერთსა და იმავე რიცხვს ორჯერ წერს, ცდა არ ითვლება.
- „ცხელა-ცივა“: თუ ვარაუდი 5-ზე ახლოსაა, დაამატე „ძალიან ახლოს ხარ!“.
- სირთულე: მოთამაშე ირჩევს დიაპაზონს: 1–10, 1–100 ან 1–1000.
რა უნდა გამოგივიდეს
- თამაში ირჩევს ახალ რიცხვს ყოველ ახალ თამაშზე.
- ყველა მოთხოვნა სრულდება, მათ შორის არასწორი შეტანის დამუშავება.
hintდაparseGuessცალკე ფუნქციებია და ტესტებით შემოწმებული.- სულ მცირე ორი გაუმჯობესება ნაბიჯი 5-იდან.
საინტერესო ფაქტი: თუ ყოველ ჯერზე დარჩენილი შუალედის შუა რიცხვს ასახელებ (50, მერე 25 ან 75…), ნებისმიერ რიცხვს 1-დან 100-მდე მაქსიმუმ 7 ცდაში გამოიცნობ. ამ ხერხს ორობითი ძებნა ჰქვია და შემდეგ დონეზე მას დაწვრილებით ისწავლი.