Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Twister (игра по цветам) волчек 0 на VBA


Автор: kall1sto 21.5.2008, 17:32
Здравствуйте, давние пользователи может и помнят мну, прошу прощения на предыдущей поднятой мной теме не было ответов, начальство не давало время для тестов скрипта. (т.к. там необходимо было тестить на нескольких машинках.
А в данный момент подскажите синтаксис "задержки" на VBA
Но не при  помощи таймера, пробовал Всякие функции типа wait, delay, sleep такого нет. 

Немного поясню : twister  - это игра на которой расположены 24 кружочка 4 цветов, т.е. каждого цвета по 6 штук. Цель ведущий крутит волчек, (на волчке 16 значений), и попадает скажем в цвет красный, часть тела - левая нога, и игрок соответственно должен занять данную позицию этой частью тела. Так вот игра делалась вручную, а не покупалась, то волчка для игры нет. Написал скрипт, который по нажатию кнопки применяет рандом к цвету и рандом к части тела. 
т.е. у меня есть useform, label
одной переменной присваиваю рандом 4 (4 цвета)
второй переменной присваиваю рандом 4 (4 части тела)
потом присваиваю фон для label соотвествующий значению первому рандому
а текст для label соотвествующий значению второму  рандому.
в конце кода стоит Go to на на чало кода, остается только  сделать задержку.
время скажем 15 секунд, что бы игрок успел за данное время переместиться на указанный кружок... вот. извините если чего не понятно спрашивайте/

Автор: Akina 21.5.2008, 21:38
Код

Sub Button_Start()
....
Timer1.Timer = 15000 ' 15000 ms
Timer1.Enabled = True
End Sub

Sub Timer1_Timer()
Timer1.Enabled = False
Label1.Foreground = Rnd1
Label1.Background = Rnd2
End Sub

Автор: kall1sto 22.5.2008, 11:55
Цитата(kall1sto @  21.5.2008,  17:32 Найти цитируемый пост)
Но не при  помощи таймера


просто не понимаю данной функции.. вот мой код:
Код

Private Sub CommandButton1_Click()
beg:
Randomize
Rnd1 = Int((4 * Rnd) + 1)
Rnd2 = Int((4 * Rnd) + 1)
If Rnd2 = 1 Then
Label1.Caption = " Левая нога"
End If
If Rnd2 = 2 Then
Label1.Caption = " Левая рука "
End If
If Rnd2 = 3 Then
Label1.Caption = " Правая нога "
End If
If Rnd2 = 4 Then
Label1.Caption = " Правая рука "
End If

If Rnd1 = 1 Then
Label1.BackColor = RGB(255, 255, 0) 'Желтый

End If
If Rnd1 = 2 Then
Label1.BackColor = RGB(255, 0, 0) 'Красный
End If
If Rnd1 = 3 Then
Label1.BackColor = RGB(0, 0, 255) 'Синий
End If
If Rnd1 = 4 Then
Label1.BackColor = RGB(0, 255, 64) 'Зеленый
End If
GoTo beg
End Sub


просьба подсказать принцип действия таймера, просто даже не понимаю в какой очередности оно вызывается... вернее оноу меня вообще не задействовано...

Автор: Akina 22.5.2008, 12:12
Код

Option Explicit

Dim Rnd1 As Long
Dim Rnd2 As Long

Private Sub Command1_Click()
Randomize Timer
Rnd1 = Int((4 * Rnd) + 1)
Rnd2 = Int((4 * Rnd) + 1)
Timer1.Interval = 15000  ' 15000 ms
Timer1.Enabled = True
End Sub

Sub Timer1_Timer()
Timer1.Enabled = False
Select Case Rnd1
Case 1
  Label1.Caption = " Левая нога"
Case 2
  Label1.Caption = " Левая рука "
Case 3
  Label1.Caption = " Правая нога "
Case 4
  Label1.Caption = " Правая рука "
End Select
Select Case Rnd2
Case 1
  Label1.BackColor = RGB(255, 255, 0) 'Желтый
Case 2
  Label1.BackColor = RGB(255, 0, 0) 'Красный
Case 3
  Label1.BackColor = RGB(0, 0, 255) 'Синий
Case 4
  Label1.BackColor = RGB(0, 255, 64) 'Зеленый
End Select
End Sub

Цитата(kall1sto @  22.5.2008,  12:55 Найти цитируемый пост)
просто даже не понимаю 

Вам надо начать с самых основ - использование if-if вместо case свидетельствует о значительных пробелах. Как, впрочем, и зацикливание метода.

Автор: kall1sto 22.5.2008, 14:35
Как я понимаю, просьба поправить:

1. Программа запускается с нажатия кнопки.
2. По нажатию кнопки выполняется функция Private Sub Command1_Click()
3. Получается, что одна из этих строк
Код

Timer1.Interval = 15000  ' 15000 ms
Timer1.Enabled = True
 
вызывает функцию Sub Timer1_Timer()
...



если пишу вот так:

Код

Private Sub CommandButton1_Click()
Randomize Timer
Rnd1 = Int((4 * Rnd) + 1)
Rnd2 = Int((4 * Rnd) + 1)
Timer1.Interval = 1000  ' 15000 ms
Timer1.Enabled = False
End Sub

Sub Timer1_Timer()
Timer1.Enabled = True
Select Case Rnd1
Case 1
  Label1.Caption = " Ëåâàÿ íîãà"
Case 2
  Label1.Caption = " Ëåâàÿ ðóêà "
Case 3
  Label1.Caption = " Ïðàâàÿ íîãà "
Case 4
  Label1.Caption = " Ïðàâàÿ ðóêà "
End Select
Select Case Rnd2
Case 1
  Label1.BackColor = RGB(255, 255, 0) 
Case 2
  Label1.BackColor = RGB(255, 0, 0) 
Case 3
  Label1.BackColor = RGB(0, 0, 255) 
Case 4
  Label1.BackColor = RGB(0, 255, 64) 
End Select
End Sub


то выскакивает ошибка на 5 строке: 
и выделяет слово  Timer1. 
Есть предположение, что для таймера необходимо подключить библиотеку... 

Автор: Akina 22.5.2008, 15:14
Цитата(kall1sto @  22.5.2008,  15:35 Найти цитируемый пост)
Получается, что одна из этих строк
[skipped] 
вызывает функцию Sub Timer1_Timer()

Нет.
Цитата(kall1sto @  22.5.2008,  15:35 Найти цитируемый пост)
если пишу вот так:

Ну если Вы неспособны даже код перенести в приложение и потом обратно в форум без ошибок - о чем можно дальше говорить...

Автор: kall1sto 22.5.2008, 15:47
Впринципе я всегда видел, что  на форумах  вам "влом" отвечать... Просто форум нужен для общения, а не для того что бы пользователей оскорблять (речь идет не про меня, а про кучу других тем), чем таким общением можно добиться? А в частности со мной код я переносил правильно!!!, но из-за неработоспособности я пробовал ставить вызов функции на кнопку... воти все!!! так что прежде чем "посылать" может стоит разобраться? вот был карьерист, одно удовольствие общаться...

Автор: kall1sto 22.5.2008, 16:06
http://www.rapidshare.ru/682817  видео того что я делаю 1,28 метра прошу...

Автор: Akina 22.5.2008, 16:47
Цитата(kall1sto @  22.5.2008,  16:47 Найти цитируемый пост)
код я переносил правильно!!!, 

То-то у вас строки включения и выключения таймера местами поменялись...

Автор: kall1sto 22.5.2008, 16:53
1. 
Цитата(kall1sto @  22.5.2008,  14:35 Найти цитируемый пост)
если пишу вот так:


2. 
Цитата(kall1sto @  22.5.2008,  15:47 Найти цитируемый пост)
но из-за неработоспособности


Я не хочу заниматься упреками,  пусть буду я не прав... но проблема то осталась


Автор: kall1sto 26.5.2008, 16:26
спасибо, что "подсказали"... реализовал только с помощью autohotkey

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)