View difference between Paste ID: x7dTXAV7 and Bj0JTDuQ
SHOW: | | - or go back to the newest paste.
1
; simulator_v0.1
2
; вопросы: как избежать повторения кода?
3
4
Enumeration
5
  #forum
6
  #mkSite
7
  #sellSite
8
  #siteCnt
9
  #mnyCnt
10
  #status
11
  #yw
12
EndEnumeration
13
14-
k=0
14+
15-
m=0
15+
16
; это не нужно, потому что по умолчанию необъявленные переменные и так равны 0
17
;k=0
18
;m=0
19
20
; вообще пара дополнений по стилю:
21
; If k>=0
22
; то же самое что и
23
; If k
24
;
25
; не нужно лишних движений
26
; k=k+1
27
; можно писать просто
28
; k+1
29
30
; вообще все эти k, m, i жутко неудобны для чтения
31
; почему бы не называть их нормально?
32
33
; для того чтобы избавиться от копипаста обычно используют процедуры
34-
              If k>=0
34+
Procedure setInfo(sites.l,money.l)
35-
                ButtonGadget(#sellSite, 10, 110, 120, 40, "Продать сайт")
35+
  ; твой код:
36
  ;text2$ = "Денег: " + m
37-
              k=k+1
37+
  ;TextGadget(#mnyCnt, 140, 120, 100, 25, text2$)
38-
              text$ = "Сайтов: " + k
38+
  ;text$ = "Сайтов: " + k
39-
              TextGadget(#siteCnt, 140, 70, 100, 25, text$)
39+
  ;TextGadget(#siteCnt, 140, 70, 100, 25, text$)
40
  ; ты каждый раз пересоздаешь гаджет на том же месте с тем же айди
41
  ; это лишнее, поэтому делаем так
42
  moneyString.s = "Денег: " + Str(money)
43
  siteString.s = "Сайтов: " + Str(sites)
44
  
45
  ; меняем статусы
46
  If Not IsGadget(#mnyCnt)
47
    TextGadget(#mnyCnt,140,120,100,25,moneyString)
48
  Else
49
    SetGadgetText(#mnyCnt,moneyString)
50
  EndIf
51
  If Not IsGadget(#siteCnt)
52
    TextGadget(#siteCnt,140,70,100,25,siteString)
53
  Else
54-
                  ButtonGadget(#sellSite, 10, 110, 120, 40, "Продать сайт") : DisableGadget(#sellSite, 1)
54+
    SetGadgetText(#siteCnt,siteString)
55-
                  k=k-1
55+
  EndIf
56-
                  m=m+1
56+
  
57-
                  text2$ = "Денег: " + m
57+
  ; активируем/деактивируем кнопочку когда надо
58-
                  TextGadget(#mnyCnt, 140, 120, 100, 25, text2$)
58+
  If sites
59-
                  text$ = "Сайтов: " + k
59+
    If Not IsGadget(#sellSite)
60-
                  TextGadget(#siteCnt, 140, 70, 100, 25, text$)
60+
      ButtonGadget(#sellSite, 10, 110, 120, 40, "Продать сайт")
61
    Else
62-
                  k=k-1
62+
      DisableGadget(#sellSite,0)
63-
                  m=m+1
63+
    EndIf
64-
                  text2$ = "Денег: " + m
64+
  Else
65-
                  TextGadget(#mnyCnt, 140, 120, 100, 25, text2$)
65+
    DisableGadget(#sellSite,1)
66-
                  text$ = "Сайтов: " + k
66+
  EndIf
67-
                  TextGadget(#siteCnt, 140, 70, 100, 25, text$)
67+
EndProcedure
68
; теперь мы просто вызываем эту процедуру с указанными параметрами
69
; когда нам нужно обновить инфу
70
71
ButtonGadget(#forum, 10, 10, 120, 40, "Почитать форум")
72
 
73
Repeat
74
  ev = WaitWindowEvent()
75
  Select ev
76
    Case #PB_Event_Gadget
77
      Select EventGadget()
78
        Case #forum
79
          ; и что за тип ивента
80
          Select EventType()
81
            Case #PB_EventType_LeftClick
82
              TextGadget(#status, 140, 20, 230, 25, "Вы изучили: разработка сайтов")
83
              ButtonGadget(#forum, 10, 10, 120, 40, "Почитать форум") : DisableGadget(#forum, 1)
84
              ButtonGadget(#mkSite, 10, 60, 120, 40, "Сделать сайт")
85
          EndSelect
86
        Case #mkSite
87
          Select EventType()
88
            Case #PB_EventType_LeftClick
89
              k + 1
90
              setInfo(k,m)
91
          EndSelect
92
        Case #sellSite
93
          Select EventType()
94
            Case #PB_EventType_LeftClick
95
              If m>18
96
                ; ты можешь не закрывать текущее окно, а просто удалить или скрыть гаджеты на текущем
97
                ; изменить его размер и название
98
                CloseWindow(0)
99
                OpenWindow(1,100,100,380,190,"Симулятор вебмастера - победа",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
100
                LoadFont(#yw,"Arial Narrow", 48)
101
                TextGadget(#yw, 10, 10, 360, 170, "You WIN")
102
                SetGadgetFont(#yw, FontID(#yw))
103
                Repeat : Until #PB_Event_CloseWindow
104
                ; для урлов есть HyperLinkGadget()
105
                ; по клику на него можно повесить OpenProgram() с url в качестве параметра
106
                ; и сразу откроется твоя ссылка
107
                StringGadget(#PB_Any, 10, 150, 360, 25, "Source: http://anatolt.ru")
108
              Else
109
                If k=1
110
                  k - 1
111
                  m + 1
112
                  setInfo(k,m)
113
                Else
114
                  k - 1
115
                  m + 1
116
                  setInfo(k,m)
117
                EndIf
118
              EndIf
119
          EndSelect
120
      EndSelect
121
  EndSelect
122
Until ev = #PB_Event_CloseWindow