0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29

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

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

Студворк — интернет-сервис помощи студентам
Возникла такая задача: после ввода текста в 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
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
05.08.2013, 21:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Phoenix97 Посмотреть сообщение
Так если m не повышать, программа будет удалять только первую строку, а если сделать m = m - 1 то вообще выдаст ошибку.
Ну ты через какую-то переменную выбираешь Номер следующего вопроса, вот ЭТУ переменную после удаления строки не повышай - оставь такую как была....
0
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
05.08.2013, 21:10  [ТС]
Цитата Сообщение от morgann55 Посмотреть сообщение
Ну ты через какую-то переменную выбираешь Номер следующего вопроса, вот ЭТУ переменную после удаления строки не повышай - оставь такую как была...
Наверное, я чего-то не понимаю, поскольку m и есть та переменная, которая меняет номер следующего вопроса...
И если её не менять, то будет то, что я описал выше.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
05.08.2013, 21:26
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от Phoenix97 Посмотреть сообщение
The trick, извини, просто не совсем понял, как это сделать. Если не сложно, можешь привести пример?
Могу
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
28
29
30
31
32
33
34
35
Option Explicit
 
Private Type tRecord
    Text As String
    Visible As Boolean
End Type
 
Dim Rec() As tRecord
 
Private Sub Form_Load()
    Dim I As Long
    
    ReDim Rec(5)
    
    Rec(0).Text = "VB 6 (0)": Rec(0).Visible = True
    Rec(1).Text = "Asm (1)": Rec(1).Visible = True
    Rec(2).Text = "C++ (2)": Rec(2).Visible = True
    Rec(3).Text = "Pascal (3)": Rec(3).Visible = True
    Rec(4).Text = "C# (4)": Rec(4).Visible = True
    Rec(5).Text = "Java (5)": Rec(5).Visible = True
    
    For I = 0 To UBound(Rec)
        List1.AddItem Rec(I).Text
    Next
End Sub
 
Private Sub List1_Click()
    Dim I As Long, Index As Long
    Do Until I > UBound(Rec)
        If Rec(I).Visible Then Index = Index + 1
        If Index = List1.ListIndex + 1 Then Me.Caption = "Index = " & I: Rec(I).Visible = False: Exit Do
        I = I + 1
    Loop
    List1.RemoveItem (List1.ListIndex)
End Sub
2
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.08.2013, 21:58
Лучший ответ Сообщение было отмечено The trick как решение

Решение

вариант без использования Select, если правильно понял, что надо
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 t$(), otv$(), i%, n%
 
Private Sub Form_Load()
  n = 5
  atv_List1 n
End Sub
 
Private Sub List1_Click()
i = List1.ListIndex
List1.RemoveItem i
MsgBox t(i + 1) & vbNewLine & otv(i + 1)
End Sub
 
Sub atv_List1(k%)
ReDim t(k), otv(k)
  For i = 1 To k
    List1.AddItem "Вопрос " & i
    t(i) = "Текст вопроса №" & i
    otv(i) = "Ожидаемый текст ответа на вопрос №" & i
Next i
End Sub
 
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 And List1.ListCount = 0 Then
   atv_List1 n
End If
End Sub
2
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
05.08.2013, 21:59
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Тоже кое-что набросал.
Посмотри, может пригодится

Вопросы и ответы - в отдельном текстовом файле такой структуры:

Вопрос №1
ответ №1
ответ №2
ответ №3
ответ №4
Вопрос №2
ответ №1
----------
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Private Type Questions
    'QuNumber As Integer
    QuHasBeen As Boolean
    Question As String
End Type
 
Private Type Answers
    'AnNumber As Integer
    AnHasBeen As Boolean
    Answer As String
End Type
 
Dim Qu() As Questions             ' Массив структур вопросов
Dim An() As Answers               ' Массив структур оветов
Dim countQuestions As Integer     ' Количество вопросов
Const countAnswers As Integer = 4 ' Количество ответов на каждый вопрос
Dim i As Integer, j As Integer
Dim currentQuestion As Integer    ' Номер текущего вопроса
Dim currentAnswer As Integer      ' Номер текущего ответа
 
Private Sub Form_Load()
    Dim St, ff As Integer, n As Integer
    ff = FreeFile
    Open App.Path & "\QuestionsAnswers.txt" For Input As #ff
         Do While Not EOF(ff)
           Line Input #ff, St
           n = n + 1        'считаем строки в текстовом файле
         Loop
    Close #ff
    countQuestions = n / (countAnswers + 1)
    ReDim Qu(1 To countQuestions), An(1 To countQuestions, 1 To countAnswers)
    ' Записываем вопросы и ответы из файла в соответствующие массивы структур
    Open App.Path & "\QuestionsAnswers.txt" For Input As #ff
          For i = 1 To countQuestions
              Line Input #ff, Qu(i).Question
              List1.AddItem Qu(i).Question
              For j = 1 To countAnswers
                   Line Input #ff, An(i, j).Answer
              Next j
          Next i
    Close #ff
End Sub
 
Private Sub List1_Click()
    currentQuestion = List1.ListIndex + 1
    FillList
    Label1.Caption = Qu(currentQuestion).Question
    Label2.Caption = ""
End Sub
 
Private Sub List2_Click()
    For j = 1 To countAnswers
        If List2.List(List2.ListIndex) = An(currentQuestion, j).Answer Then currentAnswer = j
    Next j
    An(currentQuestion, currentAnswer).AnHasBeen = True
    Label2.Caption = An(currentQuestion, currentAnswer).Answer
    FillList
End Sub
 
