в проге не работает счетчик и поэтому не выдается сообщение. прога: дается 10 попыток попасть в бегающую мордочку, после выдается сообщение сколько раз попал. где ошибка?
| Код | Dim fx, fy As Integer Dim n As Integer Dim p As Integer
'процедура стирает рожицу Sub EraseFace(x, y As Integer) 'стирание Circle (x + 5, y - 5), 1, RGB(255, 255, 0) 'правый глаз Circle (x - 5, y - 5), 1, RGB(255, 255, 0) 'левый глаз Circle (x, y), 10, RGB(255, 255, 0), 3.14, 3.14 * 2 'улыбка 'задание цвета границы и цвета заливки, совпадающего с цветом формы FillStyle = 0 'способ заливки - сплошной FillColor = &H8000000F End Sub
'процедура рисует рожицу Sub paintFace(x, y As Integer) FillStyle = 0 'способ заливки - сплошной
FillColor = RGB(255, 255, 0) 'цвет заливки Circle (x, y), 15, RGB(0, 0, 0) 'лицо
FillColor = RGB(0, 0, 0) Circle (x + 5, y - 5), 1, RGB(0, 0, 0) 'правый глаз Circle (x - 5, y - 5), 1, RGB(0, 0, 0) 'левый глаз
'FillStyle = 0 'внутри окружность не закрашивается
'улыбка рисуется при помощи дуги Circle (x, y), 10, RGB(0, 0, 0), 3.14, 3.14 * 2 End Sub
'щелчок на кнопке "Начать" Private Sub Cmd1_Click() Cmd1.Visible = False Lbl1.Visible = False n = 0 p = 0 Call paintFace(fx, fy) Timer1.Interval = 800 Timer1.Enabled = True End Sub
'инициализация формы Private Sub form_initialize() 'Lbl1.Caption = "Сейчас по экрану будет перемещаться картинка. Ваша задача - щелкать по картинке левой кнопкой мыши. Цель - максимальное число попаданий." Form1.ScaleMode = 3 'координаты задаются в пикселах fx = 200 fy = 200 Randomize 'инициализация генератора случайных чисел End Sub
'нажата левая кнопка' 'нажатие клавиши мыши Private Sub Form1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Call EraseFace(fx, fy) If button = 1 Then MsgBox "nagata levay knopka": n = n + 1: If (x < fx - 15) And (x > fx + 15) And (y < fy - 15) And (y > fy + 15) Then p = p + 1 'попадание End If If n = 10 Then Timer1.Enabled = False: MsgBox "Выстрелов: 10. Попаданий: " + Format$(p) + ". ", vbOKOnly, "Игра закончена." 'стирание рожицы, кнопка "Начать" и сообщение снова видны Call EraseFace(fx, fy) Lbl1.Visible = True Cmd1.Visible = True End If End Sub End Sub
'обработка сигнала таймера Private Sub Timer1_Timer() 'стирание рожицы Call EraseFace(fx, fy)
'новое положение рожицы fx = Int(((Form1.ScaleWidth - 30) * Rnd) + 1) + 15 fy = Int(((Form1.ScaleHeight - 30) * Rnd) + 1) + 15 Call paintFace(fx, fy) End Sub
|
|