Вероватно сте већ наслутили тему овог чланка. Вероватно вам је познато погађање бројева и тражење начина да се то уради користећи Пајтон.
Научимо заједно како да од нуле креирамо игру погађања бројева.
Игра погађања бројева
Правила игре су једноставна. Корисник треба да погоди случајно одабран број унутар опсега од 1 до 100. То је цела филозофија.
Да ли је заиста тако једноставна?
Да, јесте.
Међутим, једна ствар је неопходна да би корисници могли ефикасно да погађају број. То су наговештаји. Неопходно је да обавестимо корисника да ли је његов покушај мањи или већи од тачног броја. Тако ће корисник знати у ком смеру треба да иде са следећим покушајем.
Игра се може учинити занимљивијом додавањем додатних функционалности, као што су ограничење броја покушаја, промена опсега, тајмер и слично.
Почетак са основном радном верзијом игре је обавезан. Након тога, можемо постепено додавати поменуте функције. У овом делу ћемо прво креирати основну верзију игре, а затим ћемо прећи на додавање нових функција.
Покушајте да креирате игру без слепог копирања кода. Прво ћу објаснити алгоритам. То ће вам помоћи да сами напишете код или да брзо разумете већ написан код.
Погледајмо алгоритам за креирање игре погађања бројева.
Алгоритам
Пре него што пређете на код, уверите се да разумете алгоритам.
- Дефинишите опсег бројева. Подразумевани опсег је 1-100, али га можете променити по жељи.
- Генеришите насумичан цео број из задатог опсега (1-100).
- Започните игру приказивањем поруке кориснику: „Погоди број између X и Y“. Поруку можете изменити како вам одговара.
- Иницијализујте променљиву на 0 да бисте пратили број покушаја које је корисник искористио за тачно погађање броја.
- Покрените бесконачну петљу.
- Затражите од корисника да унесе број.
- Ако је унети број једнак насумично генерисаном броју, честитајте кориснику жељеном поруком. На пример: „-> Честитам! Погодили сте број из 5 покушаја!“
- Прекините петљу након што честитате кориснику.
- Ако је унети број мањи од насумично генерисаног броја, пошаљите кориснику поруку: „-> Ваш број је мањи од траженог.“ или другу сличну поруку.
- Ако је унети број већи од насумично генерисаног броја, пошаљите кориснику поруку: „-> Ваш број је већи од траженог.“ или другу сличну поруку.
- На крају, увећајте број покушаја које је корисник искористио.
Након што сте видели алгоритам, код би вам већ требало да буде јаснији. Не брините ако не можете да га комплетно напишете. Међутим, важно је да разумете горе наведени алгоритам.
Време је да се посветимо коду. Пређимо одмах на програмирање.
Код
Да ли сте покушали да напишете код?
Ако јесте, и успели сте, одлично! Погледајте код испод и анализирајте га како бисте проширили своје знање.
Не брините ако нисте успели да напишете код. Погледајте код који следи и покушајте да га разумете. Покушајте да га прилагодите и напишите на свој начин за боље разумевање.
Дакле, погледајмо код.
import random class NumberGuessingGame: def __init__(self): ## definisanje opsega self.LOWER = 1 self.HIGHER = 100 ## metoda za generisanje slucajnog broja def get_random_number(self): return random.randint(self.LOWER, self.HIGHER) ## metoda za pocetak igre def start(self): ## generisanje slucajnog broja random_number = self.get_random_number() print( f"Pogodite nasumično generisan broj od {self.LOWER} do {self.HIGHER}") ## glavna logika igre chances = 0 while True: user_number = int(input("Unesite broj koji pretpostavljate: ")) if user_number == random_number: print( f"-> Čestitamo! Pogodili ste broj iz {chances + 1} pokušaj{'a' if chances > 1 else ''}!") break elif user_number < random_number: print("-> Vaš broj je manji od traženog broja") else: print("-> Vaš broj je veći od traženog broja") chances += 1 ## instanciranje i pokretanje igre numberGuessingGame = NumberGuessingGame() numberGuessingGame.start()
Из кода се може закључити неколико ствари.
- Опсег је дефинисан унутар __инит__ методе, како би се могао користити у осталим методама класе.
- Можемо га лако променити на једном месту, што ће аутоматски утицати на целу апликацију.
- Постоји посебна метода за генерисање случајног броја која се придржава принципа „раздвајања одговорности“. У овом случају, наша метода има мало кода, али се може проширити у будућности.
- На крају, користили смо класу, тако да су све методе везане за игру смештене унутар ње. Тако се може лако поново користити у другим апликацијама.
Све горе наведене тачке су у вези са писањем чистог кода. Требали бисмо настојати писати чист код који можете разумети чак и након много година.
Изглед игре током извршавања је следећи:
$ python number_guessing_game.py Pogodite nasumično generisan broj od 1 do 100 Unesite broj koji pretpostavljate: 50 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 75 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 90 -> Vaš broj je veći od traženog broja Unesite broj koji pretpostavljate: 85 -> Vaš broj je veći od traženog broja Unesite broj koji pretpostavljate: 80 -> Čestitamo! Pogodili ste broj iz 5 pokušaja!
Претпостављам да имате инсталиран Пајтон да бисте испробали горе наведени код.
Додатна Функција
Сада ћемо додати максималан број покушаја које корисник може имати за погађање броја. Ако корисник не погоди број у задатом броју покушаја, онда губи.
Како то да урадимо?
То је једноставан процес који се састоји од два корака. Да погледамо кораке.
- Дефинишите максималан број покушаја које корисник има да погоди број.
- Проверите да ли корисник има покушаја пре него што затражи унос. Ако корисник нема више покушаја, игра се завршава.
Следећи додатни код ће допунити ову функционалност.
- Додајте следећи код унутар __инит__ методе.
self.MAX_CHANCES = 10
- Додајте следећи услов пре него што корисник унесе следећу претпоставку.
if chances == self.MAX_CHANCES: print("-> Нажалост! Изгубили сте игру. Немате више покушаја.")
Сада пробајте игру без погађања тачног броја. Требало би да видите излаз сличан следећем:
$ python number_guessing_game.py Pogodite nasumično generisan broj od 1 do 100. Imate 10 pokušaja da pogodite. Unesite broj koji pretpostavljate: 1 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 2 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 3 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 4 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 5 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 6 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 7 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 8 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 9 -> Vaš broj je manji od traženog broja Unesite broj koji pretpostavljate: 10 -> Vaš broj je manji od traženog broja -> Нажалост! Изгубили сте игру. Немате више покушаја.
Одлично! Додали смо додатну функцију нашој игри. Али то није крај. Можете додати и друге функције како би игра била привлачнија. Сада је ваш ред. Само напред и учините је још бољом :).
Закључак
Креирали смо једноставну игру погађања бројева. Сада је ред на вас да се присетите игара које сте играли као деца. Направите их помоћу програмског језика и поделите их са пријатељима. Можемо дигитализовати већину наших игара из детињства.
Затим истражите Пајтон ИДЕ и онлајн компајлере да бисте покренули Пајтон код.
Срећно са кодирањем 🙂
Ако не можете да се заситите вирусних игара са речима, ево како да будете бољи у Вордл-у.
Да ли сте уживали читајући овај чланак? Шта кажете на то да га поделите са светом?