Sub FillList()
    List2.Clear
    For j = 1 To countAnswers
       If Not An(currentQuestion, j).AnHasBeen Then
           List2.AddItem An(currentQuestion, j).Answer
       End If
    Next j
End Sub
Вложения
Тип файла: rar 9.rar (2.2 Кб, 2 просмотров)
2
05.08.2013, 22:10  [ТС]

Не по теме:

Всё это определённо пригодится, спасибо всем!

0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
05.08.2013, 22:18
А вот еще, чтобы использованные вопросы тоже убирались из листбокса.
Получается типа диалога.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Private Type Questions
    'QuNumber As Integer
    QuHasBeen As Boolean
    Question As String
End Type
 
Private Type Answers
    'AnNumber As Integer
    AnHasBeen As Boolean
    Answer As String
End Type
 
Dim Qu() As Questions             ' Массив структур вопросов
Dim An() As Answers               ' Массив структур оветов
Dim countQuestions As Integer     ' Количество вопросов
Const countAnswers As Integer = 4 ' Количество ответов на каждый вопрос
Dim i As Integer, j As Integer
Dim currentQuestion As Integer    ' Номер текущего вопроса
Dim currentAnswer As Integer      ' Номер текущего ответа
 
Private Sub Form_Load()
    Dim St, ff As Integer, n As Integer
    ff = FreeFile
    Open App.Path & "\QuestionsAnswers.txt" For Input As #ff
         Do While Not EOF(ff)
           Line Input #ff, St
           n = n + 1        'считаем строки в текстовом файле
         Loop
    Close #ff
    countQuestions = n / (countAnswers + 1)
    ReDim Qu(1 To countQuestions), An(1 To countQuestions, 1 To countAnswers)
    ' Записываем вопросы и ответы из файла в соответствующие массивы структур
    Open App.Path & "\QuestionsAnswers.txt" For Input As #ff
          For i = 1 To countQuestions
              Line Input #ff, Qu(i).Question
              List1.AddItem Qu(i).Question
              For j = 1 To countAnswers
                   Line Input #ff, An(i, j).Answer
              Next j
          Next i
    Close #ff
End Sub
 
Private Sub List1_Click()
    For j = 1 To countQuestions
        If List1.List(List1.ListIndex) = Qu(j).Question Then currentQuestion = j
    Next j
    Qu(currentQuestion).QuHasBeen = True
    Text1.Text = Text1.Text & "Вопрос : " & Qu(currentQuestion).Question & vbCrLf
    FillList
    List1.Clear
End Sub
 
Private Sub List2_Click()
    For j = 1 To countAnswers
        If List2.List(List2.ListIndex) = An(currentQuestion, j).Answer Then currentAnswer = j
    Next j
    An(currentQuestion, currentAnswer).AnHasBeen = True
   ' Label2.Caption = An(currentQuestion, currentAnswer).Answer
    Text1.Text = Text1.Text & "Ответ : " & An(currentQuestion, currentAnswer).Answer & vbCrLf & vbCrLf
    FillList
    List2.Clear
End Sub
 
Sub FillList()
    'List1.Clear: List2.Clear
    For j = 1 To countAnswers
       If Not An(currentQuestion, j).AnHasBeen Then
           List2.AddItem An(currentQuestion, j).Answer
       End If
       If Not Qu(j).QuHasBeen Then
           List1.AddItem Qu(j).Question
       End If
    Next j
End Sub
Вложения
Тип файла: rar 99.rar (2.1 Кб, 2 просмотров)
1
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
05.08.2013, 23:39
Лучший ответ Сообщение было отмечено как решение

Решение

Вот сделал чтоб всё управлялось с клавиатуры:
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
28
29
30
31
Dim m%
'---------------
Private Sub form_load()
'For i = 0 To 10: List1.List(i) = Str(i):Next i ' это для проверки
List1.ListIndex = 0
m = 0
End Sub
 
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
List1.ListIndex = m ' на случай потери фокуса
If KeyCode = 13 Then
List1.RemoveItem (m): If m > List1.ListCount - 1 Then m = List1.ListCount - 1
List1.ListIndex = m
End If
If KeyCode = 40 Then
m = m + 1: If m > List1.ListCount - 1 Then m = List1.ListCount - 1
End If
If KeyCode = 38 Then
m = m - 1: If m < 0 Then m = 0
End If
 
Select Case List1.List(m) 'èëè Select Case m - ñàì ðàçáåð¸øüñÿ ÷òî òåáå íàäî
Case 1:
'<...>
Case 2:
'<...>
Case 3:
'<...>
'È ò.ä.
End Select
End Sub
(вроде ты так хотел...)
Если тебе уже подсказали лучшее решение, то в топку...

Добавлено через 38 минут
Может в самом начале процедуры Private Sub Form_KeyDown надо добавить
Visual Basic
1
List1.ListIndex = m ' на случай потери фокуса
(добавил на доп.правке)

Добавлено через 7 минут
А вообще лучше использовать Form_KeyUp, чтоб не было повторов...
3
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 29
06.08.2013, 00:03  [ТС]
morgann55, да, ваш вариант мне более всего подходит, однако пока он не совсем стабильно работает в программе, но думаю, смогу подогнать его под программу (или программу под него)
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
06.08.2013, 02:25
Ты при подгоне следи чтоб m и ИндексЛиста всегда были равны друг-другу !! Если понадобится кликать мышкой по Листу, то в процедуре клика пропиши обратное приравнивание:
Visual Basic
1
m = List1.ListIndex
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2013, 02:25
Помогаю со студенческими работами здесь

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
Дано две целочисленные матрицы размером . Найти сумму матриц. Умножить полученную матрицу на значение у: Определить: количество...


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

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru