Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

ПиГаме је популарна библиотека за креирање пројеката са Питхон-ом и пружа моћан скуп алата за развој игара. У овом чланку ћете научити како да направите старт мени и игру преко екрана за једноставну игру користећи ПиГаме.

Креирање једноставне игре

Пре него што креирате старт мени и игру преко екрана, хајде да прво направимо једноставну игру. У овој игри ћете контролисати карактер помоћу тастера са стрелицама и покушати да избегнете препреке. Да ствари буду једноставне, покушајте да не користите слике.

Да бисте започели, потребно је да увезете потребне модуле. Ви ћете користити пигаме модул за приступ функцијама ПиГаме-а. Да бисте инсталирали модул, можете користите менаџер пакета пип:

пип инсталирај пигаме

Сада када је наш модул спреман за употребу, хајде да направимо једноставну игру са играчем који може да се креће лево или десно помоћу тастера са стрелицама и препреке. Ако се сударите са препреком, игра ће се завршити. Ево кода за исто:

instagram viewer
увоз пигаме
пигаме.у томе()

ширина екрана = 750
сцреен_хеигхт = 450
екран = пигаме.дисплаи.сет_моде((ширина_екрана, висина_екрана))

препрека_к = 400
препрека_и = 400
ширина_препреке = 40
висина_препреке = 40
играч_к = 200
играч_и = 400
плаиер_видтх = 20
висина_играча = 20

докИстина:

задогађајинпигаме.догађај.добити():

иф евент.типе == пигаме. ОДУСТАТИ:
пигаме.одустати()
одустати()


кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_ЛЕФТ]:
играч_к -= 5
акокључеви[пигаме. К_ДЕСНО]:
играч_к += 5


ако је плаиер_к + плаиер_видтх > препрека_к и плаиер_к < препрека_к + ширина_препрекеиплаиер_и + плаиер_хеигхт > препрека_и и играч_и < препрека_и + висина_препреке:
гаме_овер = Истина


екран.филл((0, 0, 0))
пигаме.драв.рецт(екран, (255, 0, 0), (препрека_к, препрека_и, ширина_препреке, висина_препреке))
пигаме.драв.рецт(екран, (0, 255, 0), (плаиер_к, плаиер_и, плаиер_видтх, плаиер_хеигхт))
пигаме.приказ.ажурирање()

У горњем коду сте подесили прозор игре и декларисали променљиве игре. Такође сте управљали корисничким уносом и цртали елементе на екрану.

Креирање Старт менија

Сада када имате основну игру, хајде да направимо старт мени. Да бисте то урадили, мораћете да декларишете глобалну променљиву за стање игре. Ова променљива ће пратити тренутно стање игре, на пример да ли је старт мени активан или игра ради. Морате да додате ову променљиву на почетак кода игре:

гаме_стате = "старт_мену"

Затим ћете додати функцију за цртање старт менија на екран. Можете користити функције ПиГаме за цртање текста, дугмади и других елемената на екрану.

дефдрав_старт_мену():
екран.филл((0, 0, 0))
фонт = пигаме.фонт. СисФонт('ариал', 40)
титле = фонт.рендер('Моја игра', Истина, (255, 255, 255))
старт_буттон = фонт.рендер('Почетак', Истина, (255, 255, 255))
сцреен.блит (наслов, (сцреен_видтх/2 - титле.гет_видтх()/2, сцреен_хеигхт/2 - титле.гет_хеигхт()/2))
сцреен.блит (старт_буттон, (сцреен_видтх/2 - старт_буттон.гет_видтх()/2, сцреен_хеигхт/2 + старт_буттон.гет_хеигхт()/2))
пигаме.приказ.ажурирање()

Затим можете додати драв_старт_мену() функцију до главне петље игре.

докИстина: 

задогађајинпигаме.догађај.добити():
иф евент.типе == пигаме. ОДУСТАТИ:
пигаме.одустати()
одустати()

ако гаме_стате == "старт_мену":
драв_старт_мену()

ако гаме_стате == "игра":
кључеви = пигаме.кеи.гет_прессед()
# остатак кода

Сада ће старт мени бити нацртан на екрану. Последњи корак је руковање корисничким уносом. Можете додајте наредбу иф до главне петље игре да проверите да ли је корисник притиснуо дугме за покретање.

ако гаме_стате == "старт_мену":
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_СПАЦЕ]:
играч_к = 200
играч_и = 400
гаме_стате = "игра"
гаме_овер = Фалсе

Са овим кодом, игра ће почети када корисник притисне дугме за покретање.

Имплементација Гаме Овер Сцреен

Сада када имате старт мени, хајде да креирамо игру преко екрана. Ова функција треба да прикаже коначан резултат и поруку о завршетку игре.

дефдрав_гаме_овер_сцреен():
екран.филл((0, 0, 0))
фонт = пигаме.фонт. СисФонт('ариал', 40)
титле = фонт.рендер('Крај игре', Истина, (255, 255, 255))
рестарт_буттон = фонт.рендер('Р - Поново покрени', Истина, (255, 255, 255))
куит_буттон = фонт.рендер('П - Прекини', Истина, (255, 255, 255))
сцреен.блит (наслов, (сцреен_видтх/2 - титле.гет_видтх()/2, сцреен_хеигхт/2 - титле.гет_хеигхт()/3))
сцреен.блит (рестарт_буттон, (сцреен_видтх/2 - рестарт_буттон.гет_видтх()/2, сцреен_хеигхт/1.9 + рестарт_буттон.гет_хеигхт()))
сцреен.блит (куит_буттон, (сцреен_видтх/2 - куит_буттон.гет_видтх()/2, сцреен_хеигхт/2 + куит_буттон.гет_хеигхт()/2))
пигаме.приказ.ажурирање()

Затим можете додати ову функцију у главну петљу игре.

ако гаме_стате == "старт_мену":
драв_старт_мену()
ако гаме_стате == "крај игре":
драв_гаме_овер_сцреен()

ако гаме_стате == "игра":
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_ЛЕФТ]:
играч_к -= 5
акокључеви[пигаме. К_ДЕСНО]:
играч_к += 5

ако је плаиер_к + плаиер_видтх > препрека_к и плаиер_к < препрека_к + ширина_препрекеиплаиер_и + плаиер_хеигхт > препрека_и и играч_и < препрека_и + висина_препреке:
гаме_овер = Истина
гаме_стате = "крај игре"

Коначно, морате да управљате корисничким уносом да бисте управљали избором корисника. Можете додати иф наредбу у главну петљу игре да бисте проверили да ли је корисник притиснуо дугме за поновно покретање или излаз.

ако гаме_стате == "старт_мену":
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_СПАЦЕ]:
гаме_стате = "игра"
играч_к = 200
играч_и = 400
гаме_стате = "игра"
гаме_овер = Фалсе

ако гаме_стате == "крај игре":
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_р]:
гаме_стате = "старт_мену"
акокључеви[пигаме. К_к]:
пигаме.одустати()
одустати()

Са овим кодом, игра ће се поново покренути када корисник притисне дугме 'Р' и затворити се када корисник притисне дугме 'К' на тастатури.

Испод је цео код:

увоз пигаме

пигаме.у томе()
ширина екрана = 750
сцреен_хеигхт = 450
екран = пигаме.дисплаи.сет_моде((ширина_екрана, висина_екрана))
препрека_к = 400
препрека_и = 400
ширина_препреке = 40
висина_препреке = 40
играч_к = 200
играч_и = 400
плаиер_видтх = 20
висина_играча = 20
гаме_стате = "старт_мену"

дефдрав_старт_мену():
екран.филл((0, 0, 0))
фонт = пигаме.фонт. СисФонт('ариал', 40)
титле = фонт.рендер('Моја игра', Истина, (255, 255, 255))
старт_буттон = фонт.рендер('Почетак', Истина, (255, 255, 255))
сцреен.блит (наслов, (сцреен_видтх/2 - титле.гет_видтх()/2, сцреен_хеигхт/2 - титле.гет_хеигхт()/2))
сцреен.блит (старт_буттон, (сцреен_видтх/2 - старт_буттон.гет_видтх()/2, сцреен_хеигхт/2 + старт_буттон.гет_хеигхт()/2))
пигаме.приказ.ажурирање()

дефдрав_гаме_овер_сцреен():
екран.филл((0, 0, 0))
фонт = пигаме.фонт. СисФонт('ариал', 40)
титле = фонт.рендер('Крај игре', Истина, (255, 255, 255))
рестарт_буттон = фонт.рендер('Р - Поново покрени', Истина, (255, 255, 255))
куит_буттон = фонт.рендер('П - Прекини', Истина, (255, 255, 255))
сцреен.блит (наслов, (сцреен_видтх/2 - титле.гет_видтх()/2, сцреен_хеигхт/2 - титле.гет_хеигхт()/3))
сцреен.блит (рестарт_буттон, (сцреен_видтх/2 - рестарт_буттон.гет_видтх()/2, сцреен_хеигхт/1.9 + рестарт_буттон.гет_хеигхт()))
сцреен.блит (куит_буттон, (сцреен_видтх/2 - куит_буттон.гет_видтх()/2, сцреен_хеигхт/2 + куит_буттон.гет_хеигхт()/2))
пигаме.приказ.ажурирање()

докИстина:
задогађајинпигаме.догађај.добити():
иф евент.типе == пигаме. ОДУСТАТИ:
пигаме.одустати()
одустати()
ако гаме_стате == "старт_мену":
драв_старт_мену()
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_СПАЦЕ]:
играч_к = 200
играч_и = 400
гаме_стате = "игра"
гаме_овер = Фалсе
елиф гаме_стате == "крај игре":
драв_гаме_овер_сцреен()
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_р]:
гаме_стате = "старт_мену"
акокључеви[пигаме. К_к]:
пигаме.одустати()
одустати()

елиф гаме_стате == "игра":
кључеви = пигаме.кеи.гет_прессед()
акокључеви[пигаме. К_ЛЕФТ]:
играч_к -= 5
акокључеви[пигаме. К_ДЕСНО]:
играч_к += 5

ако је плаиер_к + плаиер_видтх > препрека_к и плаиер_к < препрека_к + ширина_препрекеиплаиер_и + плаиер_хеигхт > препрека_и и играч_и < препрека_и + висина_препреке:
гаме_овер = Истина
гаме_стате = "крај игре"

екран.филл((0, 0, 0))
пигаме.драв.рецт(екран, (255, 0, 0), (препрека_к, препрека_и, ширина_препреке, висина_препреке))
пигаме.драв.рецт(екран, (0, 255, 0), (плаиер_к, плаиер_и, плаиер_видтх, плаиер_хеигхт))
пигаме.приказ.ажурирање()

елиф крај игре:
гаме_стате = "крај игре"
гаме_овер = Фалсе

Код почиње увозом пигаме модул и иницијализује га. Затим креира прозор игре и декларише неопходне варијабле игре, укључујући позицију играча и препреке, димензију и стање игре.

Код дефинише две функције, драв_старт_мену() и драв_гаме_овер_сцреен(), да нацртате старт мени и игру преко екрана. Ове функције користе функције ПиГаме за цртање текста и дугмади на екрану.

Главна петља игре почиње руковањем догађајима и провером стања игре. Ако је стање игре старт_мену, мени Старт је нацртан на екрану. Ако је стање игре крај игре, екран преласка игре се повлачи на екран. Ако је стање игре било шта друго, игра се ажурира и извлачи играча и препреку на екран.

Игра се ажурира притиском на тастере и провером судара између играча и препреке. Ако дође до судара, игра поставља крај игре флаг то Истина и поставља стање игре на крај игре.

Након што се игра ажурира, играч и препрека се привлаче на екран. На крају, код проверава да ли је крај игре заставица је постављена, а ако јесте, ресетује заставицу и поставља стање игре на крај игре.

Овај процес се понавља све док се прозор игре не затвори.

Повећајте ангажовање корисника помоћу визуелно привлачног корисничког интерфејса

Коришћење добро дизајнираног корисничког интерфејса (УИ) може значајно повећати ангажовање корисника у игрици ПиГаме. Јасан и лак за читање фонт, визуелно привлачна графика, лака навигација и повратне информације корисника су важни елементи које треба узети у обзир при дизајнирању корисничког интерфејса. Имплементацијом ових елемената можете креирати кориснички интерфејс који помаже да играч остане заинтересован и уроњен у игру.

Не заборавите да тестирате свој кориснички интерфејс и прикупите повратне информације од играча како бисте били сигурни да је ефикасан у повећању ангажовања. Све у свему, издвајање времена за креирање снажног корисничког интерфејса може значајно побољшати играчево искуство и уживање у вашој игри.