Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29

Создание текстового квеста на Visual Basic 6

30.06.2013, 23:02. Показов 5475. Ответов 49
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возникла такая задача: после ввода текста в TextBox необходимо подтвердить его нажатием клавиши Enter. В принципе, можно было бы сделать отдельную кнопку, но тогда в игре пришлось бы использовать мышку, что крайне неудобно.
Так же я был бы рад узнать, как сделать так, что бы после нажатия Enter текст в TextBox очищался.
Заранее благодарен за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.06.2013, 23:02
Ответы с готовыми решениями:

Создание текстового редактова на Basic в Visual Studio 2008
Может у кого-то есть написанный на Basic в Visual Studio 2008 простенький текстовый редактор???? Помогите пожалуйста, курсовая...

Visual Basic 2008. Создание текстового файла на клик
Требуется чтобы при нажатии на кнопку,создавался текстовый файл,по заданному адресу(C:\file.txt - к примеру) За тем нужно чтобы при...

Структура текстового квеста
Хочу попытаться написать текстовый квест по принципу пользователю дают текст с описанием события и пару ответов(или действий). Исходя из...

49
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
30.06.2013, 23:18
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
       MsgBox Text1.Text
       Text1.Text = ""
    End If
End Sub
 
Private Sub Form_Load()
    KeyPreview = True
    Me.Show
    Text1.SetFocus
End Sub
1
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 00:47  [ТС]
Огромное спасибо, а что, если сделать так:
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 And Text1.Text = " " Then
    Label1.Caption = " "
    Text1.Text = ""
    ElseIf KeyCode = 13 Then
    Text1.Text = ""
    End If
End Sub
Private Sub Form_Load()
    KeyPreview = True
На мой взгляд, так будет проще и текстовое поле каждый раз будет очищаться.
P.S. А для чего служат функции Me.Show и Text1.SetFocus?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 06:25
Цитата Сообщение от Phoenix97 Посмотреть сообщение
А для чего служат функции Me.Show и Text1.SetFocus?
Можете выбросить их в пропасть, они Вам не нужны.
0
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 13:26  [ТС]
А вот ещё вопрос появился.
Необходимо создать анимацию для слова "Пролог", то есть что бы оно медленно возникло (то есть с нарастанием яркости), какое то время повисело, после чего так же медленно растворилось.
Я думаю, можно создать несколько Label с разной степенью яркости, и в программном коде написать следующее:

Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Form_Load()
Label1.visible = true
...
Label2.visible = true
Label1.visible = false
...
Label3.visible = true
Label2.visible = false
...
Label3.visible = false
Label2.visible = true
...
Label2.visible = false
Label1.visible = true
и т.д. (Вместо многоточий здесь потребуется вставить команду вроде таймера, что бы через определённое кол-во секунд программа приступала к следующей команде)
Тогда если Label1 будет самой тёмной, а Label3 самой светлой, получится эффект анимации. Но вся проблема в том, что я не знаю, чем заменить многоточия...
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 13:59
Цитата Сообщение от Phoenix97 Посмотреть сообщение
можно создать несколько Label с разной степенью яркости



На форме метка, кнопка и таймер

Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim Col As Long, dC As Integer
 
Private Sub Command1_Click()
     Label1.Caption = "Ïðîëîã"
     Timer1.Enabled = True
     dC = 5
     Col = 0
End Sub
 
Private Sub Form_Load()
     Timer1.Enabled = False
     Timer1.Interval = 100
     Label1.BackColor = vbWhite
     Label1.ForeColor = vbWhite
     Label1.FontSize = 24
End Sub
 
 
Private Sub Timer1_Timer()
    Col = Col + dC
    If Col >= 255 Then dC = -dC: Exit Sub
    Label1.ForeColor = RGB(255 - Col, 255 - Col, 255 - Col)
    If Col >= 255 Then Timer1.Enabled = False
End Sub
1
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 16:36  [ТС]
А если необходимо сделать на чёрном фоне и при загрузке формы? Я попробовал сделать вот так, но тогда программа ругается на Label1.ForeColor:
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim Col As Long, dC As Integer
 
Private Sub Form_Load()
       Timer1.Interval = 50
     Label1.BackColor = vbBlack
     Label1.ForeColor = vbBlack
     Label1.FontSize = 36
     Label1.Font = "gabriola"
  
  Label1.Caption = "Ïðîëîã"
     Timer1.Enabled = True
     dC = 5
     Col = 255
End Sub
 
 
Private Sub Timer1_Timer()
    Col = Col - dC
    If Col = 0 Then dC = -dC:  Exit Sub
    [B]Label1.ForeColor = RGB(255 - Col, 255 - Col, 255 - Col)[/B]
    If Col = 0 Then Timer1.Enabled = False
    
End Sub
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 17:15
Цитата Сообщение от Phoenix97 Посмотреть сообщение
на чёрном фоне и при загрузке формы
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Dim Col As Long, dC As Integer
 
Private Sub Form_Load()
     Label1.BackColor = vbBlack
     Label1.ForeColor = vbBlack
     Label1.FontSize = 36
     Label1.Font = "gabriola"
     Label1.Caption = "Ïðîëîã"
     Timer1.Interval = 50
     Timer1.Enabled = True
     dC = 5
     Col = 0
End Sub
 
 
Private Sub Timer1_Timer()
    Col = Col + dC
    If Col <= 0 Then
        Timer1.Enabled = False
        Exit Sub
    ElseIf Col > 255 Then
        dC = -dC
        Exit Sub
    Else
        Label1.ForeColor = RGB(Col, Col, Col / 2)
    End If
