Advertisement
deseven

sim

Jan 26th, 2015
641
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. OpenWindow(0,100,100,380,190,"Симулятор вебмастера",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  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. Procedure setInfo(sites.l,money.l)
  35.   ; твой код:
  36.   ;text2$ = "Денег: " + m
  37.   ;TextGadget(#mnyCnt, 140, 120, 100, 25, text2$)
  38.   ;text$ = "Сайтов: " + k
  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.     SetGadgetText(#siteCnt,siteString)
  55.   EndIf
  56.  
  57.   ; активируем/деактивируем кнопочку когда надо
  58.   If sites
  59.     If Not IsGadget(#sellSite)
  60.       ButtonGadget(#sellSite, 10, 110, 120, 40, "Продать сайт")
  61.     Else
  62.       DisableGadget(#sellSite,0)
  63.     EndIf
  64.   Else
  65.     DisableGadget(#sellSite,1)
  66.   EndIf
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement