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 |