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

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

30.06.2013, 23:02. Показов 5861. Ответов 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru