-расм. Дастур ойнаси - Ызбекистон Республикаси

19-расм. Дастур ойнаси.
Харакатли тасвирларни яратиш.
Харакатланувчи тасвир деганда бирор объект ёки расм (чизи=, айлана ва х.к.)ларни экран быйлаб силжиши тушунилади. Бундай жараённи =андай амалга оширилади? Умуман олганда, бу жуда хам оддий дейиш мумкин. Яъни оддий бир чизи= чизилади, бир оз ва=т ытгандан сынг ушбу чизи= ычириб ташланади ва бош=а бир координатада хосил =илинади. Бундай ычириб чизишлар бир неча маротаба такрорланганда чизи= маълум бир йыналиш быйича харакатланаётганга ыхшаб кетади.
Мисол сифатида =уйидаги масалага дастур тузайлик: айлана экранда ынгдан чапга ва чапдан ынгга бориб-келиб туришини ташкил этинг.
Бунинг учун =уйидаги ишларни амалга ошириш лозим:
Form1 форма ташкил =иламиз; Caption хусусиятини «Harakatdagi aylana» деб ызгартирамиз;
Формага General ойнасидан PictureBox компонентини формага ырнатамиз (20-расм). Бу объект айланани хосил =илувчи объект сифатида фойдаланилади. Айлананинг харакатланиши хам айнан шу объект ичида амалга оширилади;
Формага Command компонентидан хам битта ырнатамиз. Айлананинг харакати шу тугма босилиши билан бошланади ёки тыхтатилади. Caption хусусиятини «Start» ызгартирамиз.
Маълумки харакат хар доим ва=т билан узвий бо\ли= хисобланади. Шунинг учун формага Timer компонентини хам ырнатамиз. Interval хусусиятини 200, Enabled хусусиятини эса False га ызгартирамиз. Бу ерда Interval ва=тнинг ызгариш тезлиги былиб, =анчалик катта =иймат берилса, ва=тнинг ызгариши шунчалик секинлашади. Enabled хусусияти эса ва=т хисобланишини бошлаш ёки бошламасликни белгилайди.
Шундай =илиб форманинг умумий кыриниши 21-расмда кырсатилган шаклни олади.
20-расм. PictureBox компоненти
21-расм. Дастурнинг форма кыриниши
Энди дастур кодини ёзиш учун Start тугмаси устида сич=он тугмаси икки марта тез босилади. Хосил былган кодлар ойнасида =уйидаги ызгартиришларни амалга оширамиз:
Private Sub Command1_Click()
If Command1.Caption = "Stop" Then
Command1.Caption = "Start"
Timer1.Enabled = False
Else
Command1.Caption = "Stop"
Timer1.Enabled = True
End If
d = 5
End Sub
Бу процедурада Command тугмасининг Caption хусусиятини холатга кыра ызгартириш амалга оширилган. Яъни агар Start босилган былса тугма устидаги ёзув Stop га ызгаради ёки аксинча. Шунга кыра айлана харакати хам давом этади ва тыхтайди. d ызгарувчи эса харакат =адами былиб, уни ихтиёрий бериш мумкин. Агар катта былиб кетса, харакат текис чи=маслиги мумкин.
Айланани хосил =илиш ва унинг навбатдаги координатада чизилиши =уйидаги процедурада ташкил этилган. Ушбу процедура Timer компоненти устида сич=онча тугмаси икки марта тез босиш билан хосил =илинади ва =уйидаги ызгартиришлар =илинади:
Private Sub Timer1_Timer()
x = x + d
Picture1.ForeColor = &H8000000F
Picture1.Circle (x - d, 30), 10
Picture1.ForeColor = QBColor(0)
Picture1.Circle (x, 30), 10
If x > 300 Or x < 5 Then d = d * (-1)
End Sub
Эътибор =иладиган былсак, бу ерда d ызгарувчига бошлан\ич =иймат аввалги процедурада берилган, яъни ушбу ызгарувчи барча процедураларда ишлаши керак. Бунинг учун ызгарувчи глобал =илиб эълон =илиниши керак:
Dim d As Integer
Х ызгарувчи эса айлананинг х ы=и быйича координатаси былиб, у d =адам билан ызгариб туради. Айлана аввал кыринувчи чизи=да чизилади ва уни ычириш учун унинг устидан фон рангида устидан чизилади. Янгиси эса кейинги координатада хосил =илинади. Шундай =илиб айлана экран быйлаб ынгдан-чапга ва аксинча чапдан-ынгга харакатланиб туради. Дастурнинг умумий кыриниши =уйидагича былади:
Dim x, d As Integer
Private Sub Command1_Click()
If Command1.Caption = "Stop" Then
Command1.Caption = "Start"
Timer1.Enabled = False
Else
Command1.Caption = "Stop"
Timer1.Enabled = True
End If
d = 5
End Sub
Private Sub Timer1_Timer()
x = x + d
Picture1.ForeColor = &H8000000F
Picture1.Circle (x - d, 30), 10
Picture1.ForeColor = QBColor(0)
Picture1.Circle (x, 30), 10
If x > 300 Or x < 5 Then d = d * (-1)
End Sub
Дастурни ишга тушириб, Start тугмаси босилса айлана харакатланаётган 22-расмда кырсатилган формани кыришимиз мумкин.
|