Графика в Python 1 Koordinatalar tizimi kelib chiqishi X (0,0) y x (x, y) Y К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 2 Koordinatalarni aniqlash (0,0) tayanch nuqtasi ( 100 , 100 ) ? ) ( 50.150 __ ( 100 , 200 ) ? Y К.Ю. Поляков, 2017 -2018 X ? ( 200 , 200) 50 ? ( 200 , 15 0) ( 200 , 2 50 )? ? (3 00 , 100 ) 100 ( 3? 5 0 , 15 0) (3 00 , 200 ? ) http://kpolyakov.spb.ru Графика в Python 3 Ranglarni boshqarish Grafik modul ulanishi: grafik importidan * grafik modulining Chiziq rangi: qalam rangi ( qizil ) oq, qora, kulrang, ko'k, ko'k, zangori, yashil, sariq, qizil, to'q sariq, jigarrang, jigarrang, binafsha, Chiziq qalinligi: binafsha, ...http://bit.ly/2mNrkoq qalam o'lchami ( 2 ) To'ldirish rangi: cho'tka rangi ( К.Ю. "yashil" Поляков, 2017 -2018 ) http://kpolyakov.spb.ru Графика в Python 4 Ranglarni boshqarish ( RGB ) RGB rangi : "sariq" qalam rangi ( 255 , 255 , 0 ) R( G ( yashil B ( ko'k ) qizil ) ) 0..255 0..255 0..255 cho'tka rangi 255 ) qalam rangi ( 255 ) cho'tka rangi 255 ) qalam rangi ( К.Ю. Поляков, 2017 -2018 ( 255 , 0 , magenta 0 , 255 , "ko'k" ( 255 , 255 , 0 , 0 , 0 ) "oq" "qora" http://kpolyakov.spb.ru Графика в Python 5 Primitivlar (oddiy shakllar) (x,y) ( x 1, y 1) ( x 1, y 1) ( x 5, y 5) penColor ( 0 , 0 , 255 ) nuqta (x, y) ( x 2, y 2) ( x 2, y 2) ( x 3, y 3) ( x 4, y К.Ю. Поляков, 2017 -2018 4) penColor ( 0 , 255 , 0 ) qator (x1, y1, x2, y2) penColor ( 255 , 0 , 0 ) To (x1, y1) lineTo (x2, y2) lineTo (x3, y3) lineTo (x4, y4) lineTo (x5, y5) http://kpolyakov.spb.ru Графика в Python 6 Primitivlar (oddiy shakllar) (10, 20) ( 50 , 40 ( 10 , 10 ) ) ( 10 , 5 ) ,3 (050 0) (5 0 , 5 0) R=20 К.Ю. Поляков, 2017 -2018 penColor ( "ko'k" ) brushColor ( "sariq" ) to'rtburchaklar ( 10 , 20 , 50 , 40 ) penColor ( "ko'k" ) brushColor ( "magenta" ) ko'pburchak ( [( 10 , 10 ), ( 50 , 50 ), ( 10 , 50 ), ( 10 , 10 )] ) penColor ( "qizil" ) brushColor ( "yashil" ) doira ( 50 , 30 , 20 ) http://kpolyakov.spb.ru Графика в Python 7 Misol grafik importidan * _ (200, 50) p en Rang ( "magenta" ) b shoshilinch Rang ( "ko'k" ) (100, 100) r to'rtburchak ( 100 , 100 , 300 , 200 ) b shoshilinch Rang ( "sariq" ) ( 200 , 150 ) (300, 200) ko'pburchak ([( 100 , 100 ), ( 200 , 50 ), ( 300 , 100 ), ( 100 , 100 )]) p en Rang ( "oq" ) К.Ю. Поляков, 2017 -2018 b shoshilinch Rang (http://kpolyakov.spb.ru "yashil" Графика в Python 8 Vazifalar "3": "Uy" "4": "Baqa" К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 9 Vazifalar "5": "Toj" К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 10 dasturlash : Grafika 2018-03-22 _ Protseduralar К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 11 Protseduralar Vazifa : figurani yarating: ? Ma'lum usullar bilan hal qilish mumkinmi ? Xususiyat : uchta o'xshash raqam. umumiy: o'lchamlar, burilish burchagi farqlar: koordinatalar, rang ? Qancha koordinata o'rnatishingiz kerak ? К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 12 Protseduralar (kichik dasturlar) Jarayon ba'zi harakatlarni bajarish uchun mo'ljallangan yordamchi algoritmdir. Ilova : • dasturning turli joylarida bir xil harakatlarni bajarish • yaxshiroq tushunish uchun dasturni (yoki boshqa protsedurani) pastki vazifalarga bo'lish Vazifa Kichik vazifa 1 1.1 1.2 К.Ю. Поляков, 2017 -2018 1.3 2- 2.1 _ 2.2 _ 2.3 _ Quyi vazifa 3 3.1 _ 3.2 _ 3.3 _ http://kpolyakov.spb.ru Графика в Python 13 Jarayonni qanday qurish kerak? • bir xil yoki o'xshash harakatlarni ajratib ko'rsatish ( uchta shakl ) • ularda umumiy ( o'lchamlari, shakli, burilish burchagi ) va farqlarni ( koordinatalar, rang ) toping. • farqlarni o'zgaruvchilar sifatida belgilang, ular protsedura ! Parametrlar - protseduraning ishlashi bog'liq bo'lgan ma'lumotlar . (x,y60) 60 ( x , y 100 ) К.Ю. Поляков, 2017 -2018 Variantlar: x, y - burchak koordinatalari ( x +100, y ) c - rangni to'ldirish http://kpolyakov.spb.ru Графика в Python 14 Jarayon (x,y60) 60 belgilash _ _ _ (x,y ) Ism 100 ( x +100, y ) variantlari def treug (x, y, c): cho'tka rangi (c) chekinis h ko'pburchak ( [(x,y), (x,y60 ), (x+ 100 ,y), (x,y)] ) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 15 Jarayoni bilan dastur 60 ( 100 , 100 ) , ( 200 100 ) 100 (2 00 , 1 60) protsedura chaqiruvlari К.Ю. Поляков, 2017 -2018 grafik importidan * def treug (x, y, c): cho'tka rangi (c) ko'pburchak ([(x,y),(x,y60 ), (x+ 100 ,y),(x,y)] ) penColor ( "qora" ) treug ( 100 , 100 , "ko'k" ) treug ( 200 , 100 , "yashil" ) treug ( 200 , 160 , "qizil" ) yugurish ()argumentlar (parametr qiymatlari) http://kpolyakov.spb.ru Графика в Python 16 Vazifalar " 3 ": Bitta protseduradan foydalanib, rasm tuzing. " 4 ": Bitta protseduradan foydalanib, rasm tuzing. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 17 Vazifalar " 5 ": Bitta protseduradan foydalanib, rasm tuzing. "6": Bitta protseduradan foydalanib, rasm tuzing. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 18 dasturlash : Grafika 3 . Velosipedlar К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 19 Looplardan foydalanish 40 100 160 40 ? Nima o'zgarmoqda ? doira (40, 40, 20) doira (100, 40, 20) doira (160, 40, 20) x ... ? qanday o'zgaradi? 40 "5 marta x= 40 uchun i ichida diapazon ( 5 bajaring" ): doira (x, 40 , 20 ) x x +=+= 6060 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 20 Looplardan foydalanish 40 100 160 40 10 0 1 60 1- qator : ? 2-qator uchun qanday o'zgarishlar ? x= 40 uchun i ichida diapazon ( 5Siz ):qila olasizmi? bilan protsedura doira (x, 40 40 , 20 ) parametr y ! y x += 60 ! К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 21 Looplardan foydalanish grafik importidan * _ def qatori (y): x= 40 men uchun _ diapazon ( 5 ( 5 ): uchun i ichida diapazon ): doira (x, y, 20 ) (x, y, 20 ) x +=doira 60 x y=+= 4060 k uchun _ diapazon (protsedura 3 ): chaqiruvi qator (y) y += 60 60 ga tushdi yugurish () К.Ю. Поляков, 2017 -2018 tartib http://kpolyakov.spb.ru Графика в Python 22 Vazifalar " 3 ": Klaviaturadan N raqamini kiriting va 5 ta doiradan iborat N qatorni chizing. Misol ( N = 3 ) : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 23 Vazifalar "4": Klaviaturadan N raqamini kiriting va doiralardan N dan N gacha bo'lgan to'rtburchaklar o'lchamini chizing . Misol ( N = 3 ) : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 24 Vazifalar " 5 ": Klaviaturadan N raqamini kiriting va balandligi N bo'lgan doiralardan teng yonli uchburchak chizing. Har bir qator o'z rangiga bo'yalgan bo'lishi kerak. Misol ( N = 3 ) : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 25 Vazifalar-2 " 3 ": Klaviaturadan N raqamini kiriting va 5 ta rombdan iborat N vertikal qatorni chizing. Misol ( N = 2) : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 26 Vazifalar-2 "4": sikl va protseduralardan foydalanib, naqsh chizing. Klaviaturadan N naqshning takrorlanish sonini kiriting. Misol ( N = 3) : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 27 Vazifalar-2 "5": sikl va protseduralardan foydalanib, naqsh chizing. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 28 dasturlash : Grafika 4 . Chiqish К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 29 Chiqish N qator ( N=5) ( x 1, y 1) ? h ni qanday x 1 +h topish mumkin ? h h x2 x1 N 1 X ni tsiklda o'zgartiring : chiziq (x, y1, x, y2) ( x 2, y 2) to'rtburchak (x1, y1, x2, y2) chiziq (x1+h, y1, x1+h, y2) chiziq (x1+2*h, y1, x1+2*h, y2) chiziq (x1+3*h, x y1, x1+3*h, x y2) ... 2017 -2018 К.Ю. Поляков, http://kpolyakov.spb.ru Графика в Python 30 Chiqish N qator ( N=5) ( x 1, y 1) o'zgarmoqd a! chiziq x (x, y1,x x, y2) ? Qanday x=? h ( x 2, y 2) o'zgarmoqda ? 1-qator uchun x = x1 + h men uchun _ diapazon (N): chiziq (x, y1, x, y2) keyingi qator x += h uchun К.Ю. Поляков, 2017 -2018 " N marta bajaring" ? Nima yomon ? http://kpolyakov.spb.ru Графика в Python 31 Chiqish grafik importidan * _ x1 = 100 ; y1 = 100 x2 = 300 ; y2 = 200 N= 10 to'rtburchak (x1,y1,x2,y2) ( x 2 , y h = (x2-x1)/(N+1) x = x1 + h 2) men uchun _ diapazon (N): chiziq (x, y1, x, y2) x += h yugurish () N qator ( x 1, y 1) h К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 32 Murakkab inkubatsiya a ( x 1, y 1) ( x 3+ a , y 1) ? Qanday topish mumkin a va h ? a x1 x2 ( x 2, y 2) h ( x 3, y 2) x3 x2 h N 1 chiziq ( x1+h, y1, x1+ga, y2) ; chiziq ( x1+2*h, y1, x1+2*ga, y2) ; chiziq ( x1+3*h, y1, x1+3*ga, y2) x X qanday o'zgaradi xa ; ? Boshida: Bir tsiklda: ... ? x = x1 + h К.Ю. Поляков, 2017 -2018 x += h http://kpolyakov.spb.ru Графика в Python 33 Juda murakkab soya ( x 1, y 1) h ?h topiladi va h y ? x hy N x qanday x2 x1 hx N 1 y2 y1 hy N 1 Boshida: x = x1+hx y = y1+hy Bir tsiklda: x + = hx y += hy ( x 2, y 2) chiziq ( x1, y1+hy, x1+hx, y1+hy) ; chiziq( x1, y1+2*hy, x1+2*hx, y1+2*hy) ; chiziq( x1, y1+3*hy, x1+3*hx, y1+3*hy) y x y ; К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 34 Vazifalar " 3 ": Klaviaturadan satrlar sonini kiriting , rasm tuzing va inkubatsiya qiling : "4": Klaviaturadan qatorlar sonini kiriting , raqamni yarating va inkubatsiya qiling : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 35 Vazifalar "5": klaviaturadan qatorlar sonini kiriting va raqamni yarating: " 6 ": Klaviaturadan qatorlar sonini kiriting va raqamni yarating: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 36 dasturlash : Grafika 5 . Hududlarni to'ldirish К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 37 Turli ranglar bilan to'ldiring ( x 1, y 1) x x+ h N qator h kulrang: R=G=B cho'tka rangi (c, c, c) to'rtburchak (x, y1, x+h, y2)o'zgartirish bosqichi: Rangni ( x 2, y 2) hc = 255 // N x = x1; c = 0 uchun i ichida diapazon (N): cho'tka rangi (c, c, c) to'rtburchak (x, y1, x+h, y2) x += h; c += hc К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 38 Vazifalar "3": Klaviaturadan chiziqlar sonini kiriting va barcha maydonlarni turli xil ranglar bilan to'ldirib, raqamni yarating. "4": Klaviaturadan chiziqlar sonini kiriting va barcha maydonlarni turli ranglar bilan to'ldirib, raqamni yarating. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 39 Vazifalar "5": Klaviaturadan chiziqlar sonini kiriting va barcha maydonlarni turli ranglar bilan to'ldirib, raqamni yarating. yoki "6": Klaviaturadan chiziqlar sonini kiriting va barcha maydonlarni turli ranglar bilan to'ldirib, raqamni yarating. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 40 dasturlash : Grafika 6 . Chizma funktsiyalari К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 41 Funktsional grafiklar Vazifa: y = x 2 funksiya grafigini tuzing -2 dan 2 gacha bo'lgan oraliqda . Y Tahlil: maksimal qiymat ymax _ = 4 da x = ±2 minimal qiymat ymin _ = 0 da x = 0 X Muammo: funktsiya matematik koordinatalar tizimida berilgan, u piksellarda koordinatalarini ko'rsatib, ekranda qurish kerak . К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 42 Koordinatani o'zgartirish Matematik koordinata tizimi (0, 0) Y x (0, 0) _ y0 y x (x, y) y e ( x e, y e) e X k - masshtab (ekrandagi bitta segment tasvirining uzunligi) К.Ю. Поляков, 2017 -2018 Ekran koordinata tizimi (piksel) x 0 x e= x0 _ + kx y e=y 0- http://kpolyakov.spb.ru Графика в Python 43 Koordinata o'qlari (0, 0) x 0 ( x 0, 0) _ y0 150 (0 ,y 0 ) ( x 0, y 0 +20 ) ( x 0 +150 , y 0) chiziq ( 0 , y0, x0+ 150 , y0) chiziq (x0, 0 , x0, y0+ 20 ) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 44 Koordinata o'qlarini chizish grafik importidan * x0 = 150 # kelib chiqishi y0 = 250 k = 50 # masshtab xmin = -2 ; xmax = 2 # x chegaralar chiziq ( 0 , y0, x0+ 150 , y0) chiziq (x0, 0 , x0, y0+ 20 ) ... К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 45 Nuqtalar bo'yicha qurish ... x=xmin # x ning h = 0,02 # qadam x penColor ( "qizil" ) x<=xmax esa : y = x*x # funksiyasi ekran koordinatalari xexe = x0 + k*x = x0 + k*x (piksellarda) yeye = y0 - k*y = y0 - k*y nuqta (xe, ye) ekranda x += h # keyingi nuqtaga yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 46 Nuqtalarni chiziqlar bilan ulash G'oya: avval xotirada nuqtalar massivini yaratamiz , keyin nuqtalarni chiziqlar bilan bog'laymiz ( ko'pburchak ) ball = [] # bo'sh massiv x<=xmax esa : y = x*x massivga nuqta xe = x0 + k*x qo'shing ye = y0 - k*y ball. qo'shish ((xe, ye)) ball. qo'shish ((xe, ye)) x += h penColor ( "qizil" ) polyline (nuqta) # chiziq chizish! К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 47 Vazifalar " 3 ": Funksiyaning grafigini chizing y x2 segmentida [-2,2]. "4": Funksiya grafiklarini tuzish Va yx 2 y x2 segmentida [-2,2]. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 48 Vazifalar " 5 ": Funktsiya grafiklarini chizish 2 2 x y Va x y segmentida [-2,2]. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 49 dasturlash : Grafika 7. Animatsiya К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 50 Animatsiya Animatsiya (ing. animatsiya ) ekrandagi tasvirni jonlantirish. Qiyinchilik : 400x400 pikselli ko'k kvadrat ichida 20x20 pikselli sariq kvadrat chapdan o'ngga siljiydi. Esc tugmasi bosilganda dastur to'xtaydi yoki kvadrat ko'k maydonning chegarasiga etib keldi. (x,y ) Bog'lash: Ob'ekt holati koordinatalari ( ( x +20, y x, y) bilan beriladi +20) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 51 Animatsiya printsipi 1. x,y) nuqtasida chizish 2. bir necha millisekundlik kechikish 3. ob'ektni o'chiring 4. koordinatalarini o'zgartirish ( x,y ) 5. 1-bosqichga o'ting ! Python -da chizmani tashkil etuvchi barcha shakllar ob'ektlardir (ular o'zlarini qayta chizishlari mumkin)! ob'ekt eksa ofsetlari moveObjectBy (obj, dx, dy) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 52 Boshlovchi rasm grafik importidan * ko'k kvadrat brushColor ( "ko'k" ) to'rtburchak ( 0 , 0 , 400 , 400 ) x= 100 y= 100 boshlash koordinatalari sariq kvadrat penColor ( "sariq" ) brushColor ( "sariq" ) obj = to'rtburchak (x, y, x+ 20 , y+ 20 ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 53 Harakat def yangilash (): moveObject tomonidan (obj, 5 , 0 ) agar x Koord ( obj ) >= 380 : agar chiqilsa yopish () # chegaradan tashqarida x - koordinata onTimer ( yangilash , 50 ) qo'ng'iroqlarni yangilash har 50 ms К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 54 Escape Voqea (eng. event ) - dasturdagi ba'zi ob'ektlarning holatini o'zgartirish (tugmachani bosish, sichqonchani bosish, oynani ko'chirish yoki o'lchamini o'zgartirish va hokazo). voqea boshqaruvchisi Esc kalit kodi = 27 def tugmasi bosilgan (hodisa): agar event.keycode == VK_ESCAPE: yopish () # oynani yoping istalgan tugma onKey ( tugmacha bosilgan ) bosilganda qo'ng'iroq qiling voqea ishlovchisini o'rnatish К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 55 To'liq dastur grafik importidan * def yangilash (): ... protseduralar def tugma bosilgan (hodisa): ... brushColor ( "ko'k" ) to'rtburchak ( 0 , 0 , 400 , 400 ) x= 100 y= 100 penColor ( "sariq" ) brushColor ( "sariq" ) obj = to'rtburchak (x, y, x+ 20 , y+ 20 ) hodisani onKey ( tugmacha bosilgan ) boshqarish onTimer ( yangilash , 50 ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 56 Vazifalar "3": Kvadrat o'ngdan chapga siljiydi: "4": Ikki kvadrat qarama-qarshi yo'nalishda harakat qiladi: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 57 Vazifalar "5": Ikki kvadrat qarama-qarshi yo'nalishda harakatlanadi va ko'k kvadratning devorlarini itarib yuboradi: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 58 Kalit boshqaruvi Vazifa : Moviy kvadrat ichidagi sariq kvadrat o'q tugmalari bilan boshqariladi. Kalit kodlari: chapga - 37 yuqoriga - 38 Esc - 27 o'ngga - 39 pastga - 40 VK_ESCAPE Muammo : harakat yo'nalishini qanday o'zgartirish mumkin? Voqea boshqaruvchisi : =37 def tugmasi bosilgan (hodisa): agar event.keycode == VK_LEFT: =39 moveObjectBy ( obj , - 5 , 0 ) elif event.keycode == VK_RIGHT: moveObjectBy ( obj , 5 , 0 ) VK_UP = 38 ... # bundan keyin - o'zingiz ... VK_DOWN = 40 onKey ( tugmacha bosilgan ) # to'plam ishlov beruvchisi К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 59 Vazifalar " 3 ": Eng boshida joylashgan kvadrat pastki o'ng burchakda joylashgan bo'lib, o'qlarni bosganingizda faqat yuqoriga yoki chapga siljiydi: "4": O'qlar bosilganda kvadrat harakatlanadi, lekin ko'k kvadratdan tashqariga chiqa olmaydi: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 60 Vazifalar " 5 " : Ikki kvadrat, biri strelkalar, ikkinchisi boshqa tugmalar bilan boshqariladi. Ikkalasi ham ko'k maydondan nariga o'ta olmaydi. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 61 Talab bo'yicha boshqaruv Qiyinchilik : Sariq kvadrat doimiy ravishda harakatlanadi va o'q tugmachalarini bosganingizda yo'nalishini o'zgartiradi. Bo'sh joy tugmasini bosganingizda, u to'xtaydi. Muammo : harakat yo'nalishini qanday o'zgartirish mumkin? Yechim : def yangilash (): ... Biz nimani moveObjectBy ( obj d , x 5dy, 0 ) o'zgartiryapmiz ... ? onTimer ( yangilash , 50 ) bo'lishi kerak ! ? ! К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python Klaviatura bosishni qanday "ushlash" mumkin? 62 Bu global def tugma bosilgan (hodisa): o'zgaruvchilar! global dx , dy agar event.keycode == VK_LEFT : dx = -5 ? dy = 0? Qolgan kalitlar haqida nima ... deyish mumkin? onKey ( tugmacha bosilgan ) ? Bo'sh joy : К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 63 To'liq dastur grafik importidan * def yangilash (): ... protseduralar def tugma bosilgan (hodisa): ... # ko'k kvadrat chizing x = 100 ; y= 100 global dx = 0 ; dy = 0 o'zgaruvchilar penColor ( "sariq" ) brushColor ( "sariq" ) obj = to'rtburchak (x, y, x+ 20 , y+ 20 ) hodisani onKey ( tugmacha bosilgan ) boshqarish onTimer ( yangilash , 50 ) yugurish К.Ю. Поляков, 2017 -2018() http://kpolyakov.spb.ru Графика в Python 64 Vazifalar " 3 " : Dasturni tuzing va ishga tushiring. "4" : Kvadrat ko'k kvadrat chegarasidan tashqariga chiqa olmaydi, u devor bilan to'qnashganda darhol to'xtaydi. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 65 Vazifalar " 5 " : Kvadrat devorlardan qaytariladi. "6": Kvadrat diagonal bo'ylab harakatlanishi mumkin (yana 4 ta tugmachadan foydalaning) va devorlardan sakrab tushishi mumkin. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 66 "Ilon" Vazifa : ilon bosh va bir nechta tana qismlaridan iborat bo'lib, o'q tugmachalarini bosganda doimo harakat qiladi va yo'nalishini o'zgartiradi . Bo'sh joy tugmasini bosganingizda , u to'xtaydi. Muammolar : 1) ilon ma'lumotlarini qanday saqlash kerak? 2) uni qanday qilib to'g'ri yo'nalishda К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 67 Ilonni qanday saqlash kerak? Snake = kvadrat havolalar massivi (x, a y) ilon = [obj0, obj1, obj2, obj3, obj4] ilon = [] bosh uchun chegara va penColor ( "sariq" ) to'ldirish rangi brushColor ( "sariq" ) uchun i inrange (N): obj = to'rtburchak ( x+i *a, y, x+i * a+a , y+a ) qolganlari yashil ilon. qo'shish ( obj ) brushColor ( "yashil" ) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 68 Ilonni qanday harakatlantirish kerak? ! avvalgisiga o'tadi ! koordinatalar oldingi havola newCoord = koordlar (ilon[k- 1 ]) moveObjectTo (ilon[k], newCoord [ 0 ], newCoord [ 1 ]) K -chi havola uchun : ? Havolalar qanday tartibda saralanishi kerak? К.Ю. Поляков, 2017 -2018 oxirgidan! http://kpolyakov.spb.ru Графика в Python 69 Ilonni qanday harakatlantirish kerak? Butun ilon: boshdan tashqari, def moveSnake ( xNew , yNew ):oxirgidan büstü global x, y k uchun _ diapazon ( len (ilon)- 1 , 0 ,- 1 ): newCoord = koordlar (ilon[k- 1 ]) moveObjectTo (ilon[k], newCoord [ 0 ], newCoord [ 1 ]) moveObjectTo (ilon[ 0 ], xNew, yNew) boshingizni x = xYangi harakatlantiring y = y Yangi К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 70 Ilonni qanday harakatlantirish kerak? ! Harakat bosqichi har doim a ! Qulaylik bilan shunday: dx, dy = -1, 0 yoki 1 def tugma bosilgan (hodisa): global dx , dy agar event.keycode == VK_LEFT : dx = -1 _ dy = 0 agar ikkalasi ham nol bo'lsa, harakat ... qilish kerak emas! def yangilash (): agar dx yoki dy : dy*a harakat ilon ( dx*a x + dx *a ,y + dy *a ) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 71 To'liq dastur grafik importidan * def Snake-ni harakatga keltiring (xYangi, yNew): ... def yangilash (): ... def tugma bosilgan (hodisa): ... # ko'k kvadrat chizing x = 100 ; y= 100 # bosh koordinatalari dx = 0 ; dy = 0 # boshida joyida qoladi a = 10 N = 20 # o'lcham va havolalar soni # ilonni boshlang'ich holatiga torting onKey ( tugmacha bosilgan ) onTimer ( yangilash , 50 ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 72 Vazifalar " 3 " : Dasturni tuzing va ishga tushiring. "4" : Ilon ko'k kvadratdan tashqariga chiqa olmaydi ( devorda to'xtaydi). К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 73 Vazifalar " 5 " : Ilon dala chegarasi bilan toʻqnashganda, u shu chegara boʻylab sudralay boshlaydi. "6": Agar ilon o'zini kesib o'tsa, o'yin tugaydi. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 74 tasodifiy raqamlar Tasodifan… Tasodifiy tanlov : • ko'chada bir do'st bilan uchrashish • musobaqalar uchun qur'a tas • plastinkani sindirish • 10 rublni toping • lotereyada yutuq raqamlari • lotereya yutib oling Qanday qilib tasodifiy olish mumkin? К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 75 Kompyuterda tasodifiy raqamlar Elektron generator • maxsus qurilma kerak • natijalarni takrorlash mumkin emas Pseudo-tasodifiy raqamlar - tasodifiy sonlarning xususiyatlariga ega, ammo har bir keyingi raqam berilgan formula bo'yicha hisoblanadi. O'rta kvadrat usuli (J. von Neumann) makka jo'xori 564321 318458191041 458191 kvadrat • kichik davr (10 6 ta raqamdan keyin ketmaketlik takrorlanadi) 209938992481 938992 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 76 Chiziqli kongruensial generator X : = ( a*X + b ) % c # interval 0 dan c-1 gacha X : = ( X + 7 ) % 10 # interval 0 dan 9 gacha X : = 7 4 1 8 5 2 0 2 9 6 3 0 makkaj aylanish o'xori ! Parametrlarni to'g'ri tanlash muhimdir a , b va bilan ! GCC kompilyatori : a = 1103515245 b = 12345 c = 2 31 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 77 Tasodifiy raqamlar generatori tasodifiy Ingliz tasodifiy - tasodifiy [a,b] oraliqdagi butun sonlar : X = tasodifiy _ _ randint ( 1 , 6 ) # soxta so'z . raqam Y = tasodifiy _ _ randint ( 1 , 6 ) # Generator [0,1) boshqa : allaqachon raqam! X = r a ndom.r a ndom () # psevdoso'z . raqam Y = r a ndom.r a ndom () # boshqa raqam! К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 78 Tasodifiy raqamlar generatori tasodifiy importdan * hamma narsani ulang! Ingliz tasodifiy - tasodifiy [a,b] oraliqdagi butun sonlar : X = randint ( 10 , 60 ) # psevdo-tasodifiy raqam Y = randint ( 10 , 60 ) # boshqa raqam! Generator [0,1) : X = tasodifiy ( ) ; _ # psevdo-tasodifiy raqam Y = r a ndom () # bu boshqa raqam! К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 79 tasodifiy raqamlar Vazifa : 400 x 300 pikselli to'rtburchakni tasodifiy rangdagi nuqtalar bilan teng ravishda to'ldiring Tasodifiy nuqta koordinatalarini qanday olish x = randint ( 0 , 399 ) mumkin? y = randint ( 0 , 299 ) Bir xillikka qanday erishish mumkin? qachon avtomatik ravishda taqdim etiladi foydalanish randin funktsiyalari К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 80 Ro'yxatdagi tasodifiy rang nuqtasi tasodifiy import tanlovidan _ Hammasi variantlari ... ranglar = [ "qizil" , "yashil" , "ko'k" , "qora" , "#FFFF00" ] tasodifiy col = tanlov tanlash kol(ranglar) qalam rangi ( ??? ) chek qo'yish nuqta (x, y) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 81 Tasodifiy rang nuqtasi ( RGB ) RGB rangi : "sariq" qalam rangi ( 255 , 255 , 0 ) R( G ( yashil B ( ko'k ) qizil ) ) 0..255 0..255 0..255 r = randint ( 0 , g = randint ( 0 , b = randint ( 0 , qalam rangi ??? r,(g, b nuqta (x, y) К.Ю. Поляков, 2017 -2018 255 ) 255 ) 255 ) ) http://kpolyakov.spb.ru Графика в Python 82 Butun dastur grafik importidan * _ tasodifiy import tanlovidan _ ranglar = [ "qizil" , "yashil" , "ko'k" , "qora" , "#FFFF00" ] def newPoint (): 10 ms dan x = randint ( 0 , 399 ) keyin yangi y = randint ( 0 , 299 ) nuqta col = tanlov (ranglar) qalam rangi ( rang ) nuqta (x, y) Escape def tugma bosilgan (hodisa): agar event.keycode == VK_ESCAPE: yopish () onKey ( tugmacha bosilgan ) hodisa ishlov onTimer ( newPoint , 10 ) beruvchilarini yugurish () sozlash К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 83 Vazifalar "3": kvadratni tasodifiy rangdagi nuqtalar bilan to'ldiring. klaviaturadan kvadrat o'lchamini kiriting: Misol: Kvadrat hajmini kiriting: 150 "4": ikkita maydonni tasodifiy rangli nuqta bilan to'ldiring: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 84 Vazifalar "5": maydonni tasodifiy rangdagi nuqtalar bilan to'ldiring: yoki К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru 85 dasturlash : Grafika 8. O'yinlar К.Ю. Поляков, 2017 http://kpolyakov.spb.ru Графика в Python 86 Aylanadigan to'p bilan tank x0 _ x 1 ( x , 1 y 1) (0,0) y1 H y0 ?X 1 ni qanday topish mumkin va y1 ? x1 x0 L cos y1 y0 L sin chiziq (x0, y0, x1, y1) doira (x0, y0, Vt/ V 2 ) to'rtburchak (x0-Vt/ 2 , y0-Y/ 2 , x0+W/ 2 , y0+H/ 2 ) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 87 Boshlovchi rasm grafik importidan * _ import matematika H= 60 ; W= 30 ; L= 40 # tank o'lchamlari x0 = 200 ; y0 = 400 ; burchak = 90 # to'p brushColor ( "#6b8e23" ) to'rtburchak (x0-V/ 2 , y0- Y/ 2 , x0+V/ 2 , y0+Y/ 2 ) ramka a = burchak * matematik. pi / 180 # radianga x1 = x0+L*matematik. chunkimagistr (a) al y1 = y0-L*matematik. gunoh (a) qalam o'lchami ( 5 ) chiziq (x0, y0, x1, y1) qalam o'lchami ( 1 ) minora brushColor ( "#556b2f" ) doira (x0, y0, Vt/ 2 ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 88 To'pni aylantirish animatsiyasi def tugma bosilgan (hodisa): agar event.keycode == VK_LEFT: qurol chizish (burchak + 5 ) # chapga 5 daraja elif event.keycode == VK_RIGHT: qurol chizish (burchak - 5 ) # o'ngga 5 daraja elif event.keycode == VK_ESCAPE: yopish () ... onKey ( tugmacha bosilgan ) DrawGun protsedurasini yozishingiz kerak ! ! К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 89 To'pni chizish va aylantirish G'oya : biz birinchi marta chizamiz, keyin koordinatalarni o'zgartiramiz. birinchi Yo'q - "bo'sh" def drawGun (angleNew): global burchak, qurol # global o'zgaruvchilar burchak = burchak Yangi # yangi burchakni eslang aRad = burchak * matematik. pi /180 # radianga x1 = x0 + L * matematika. cos (aRad) y1 = y0 - L * matematika. gunoh (aRad) agar qurol == Yo'q : # agar bu birinchi chiziqning marta bo'lsa ... "manzilini" eslab yangi koordinatalar qurol = chiziq (x0, y0, x1, y1) qoling massivi К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 90 To'pni chizish va aylantirish U qanday ishlaydi: qurol = Hech kim # hali qurol chizmagan qurol chizish (burchak) # birinchi marta durang qurol = chiziq (x0, y0, x1, y1) # endi qurol qator manzilini o'z ichiga oladi ... def tugma bosilgan (qurol, (hodisa): ChangeCoord [(x0,y0), (x1,y1)] ) qurol chizish (burchak + 5 ) #aylantirish _ # shunchaki koordinatalarni o'zgartiring К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 91 To'liq dastur grafik importidan * _ import matematika def tugma bosilgan (hodisa): ... protseduralar def drawGun ( angleNew ): ... H= 60 ; W= 30 ; L= 40 boshlang'ich x0 = 200 ; y0 = 400 ; burchak = 90 qiymatlari qurol = yo'q brushColor ( "#6b8e23" ) ramka to'rtburchak (x0-V/ 2 , y0- Y/ 2 , x0+V/ 2 , y0+Y/ 2 ) qalam o'lchami ( 5 ) qurol chizilgan qurol ( burchak) qalam o'lchami ( 1 ) minora brushColor ( "#556b2f" ) doira (x0, y0, Vt/ 2 ) onKey ( tugmacha bosilgan ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 92 Vazifalar "3": qarama-qarshi yo'nalishda o'rnatilgan qurol bilan tank yasang: "4": Yon tomonga o'rnatilgan qurol bilan tank yasang. Boshqaruv - "yuqoriga" va "pastga" tugmalari: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 93 Vazifalar "5": ikkita tank yasang, bitta to'p "chap" va "o'ng" tugmachalari bilan boshqariladi, ikkinchisi "yuqoriga" va "pastga" tugmalari bilan. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 94 To'pdan otish (0,0) x0 _ Ob'ekt yaratish: x0 = 200 ; y0 = 400 r= 3 # snaryad radiusi brushColor ( "qora" ) o'q = doira (x0, y0, r) y0 bo'sh joyni bosing" ob'ekt kodini eslab qoling Harakat: moveObjectBy (market, 0 , 5 ) tomonidan X К.Ю. Поляков, 2017 -2018 tomonidan Y http://kpolyakov.spb.ru Графика в Python 95 Derazadan tashqarida to'xtang 1. ob'ektning 2. agar u 0 dan kichik bo'lsa, u holda • trafikni to'xtatish • snaryadni dastlabki holatiga qaytarish (x 1 , ob'ekt koordinatalari: y 1 ) (x 2 ,y (x 1 , y 1 , x 2 , y 2 ) 2 ) y = koordinatlar (o'q)[ 1 ] yuqori chap burchak agar y < 0 bo'lsa : isFlying = False ( x 0 -r , y 0 -r ) moveObjectTo (oʻq, x0-r, y0-r) isFlying - mantiqiy o'zgaruvchi To'g'ri - snaryad uchadi, Yolg'on - uchmaydi. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 96 Animatsiyani qanday tartibga solish kerak? har 30 msda chaqiriladi def yangilash (): global isFlying, bullet agar uchayotgan bo'lsa: # agar uchib ketsa ... y = koordinatlar (o'q)[ 1 ] agar y < 0 bo'lsa : # agar ketgan bo'lsa ... isFlying = False moveObjectTo (oʻq, x0-r, y0-r) boshqa : # oldinga uchadi... moveObjectBy (market, 0 , -5 ) ... К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru onTimer ( yangilash , 30 ) Графика в Python 97 Harakatni qanday boshlash kerak? tugma bosilganda chaqiriladi def tugma bosilgan (hodisa): global isFlying agar event.keycode == VK_SPACE: isFlying = To'g'ri #uchib ketdi! elif event.keycode == VK_ESCAPE: yopish () #ishni tugatish ... onKey ( tugmacha bosilgan ) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 98 To'liq dastur grafik importidan * _ def yangilash (): protseduralar ... def tugmasi bosilgan (hodisa): ... x0 = 200 ; y0 = 400 ; r= 3 brushColor ( "qora" ) o'q = doira (x0, y0, r) isFlying = False onKey ( tugmacha bosilgan ) onTimer ( yangilash , 30 ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 99 Vazifalar "3": Chapdan o'ngga tortishish simulyatsiyasi. Ekrandan chiqqandan so'ng, snaryad o'zining boshlang'ich nuqtasiga qaytadi. "4": snaryad uchadigan tankni tugating: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 100 Vazifalar " 5 ": ikkita tank bir vaqtning o'zida o't ochadi. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 101 Vazifalar " 6 ": minorali tank. Otish barrel burilgan yo'nalishda sodir bo'ladi: К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 102 stend otish (0,0) Bal: 1 К.Ю. Поляков, 2017 -2018 1. plastina ob'ektlarini yaratish Platelarni yaratish 2. plitalarni siljiting Plitalar harakatlantiring 3. plastinkaga tegib yoki yo'qligini tekshiring To'qnashuvni tekshiring 4. ma'lum bir plastinkaga tegib yoki yo'qligini tekshiring urish http://kpolyakov.spb.ru Графика в Python 103 Plitalar qatorini yaratish def Plitalar yaratish ( N ): global plitalar # global massiv yPlitalar = 100 # hammasi bir xil y koordinatasiga plitalar = [] # massiv bo'sh bo'lganda men uchun _ diapazon (N): brushColor ( randColor ()) p = doira ( randint ( 0 , 500 ), # x markaz yPlitalar, #y markaz randint ( 10 , 20 )) # radius plitalar. qo'shish (p) # massivga qo'shing ... Plitalar yaratish ( 5 ) # protsedura chaqiruvi К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 104 Cymbal harakati def Plitalar (): global plitalar # global massiv plitalardagi p uchun : Har bir plastinka uchun moveObjectBy (p, -2 , 0 ) # siljish 2 ga qoldi x1,y1,x2,y2 = koordinatalar (p) agar x1 < 0 : # agar chegaradan tashqarida bo'lsa ... 500 # o'ngga sakrash kuni ... ( x 1, y 1) moveObjectBy (p, randint ( 500 , 600 ), 0 ) ( x 2, y 2) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 105 Bir piyola urish def checkTo'qnashuv (): global isFlying, o'q, plitalar plitalardagi p uchun : agar urish (p): # plastinkani o'ngga tashlang moveObjectBy (p, randint ( 500 , 600 ), 0 ) # snaryad boshlang'ich nuqtasiga moveObjectTo (oʻq, x0-r, y0-r) isFlying = False # to'xtatilgan raketa hit (p) - qaytaruvchi mantiqiy funksiya tanaffus # bir vaqtning o'zida faqat To'g'ri , agar o'q p bilan to'qnashgan bo'lsa va bitta plastinka yolg'on , duch kelmasa. К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 106 Snaryad bu idishga tegdimi? ? o'tkazib yuborilgan urish ( x p, y p ) «Ur» sharti formula shaklida qanday yoziladi? markazlar orasidagi masofa d ( xb xc ) ( yb yc ) Rp _ 2 r ( x b, y b) К.Ю. Поляков, 2017 -2018 ! "Urish": 2 d (r R p ) 2 2 http://kpolyakov.spb.ru Графика в Python 107 Snaryad bu idishga tegdimi? def urish (p): ... agar d2 <= ( Rp + r)**2: qaytish To'g'ri boshqa : qaytish Yolg'on def urish (p): ... qaytish d2 <= ( Rp + r)**2 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 108 Snaryad bu idishga tegdimi? def urish (p): global o'q ( x b, y b) # snaryad koordinatalari x1,y1,x2,y2 = koordinatlar (o'q) ( x , y ) 1 1 xb = x1 + r # snaryad markazi yb = y1 + r ( x 2, y 2) # taom koordinatalari ( x 1p , y 1p ) x1p,y1p,x2p,y2p = koordinatlar (p) xp = (x1p + x2p) / 2 ( x p, yp = (y1p + y2p) / 2 y p) ( x 2p, y 2p) Rp = (x2p - x1p) / 2 d2 = ( xb-xp )**2 + ( yb-yp )**2 qaytish d2 <= (Rp +r )** 2 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python Ushbu funktsiyalarni qanday chaqirish mumkin? 109 def yangilash (): global isFlying, bullet Plitalar () movePlates() agar uchayotgan bo'lsa: # agar uchib ketsa ... y = koordinatlar (o'q)[ 1 ] agar y < 0 bo'lsa : # agar ketgan bo'lsa ... isFlying = False moveObjectTo (oʻq, x0-r, y0-r) boshqa : # oldinga uchadi... checkCollision() moveObjectBy (market, 0 , -5 ) har 30 to'qnashuvni tekshirish () msda chaqiriladi ... К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 110 To'liq dastur grafik importidan * _ # barcha funksiyalar shu yerda ... x0 = 200 ; y0 = 400 ; r= 3 Plitalar yaratish ( 5 ) brushColor ( "qora" ) o'q = doira (x0, y0, r) isFlying = False onKey ( tugmacha bosilgan ) onTimer ( yangilash , 30 ) yugurish () К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 111 O'yin hisobini qanday olib tashlash mumkin? ! ball Hisob qanday va qachon o'zgaradi ? Birinchisi : ball = 0 Xitda : Bal: 1 Xol + = 1 turi elementi ) ( x,y fon Yorliq yaratish : ) lbl = yorliq ( "Baho: 0" , 10 , 200 , bg = "oq" ) raqamdan qator Yorliq matnini o'zgartirish : lbl[ "matn" ] = " Baho: " + str (bal) К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 112 Vazifalar "3": dasturni tuzing va ishga tushiring. Otish tezligini oshiring. "4": Chapdan o'ngga otish holati uchun "3" bo'yicha topshiriqni bajaring (to'ldirgichlar yuqoridan pastga uchadi). Tankni torting, uning og'zidan snaryad uchadi. Bal: 12 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 113 Vazifalar " 5 ": Vazifani "4" bilan bajaring: kichikroq plastinkani urish uchun o'yinchi ko'proq ball oladi. Bal: 12 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru Графика в Python 114 Vazifalar "6": Aylanadigan to'p bilan tank yasang. Snaryad barreldan xuddi shu yo'nalishda uchadi. Kichikroq plastinkani urish uchun o'yinchi ko'proq ball oladi. Bal: 12 К.Ю. Поляков, 2017 -2018 http://kpolyakov.spb.ru