End Sub
1
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 19:45  [ТС]
И всё же, возможно ли сделать паузу перед затуханием текста? Что бы он высвечивался ещё какое-то время?
Так же был бы рад узнать, как организовать условие вроде такого:

Если в текстовом поле написано " " то присвой Х значение 1.
Если Х = 1, то напиши на Label1 " "

Я пробовал сделать так, но к сожалению ничего не вышло:

Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
Dim X as String
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 And Text1.Text = " " Then
X = 1
End If
End Sub
 
Private Sub Form_Load()
If X = 1 Then
Label1.Caption = " "
End If
End Sub
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 19:57
Цитата Сообщение от Phoenix97 Посмотреть сообщение
Dim X as String
Visual Basic Скопировано
1
Dim X as integer
Или, если оставите стринг, то тогда заключите значение в кавычки
X="1"


-----------------------------------------------



Цитата Сообщение от Phoenix97 Посмотреть сообщение
И всё же, возможно ли сделать паузу перед затуханием текста?
Цитата Сообщение от SoftIce Посмотреть сообщение
Visual Basic Скопировано
1
ElseIf Col > 255 Then
Увеличьте 255, ничего страшного не произойдёт, но появиться задержка
0
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 20:24  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Dim X as integer
А возможно сделать переменную Х глобальной? Просто мне нужно сделать так, что бы на Form1 присвоить X значение 1, а на Form2 сделать условие с Х = 1.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 20:27
Добавить в проект модуль, и в нем объявить эту переменную
0
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 21:05  [ТС]
Видимо, я что-то делаю не так, потому что вторая форма не видит значения этой переменной.
Форма 1:
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
Dim Col As Long, dC As Integer
Private Sub Timer1_Timer()
Col = Col + dC
If Col <= 0 Then
    Form2.Visible = True
    Form1.Visible = False
    Timer1.Enabled = False
    X = 1
    Exit Sub
    End If
 
End Sub
Форма 2:
Visual Basic Скопировано
1
2
3
4
5
Private Sub Form_Load()
 If X = 1 Then
        Label1.Caption = " "
        End If
End sub
И Модуль:
Dim X As Integer
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 21:12
Visual Basic Скопировано
1
Public x as integer
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.07.2013, 21:37
Создание текстового квеста на Visual Basic 6
1
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
01.07.2013, 23:20  [ТС]
Теперь вопросы по ListBox:
Как осуществляется выбор между позициями listbox'a? Мне нужно, что бы при нажатии на определённую позицию менялось содержание Label

Visual Basic Скопировано
1
2
3
4
5
6
7
8
Private Sub List1_Click()
 
    Label1.Caption = "1"
 
    Label1.Caption = "2"
 
    Label1.Caption = "3"
End Sub
Добавлено через 22 минуты

Не по теме:

Огромное спасибо за подробное описание создания глобальной переменной! Без неё весь мой проект накрылся бы медным тазом...

0
Модератор
10031 / 3878 / 882
Регистрация: 22.02.2013
Сообщений: 5,823
Записей в блоге: 78
02.07.2013, 00:03
Цитата Сообщение от Phoenix97 Посмотреть сообщение
Мне нужно, что бы при нажатии на определённую позицию менялось содержание Label
Смотри свойство ListIndex Listbox'a
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
02.07.2013, 06:08
Цитата Сообщение от Phoenix97 Посмотреть сообщение
выбор между позициями listbox'a?
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub List1_Click()
    Dim s As String
    Select Case List1.ListIndex + 1 ' :)
    
        Case 1: s = "11111111"
        Case 2: s = "2222222222222"
        Case 3: s = "333333333333333"
        Case 4: s = "444444444"
        Case 5: s = "55555555"
        Case 6: s = "666666666"
 
        ' и так далее
        
        
        Case Else: s = ""
    End Select
    Label1.Caption = s
End Sub
0
 Аватар для PAnT0P
1491 / 586 / 106
Регистрация: 26.03.2012
Сообщений: 1,039
02.07.2013, 09:22
Цитата Сообщение от Phoenix97 Посмотреть сообщение
В принципе, можно было бы сделать отдельную кнопку, но тогда в игре пришлось бы использовать мышку, что крайне неудобно.
Необязательно, достаточно свойству Default нужной кнопки присвоить значение True
Visual Basic Скопировано
1
Command1.Default = True
И тогда при нажатие на Enter будет нажиматься наша кнопка, где бы фокус не находился.
Аналогично свойство Cancel равный True будет перехватывать нажатие клавиши Esc
2
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
02.07.2013, 17:43  [ТС]
А возможно сделать прокрутку для ListBox'a при помощи стрелок на клавиатуре? Потому как сейчас, если нажать на какую-либо из стрелок, выполняется команда, аналогичная List1_Click().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.07.2013, 17:43
Помогаю со студенческими работами здесь

Visual Basic 6 Как вытащить из текстового поля текст компонент WebBrowser
Используется Компонент webbrowser прикол в том что нету name а только имя класса my-input6 а как по нему вытащить из тектового поля текст...

Map для текстового квеста
Доброго времени суток,пишу скрипт для текстовой игры и не знаю как привязать к коду map и текст с описанием действий,не могу привязать...

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных. Ориентировочный вид окна программы и...

Создание матрицы в Visual Basic
Дано две целочисленные матрицы размером . Найти сумму матриц. Умножить полученную матрицу на значение у: Определить: количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи будет отменено как метод обработки данных из double buffering. Формулы от LM конечно с ошибками.
Hrethgir 10.04.2025
В продолжение Вообще задача стояла не так остро - 1. Во вторых прямое соотношение углов через соотношения координат отрезков - невозможно. Но тем не менее. Эта LM дала ответ похожий на нормальный. . . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер