შესვლა

პროგრამირების საფუძვლები › დამწყები

პროექტი: რიცხვის გამოცნობის თამაში

პრაქტიკული პროექტი+100 XP👑 Pro

დამწყები დონე დაასრულე. ახლა დროა, ყველაფერი ერთ ნამდვილ პროგრამაში გააერთიანო: პატარა თამაშში, რომელიც მეგობარს შეგიძლია აჩვენო.

რას ააწყობ

კომპიუტერი შემთხვევით ირჩევს რიცხვს 1-დან 100-მდე. მოთამაშე ველში წერს ვარაუდს და აჭერს ღილაკს. პროგრამა პასუხობს: „ჩაფიქრებული რიცხვი მეტია“, „ნაკლებია“ ან „გამოიცანი 7 ცდაში!“.

მოთხოვნები:

  • რიცხვი შემთხვევით ირჩევა, 1-დან 100-ის ჩათვლით.
  • ყოველ ვარაუდზე მინიშნება: მეტია ან ნაკლებია.
  • ცდები ითვლება და გამარჯვებისას იბეჭდება.
  • არასწორი შეტანა (ცარიელი, ტექსტი, 1–100-ის გარეთ) ცდად არ ითვლება და მოთამაშე გასაგებ შეტყობინებას იღებს.
  • გამარჯვების შემდეგ ღილაკი „ახალი თამაში“ ყველაფერს თავიდან იწყებს.

ნაბიჯი 1: შემთხვევითი რიცხვი

JavaScript-ში Math.random() აბრუნებს შემთხვევით ათწილადს 0-დან 1-მდე: მაგალითად 0.4271. 1-დან 100-მდე მთელი რიცხვი ასე მიიღება:

JavaScript · სცადე თავად
  1. Math.random() * 100 იძლევა რიცხვს 0-დან 99.99…-მდე.
  2. Math.floor ქვემოთ ამრგვალებს: 0-დან 99-მდე.
  3. + 1 გადაწევს: 1-დან 100-მდე.

გაუშვი რამდენჯერმე: ყოველ ჯერზე სხვა რიცხვი უნდა მიიღო.

ნაბიჯი 2: ერთი ვარაუდის შემოწმება

ჯერ თამაშის „გული“ ააწყე ფუნქციად, ღილაკებისა და ველების გარეშე. ფუნქცია იღებს ვარაუდს და ჩაფიქრებულ რიცხვს და აბრუნებს მინიშნებას. ასე მას ცალკე შეამოწმებ, როგორც კალკულატორის თავში.

სავარჯიშო

დაწერე ფუნქცია hint(guess, secret), რომელიც აბრუნებს "მეტია"-ს, თუ ჩაფიქრებული რიცხვი ვარაუდზე მეტია, "ნაკლებია"-ს, თუ ნაკლებია, და "სწორია"-ს, თუ ტოლია. შეამოწმე სამივე შემთხვევა.

JavaScript · სცადე თავად
💡 მინიშნება

სამი შემთხვევა, if / else if / else. ყურადღება მიაქციე მიმართულებას: თუ secret > guess, მოთამაშემ მეტი უნდა სცადოს.

✅ ამოხსნის ნახვა
JavaScript
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) ამოწმებს, მთელია თუ არა რიცხვი.

JavaScript · სცადე თავად
💡 მინიშნება

ჯერ ცარიელი ტექსტი (text.trim() === ""), მერე let n = Number(text) და შემოწმება Number.isInteger(n) && n >= 1 && n <= 100.

✅ ამოხსნის ნახვა
JavaScript
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: თამაში ერთად

ახლა ნაწილები ერთად დააკავშირე გვერდზე: ველი, ღილაკი და ტექსტი, რომელშიც პასუხი იწერება. ქვემოთ მოცემულია სრული თამაში. გაუშვი, ითამაშე, და მერე წაიკითხე კოდი: ის მხოლოდ იმას იყენებს, რაც ამ დონეზე ისწავლე, პლუს ველისა და ღილაკის რამდენიმე ხაზს შეტანის თავიდან.

HTML · სცადე თავად

ნაბიჯი 5: გააუმჯობესე

თამაში მუშაობს. აირჩიე სულ მცირე ორი გაუმჯობესება და თვითონ განახორციელე:

  • ცდების ლიმიტი: 7 ცდის შემდეგ თამაში მთავრდება და ჩაფიქრებული რიცხვი ჩანს.
  • ცდების ისტორია: მასივი, რომელშიც ყველა ვარაუდი ინახება და ეკრანზე იბეჭდება.
  • გამეორების დაჭერა: თუ მოთამაშე ერთსა და იმავე რიცხვს ორჯერ წერს, ცდა არ ითვლება.
  • „ცხელა-ცივა“: თუ ვარაუდი 5-ზე ახლოსაა, დაამატე „ძალიან ახლოს ხარ!“.
  • სირთულე: მოთამაშე ირჩევს დიაპაზონს: 1–10, 1–100 ან 1–1000.

რა უნდა გამოგივიდეს

  • თამაში ირჩევს ახალ რიცხვს ყოველ ახალ თამაშზე.
  • ყველა მოთხოვნა სრულდება, მათ შორის არასწორი შეტანის დამუშავება.
  • hint და parseGuess ცალკე ფუნქციებია და ტესტებით შემოწმებული.
  • სულ მცირე ორი გაუმჯობესება ნაბიჯი 5-იდან.

საინტერესო ფაქტი: თუ ყოველ ჯერზე დარჩენილი შუალედის შუა რიცხვს ასახელებ (50, მერე 25 ან 75…), ნებისმიერ რიცხვს 1-დან 100-მდე მაქსიმუმ 7 ცდაში გამოიცნობ. ამ ხერხს ორობითი ძებნა ჰქვია და შემდეგ დონეზე მას დაწვრილებით ისწავლი.

📝 ჩემი შენიშვნა