Страница: 1 | 2 |
Вопрос: ошибка в программе, помогите найти.
Добавлено: 24.10.04 22:42
Автор вопроса: Unheilig | Web-сайт:
такая трабла:
пишу анализатор боёв.
на форме опшбутоны (8 шт), 2 прогрессбара (линия жизни)
и одна кнопка.
я выбираю куда бить и чего защищать, комп выбирает тоже (Randomize).
так вот в переменные забивается значения моих опшбутонов и значения компа, и если у меня значение 1 (пр., удар по голове), а у компа 2, 3 или 4 то у него линия жизни уменьшается на 10 (с каждым ударом), ну то есть он защищал не голову а другие места, то за то и получил :)
только пишу так, но ничего не выходит, где ошипка, не поиму.
Dim at_position As Byte 'позиция моего удара
Dim pr_position As Byte 'позиция моей защиты
Dim e_blow As Byte 'удар компа
Dim e_protect As Byte 'защита компа
Dim i_life As Byte ' линия жизни у меня
Dim e_life As Byte 'линия жизни компа
Private Sub Form_Load()
e_life = 100
i_life = 100
End Sub
Private Sub e_attack()
Randomize
m = Int(Rnd * 3) + 1
If u = 1 Then e_blow = 1
If u = 2 Then e_blow = 2
If u = 3 Then e_blow = 3
If u = 4 Then e_blow = 4
n = Int(Rnd * 3) + 1
If i = 1 Then e_protect = 1
If i = 2 Then e_protect = 2
If i = 3 Then e_protect = 3
If i = 4 Then e_protect = 4
End Sub
Private Sub blow()
If head.Value = True Then at_position = 1 ' бью по голове
If korpus.Value = True Then at_position = 2
If pah.Value = True Then at_position = 3
If legs.Value = True Then at_position = 4
End Sub
Private Sub calc()
If at_position = 1 And e_protect = 2 Or 3 Or 4 Then ProgressBar2.Value = e_life - 10 Else
If at_position = 2 And e_protect = 1 Or 3 Or 4 Then ProgressBar2.Value = e_life - 10 Else
If at_position = 3 And e_protect = 1 Or 2 Or 4 Then ProgressBar2.Value = e_life - 10 Else
If at_position = 4 And e_protect = 1 Or 2 Or 3 Then ProgressBar2.Value = e_life - 10 Else
End Sub
Private Sub Command1_Click()
e_attack
blow
calc
End Sub
Ответы
Всего ответов: 29
Номер ответа: 1
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #1
Добавлено: 24.10.04 23:15
Ц-ц-ц...
Ни разу не видел НАСТОЛЬКО запущенного кода
Вот это
If u = 1 Then e_blow = 1
If u = 2 Then e_blow = 2
If u = 3 Then e_blow = 3
If u = 4 Then e_blow = 4
заменяется
на
u = e_blow
------------------------
If i = 1 Then e_protect = 1
If i = 2 Then e_protect = 2
If i = 3 Then e_protect = 3
If i = 4 Then e_protect = 4
на
i = e_protect
И Т. Д.
Номер ответа: 2
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #2
Добавлено: 24.10.04 23:38
Просто у меня нестандартные подходы к решения задач
Ну а если серьёзно, то проблема осталась. при первом ударе отнимается 10 жизней а дальше нет
Номер ответа: 3
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #3
Добавлено: 24.10.04 23:54
Я лично вообще не понял вот этого чуда VB
Private Sub calc()
If at_position = 1 And e_protect = 2 Or 3 Or 4 Then ProgressBar2.Value =
e_life - 10 Else
If at_position = 2 And e_protect = 1 Or 3 Or 4 Then ProgressBar2.Value =
e_life - 10 Else
If at_position = 3 And e_protect = 1 Or 2 Or 4 Then ProgressBar2.Value =
e_life - 10 Else
If at_position = 4 And e_protect = 1 Or 2 Or 3 Then ProgressBar2.Value =
e_life - 10 Else
End Sub
Как же это работает?
Ведь, если правильно оформить то получится
Private Sub calc()
If at_position = 1 And e_protect = 2 Or 3 Or 4 Then
ProgressBar2.Value = e_life - 10
Else
If at_position = 2 And e_protect = 1 Or 3 Or 4 Then
ProgressBar2.Value = e_life - 10
Else
If at_position = 3 And e_protect = 1 Or 2 Or 4 Then
ProgressBar2.Value = e_life - 10
Else
If at_position = 4 And e_protect = 1 Or 2 Or 3
Then ProgressBar2.Value = e_life - 10
Else
End Sub
ВООБЩЕ БРЕД!!! Как это работает? (Я не критикую, я удивлени )
Попробуй не
ProgressBar2.Value = e_life - 10
А вот это
e_life = e_life - 10
ProgressBar2.Value = e_life
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #4
Добавлено: 25.10.04 00:53
Мда... Ну ничего у меня в голове бывает мусор и похлеще
Номер ответа: 5
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #5
Добавлено: 25.10.04 03:32
to ZagZag: это не бред, это креатифф Ну что если раньше я не имел дела с прогрессбарами, теперь буду знать. Спасибо!
to CyRax: thanx for support
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 25.10.04 03:52
Unheilig,
Твой листинг характеризует тебя не только как новичка в VB, а и как новичка в программировании вообще. Как долго ты изучаешь программирование?
Номер ответа: 7
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #7
Добавлено: 25.10.04 04:30
to CyRax : Так примерно год, а усиленно штудировать начал месяц назад. Учился на примерах
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 25.10.04 05:46
А что это у тебя, игруха? Если честно (как я считаю), то для написания игры немало знать надо.
А если на VB-пишешь - ещё больше. Потому как нужно неординарный ум иметь чтобы обойти расставленные на каждом шагу ограничения.
Кстати, а ты Power Basic не пробовал учить? Лично мне он понравился. Не сразу конечно, но что-то в нём есть. Какая то изюминка.
Номер ответа: 9
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #9
Добавлено: 25.10.04 06:17
Если честно то игруха Знаю я в принципе немного, но учусь по тихоньку. Всегда хотел сделать игру вот и решил сбацать сам, только действительно много проблем возникает, то это как , то это ... с программой полегче будет. А Power Basic не пробовал, я как комп купил сразу на ВБ подсел, пробовал Delphi, C++ Builder, не понравилось, на паскаль похоже, а паскаль меня в школе достал уже
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 25.10.04 06:25
Слушай, а ты что в спецшколе какой учился? У нас Паскаль в институте преподавали (я кстати на него ни разу так и не пришёл), а Бейсик в школе.
Номер ответа: 11
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #11
Добавлено: 25.10.04 07:01
Когда в институте предложили изучать Паскаль, с ужасом сразу попросил препода не мучить меня, а взять в качестве автомата по курсу прогу на ТурбоСИ, считающую определители произвольного порядка. К великому счастью он согласился и Паскаль я как не знал, так и не знаю. ИМХО Паскаль - SUXX!
Номер ответа: 12
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #12
Добавлено: 25.10.04 08:57
НЕ школа обычная, а класс с тех. уклоном. А паскалем нас мучили - мучили, а я его как не учил так и счас понять не могу все эти задачки имхо примитив полный, вб рулит, не надо много заморачиваться. имхо
Номер ответа: 13
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #13
Добавлено: 25.10.04 11:12
А у нас в школе тоже опрос был что изучать Pascal или Basic...
Большинство победило... теперь изучаЮТ этот Basic... GW... GWBasic
А я готовлюсь в городской олимпиаде - я там один на Basic'e решаю, остальные
все на Pascal, ктото на C++
Номер ответа: 14
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #14
Добавлено: 25.10.04 11:31
to CyRax: подскажи, если можешь ... нужно просто сверить значения переменных, x = 1 (удар по голове, к прим.), y выбирается рандомно (от 1 до 4-как бы 4 части тела). Так вот если они совпали, то переменная жизни не меняется (life = life), а если y = 2,3 или 4, тогда отнимается жизнь (life = life - 10). я пробовал уже все конструкции if .. then .. else, ну не получается, я в отчаяньи, дайте веревку и мыло а лучше совет как это сделать
Номер ответа: 15
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #15
Добавлено: 25.10.04 11:46