Darslar 65–67 · 3 ta dars · N. I. Taylaqov (umumiy muharrir), A. B. Axmedov, M. D. Pardayeva, A. A. Abdug‘aniyev, U. M. Mirsanov. Informatika va axborot texnologiyalari, 10-sinf, 1-nashr. «Extremum-Press», Toshkent, 2017
65
Grafik va animatsion ilovalarga misollar
Darslik: 149–153-betlar
MaqsadPixels yordamida rang o‘tishini chizadi va Timer bilan koptok animatsiyasini yaratadi: koordinatalar, tezlik (dx, dy) va devordan qaytishni hisoblaydi.
Yangi so‘zlar
rang o‘tishi · colour fade: colours that change step by step from one to anotheranimatsiya · animation: the impression of motion made by redrawing a picture at small stepsyo‘nalish (dx, dy) · direction (dx, dy): the change of x and y at each stepqaytish · bounce: reversing the sign of dx or dy at a wall
Tushuntirish
Pixels yordamida har bir nuqtaga alohida rang berish mumkin. «Rang o‘tishi» ilovasida 256×100 Image ga ikki sikl bilan yoziladi: for i := 0 to 255 do for j := 0 to 99 do Image1.Canvas.Pixels[i, j] := RGB(i, 0, 255 - i); – chapdan o‘ngga qizil miqdori o‘sadi, ko‘k miqdori kamayadi: chap chet ko‘k (0, 0, 255), o‘rtada binafsharang (127, 0, 128), o‘ng chet qizil (255, 0, 0). Jami 256·100 = 25600 nuqta chiziladi. Animatsiya – rasmni kichik qadamlar bilan qayta chizish: Timer (Interval = 50, ya’ni sekundiga 20 kadr) har safar eski koptokni oq rang bilan o‘chiradi, markazni (x, y) dan (x + dx, y + dy) ga siljitadi va yangisini chizadi. Devorga yetganda yo‘nalish teskarilanadi: agar x chap yoki o‘ng chegaradan chiqsa, dx := -dx; agar y yuqori yoki pastki chegaradan chiqsa, dy := -dy. x, y, dx, dy global o‘zgaruvchilar, ularga boshlang‘ich qiymatlar OnCreate da beriladi.
Namunalar
Koptok: global var x, y, dx, dy: Integer; OnCreate: x := 20; y := 20; dx := 4; dy := 3; Timer1Timer: Image1.Canvas.Brush.Color := clWhite; Image1.Canvas.Pen.Color := clWhite; Image1.Canvas.Ellipse(x-11, y-11, x+11, y+11); x := x + dx; y := y + dy; if (x < 10) or (x > Image1.Width - 10) then dx := -dx; if (y < 10) or (y > Image1.Height - 10) then dy := -dy; Image1.Canvas.Brush.Color := clRed; Image1.Canvas.Pen.Color := clRed; Image1.Canvas.Ellipse(x-10, y-10, x+10, y+10); Bu satrlar bitta protsedura ichida, Timer ishlaganda ketma-ket bajariladi.
Hisob: Image eni 300, koptok radiusi 10, dx = 4. x = 10 dan o‘ng chegara 300–10 = 290 gacha 280 piksel; 280/4 = 70 qadam, 70·50 ms = 3500 ms = 3,5 s. Tezlik 4 piksel / 50 ms = 80 piksel/s. Kulrang o‘tishda RGB(i, i, i): i = 0 da qora, i = 255 da oq, i = 128 da kulrang.
Sinfda faoliyat
«Koptok tezligi»: guruh dx, dy va Interval ni o‘zgartirib, koptokning tezligini (piksel/s) oldindan hisoblaydi va sekundomer bilan tekshiradi.
Mashq
1
RGB(i, 0, 255 - i) da i = 255 bo‘lgan nuqta qaysi rang?
Qizil
2
256×100 rasmdagi nuqtalar soni?
25600
3
dx = 5, Interval = 50 da koptok bir sekundda gorizontal necha piksel yuradi?
100
4
Nima uchun devorda dx := -dx; koptokni qaytaradi?
Qadam ishorasi o‘zgaradi: x oldin o‘sgan bo‘lsa, endi kamayadi.