Вот представим, имеется меню, кнопки, при нажатии определенной кнопки меняется значение глобальной переменной а переменной типа меню. Делается это указателями, то есть я не передаю значение а лишь даю понять проге какую переменную надо увеличить или уменьшить , короче не важно действия, главное суть. Вот ниже я привел пример:
Global ButtonList:TList = New TList
'varriables
Global varriable_1:Int
Global varriable_2:Int
Global varriable_3:Int
Type TButtonGUI
Field pos_x:Int, pos_y:Int
Field color:Int[4]
Field txt:String
Function Button:TButtonGUI(txt:String, pos_x:Int, pos_y:Int)
Local Button:TButtonGUI = New TButtonGUI
button.txt = txt
button.pos_x = pos_x
button.pos_y = pos_Y
button.color[1] = 0
button.color[2] = 0
button.color[3] = 128
ButtonList.AddLast(Button)
End Function
Method update(name:String, ukazatel Var)
If MouseX() >= pos_x And MouseY() >= pos_y And MouseX() <= pos_x + 250 And MouseY() <= pos_y + 70 Then
color[1] = 255
color[2] = 0
color[3] = 0
If txt = name Then
If MouseHit(1) Then
ukazatel:+1
End If
End If
Else
color[1] = 0
color[2] = 0
color[3] = 128
End If
End Method
Method draw()
SetColor(color[1] , color[2] , color[3] )
DrawRect(pos_x, pos_y, 250, 70)
SetColor(0, 0, 0)
DrawText(txt, pos_x + 125 - TextWidth(txt) *.5, pos_y + 35 - TextHeight(txt) *.5)
End Method
End Type
Function UpdateButton(txt:String, ukazatel Var)
For Local up_button:TButtonGUI = EachIn ButtonList
up_button.update(txt, ukazatel)
up_button.draw
Next
End Function
Graphics (800, 600, 0, 60, 2)
HideMouse
TButtonGUI.Button("Varriable 1", 50, 100)
TButtonGUI.Button("Varriable 2", 50, 300)
TButtonGUI.Button("Varriable 3", 50, 500)
While Not KeyHit(KEY_ESCAPE)
Cls
UpdateButton("Varriable 1", varriable_1)
UpdateButton("Varriable 2", varriable_2)
UpdateButton("Varriable 3", varriable_3)
'cursor
SetColor(255, 255, 255)
DrawOval(MouseX(), MouseY(), 4, 4)
'txt
SetColor(255, 255, 255)
DrawText("MouseX: " + MouseX(), 20, 20)
DrawText("MouseY: " + MouseY(), 20, 40)
DrawText("Varriable 1 = " + varriable_1, 600, 20)
DrawText("Varriable 2 = " + varriable_2, 600, 40)
DrawText("Varriable 3 = " + varriable_3, 600, 60)
Flip
Wend
Здесь я создал 3 кнопки, потом в упдейте дал указания какой кнопке какую переменную увеличить.
UpdateButton("Varriable 1",
varriable_1)
UpdateButton("Varriable 2",
varriable_2)
UpdateButton("Varriable 3",
varriable_3)
Жирными буквами указаны указатели.
А нельзя ли скажем добавить в типе меню еще переменную указатель, Varriable , которая будет хранить указатель на нужную переменную, но тип филда не могу задать
. Потом создание кнопок будет уже следующим:
TButtonGUI.Button("Varriable 1", 50, 100,varriable_1)
TButtonGUI.Button("Varriable 1", 50, 100,varriable_2)
TButtonGUI.Button("Varriable 1", 50, 100,varriable_3)
Потом исходя из того что в типе меню есть переменная указатель, то в упдейте просто увеличивается Varriable(указатель) на 1 или еще что. (смотреть метод обновления). Тогда теоретически не придеться каждый раз вызывать Упдейт с разными значениями.
Как думаете такое возможно?
Надеюсь я понятно изьяснился.