Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: ошибка в программе, помогите найти. Добавлено: 24.10.04 22:42  

Автор вопроса:  Unheilig | Web-сайт: www.tarjaturunen.narod.ru | ICQ: 336859855 
такая трабла:

пишу анализатор боёв.

на форме опшбутоны (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-сайт: www.tarjaturunen.narod.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 25.10.04 00:53
Мда... Ну ничего у меня в голове бывает мусор и похлеще :)

Ответить

Номер ответа: 5
Автор ответа:
 Unheilig



ICQ: 336859855 

Вопросов: 9
Ответов: 32
 Web-сайт: www.tarjaturunen.narod.ru
 Профиль | | #5
Добавлено: 25.10.04 03:32
to ZagZag: это не бред, это креатифф :) Ну что если раньше я не имел дела с прогрессбарами, теперь буду знать. Спасибо!

to CyRax: thanx for support ;)

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 25.10.04 03:52
Unheilig,
 Твой листинг характеризует тебя не только как новичка в VB, а и как новичка в программировании вообще. Как долго ты изучаешь программирование?

Ответить

Номер ответа: 7
Автор ответа:
 Unheilig



ICQ: 336859855 

Вопросов: 9
Ответов: 32
 Web-сайт: www.tarjaturunen.narod.ru
 Профиль | | #7
Добавлено: 25.10.04 04:30
to CyRax : Так примерно год, а усиленно штудировать начал месяц назад. Учился на примерах :)

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 25.10.04 05:46
 А что это у тебя, игруха? Если честно (как я считаю), то для написания игры немало знать надо.
 А если на VB-пишешь - ещё больше. Потому как нужно неординарный ум иметь чтобы обойти расставленные на каждом шагу ограничения.
 Кстати, а ты Power Basic не пробовал учить? Лично мне он понравился. Не сразу конечно, но что-то в нём есть. Какая то изюминка.

Ответить

Номер ответа: 9
Автор ответа:
 Unheilig



ICQ: 336859855 

Вопросов: 9
Ответов: 32
 Web-сайт: www.tarjaturunen.narod.ru
 Профиль | | #9
Добавлено: 25.10.04 06:17
Если честно то игруха :) Знаю я в принципе немного, но учусь по тихоньку. Всегда хотел сделать игру вот и решил сбацать сам, только действительно много проблем возникает, то это как , то это ... с программой полегче будет. А Power Basic не пробовал, я как комп купил сразу на ВБ подсел, пробовал Delphi, C++ Builder, не понравилось, на паскаль похоже, а паскаль меня в школе достал уже :)

Ответить

Номер ответа: 10
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: www.tarjaturunen.narod.ru
 Профиль | | #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-сайт: www.tarjaturunen.narod.ru
 Профиль | | #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-сайт: intermult.boom.ru
 Профиль | | #15
Добавлено: 25.10.04 11:46
ИМХО Паскаль - SUXX
Чем это тебе паскаль не угодил?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам