Кафедра системного аналізу та управління
Курсова робота
За технологією програмування
«Гра 'Хто хоче стати мільйонером?'»
Дубна, 2003
Зміст
1. Введення
2. Постановка завдання
3.Теоретіческая частина
4. Опис програми.
5. Блок-схема основної програми
6. Блок-схема додаткової процедури7
7. Лістинг програми
8. Висновок
9. Список літератури
1. Введення
Сьогодні на нашому телебаченні завжди можна побачити безліч розважальних програм. Наприклад, "Слабка ланка", "Поле чудес". Всі ми бачили їх і знаємо, що вони з себе представляють. З усього цього безлічі я обрав "Хто хоче стати мільйонером?" В якості предмету для написання курсової роботи. У телевізійному варіанті виграти мільйон вдавалося всього лише декільком людям. У її електронному аналогу зробити це не скласти такого великого праці, але зате і гра йде не на справжні гроші. У будь-якому випадку, ви зможете відпочити, граючи.
2. Постановка завдання
Розробити гру-аналог відомої телевізійної передачі "Хто хоче стати мільйонером?" З використанням програмного середовища Visual Basic і засобів об'єктно-орієнтованого програмування.
3.Теоретіческая частина
При написанні програми я користувався такими елементами, як Form, TextBox, CommandButton, Line, ListBox, Label, Image.
Об'єкт Form при організації проекту форма дається за замовчуванням. Її немає на стандартній панелі управління. Однак форма також є об'єктом, у неї є свій набір властивостей і подій. На панелі управління є піктограма Add Form, що додає в проект ще одну форму, а не створюючи новий.
Для об'єкта CommandButton про переважно спеціалізуються подія, пов'язана з ним, це Click (). Після клацання певні дії, пов'язані з цією кнопкою, будуть досконалі негайно. З кнопками пов'язані не тільки події, а й властивості. У даній програмі ми використовували властивість Enabled - робить кнопку або активною, або неактивній. Дана властивість може приймати два значення - True або False. Також є властивості, що відповідають за положення кнопки на екрані - властивості Top, відстань між верхньою стороною об'єкта і верхньою межею контейнера, його містить, і Left, відстань між лівою стороною об'єкта лівої кордоном контейнера, його містить.
Об'єкт TextBox служить для висновку, введення і редагування тексту. Для цього поля можна задавати різні шрифти, розміри букв, кольору, обмежувати кількість вводяться букв. За замовчуванням це поле містить один рядок тексту, проте цей режим можна змінити на багаторядковий. Також елемент має властивості Top, Left, описаними вище для елемента CommandButton; властивістю ForeColor, що відповідає за колір вводяться букв.
Об'єкт Line використовувався в моїй програмі для різних оформлювальних цілей. Має властивості BorderColor - колір даної лінії, BorderStyle - зовнішній вигляд лінії, BorderWidth - товщина лінії, Visible - видимість об'єкта на формі.
Об'єкт ListBox дозволяє користувачеві вибирати зі списку одне або кілька значень. У будь-який момент до списку можна додати нові значення або видалити існуючі. Якщо список не зможе з'явитися у заданому розмірі об'єкта цілком, то в полі списку автоматично додається смуга прокручування.
Об'єкт Image призначений для відображення малюнків. У нього можна помістити растровий малюнок у форматі bmp, wmf, ico, gif. Можна вибрати режим відображення: або розміри малюнка зміняться до розмірів заданого елемента Image, або елемент Image зміниться до розмірів малюнка. Image не дозволяє малювати і не допускає угруповання об'єктів всередині себе.
Не можна не згадати такі оператори мови, як умовні оператори IF і CASE, оператори циклу WHILE і FOR. Оператор IF реалізує алгоритм конструкції розвилка і змінює порядок виконання операторів залежно від істинності чи хибності деякої умови. За допомогою оператора CASE можна вибирати варіант дії з будь-якої кількості варіантів умов. Оператор циклу WHILE організовує виконання циклу, що складається з будь-якого числа операторів, з невідомим заздалегідь числом повторень. Вихід з циклу здійснюється при хибності деякого логічного виразу. Оператор циклу FOR організовує виконання групи операторів певне число разів. У моїй програмі використовується також процедура Open ... For для відкриття файлу для читання.
4. Опис програми
Моя програма починається з поява основного вікна, в якому відбуваються всі основні дії. Спочатку користувачеві пропонується ввести його ім'я, після чого починається сама гра. Задається питання і пропонується 4 варіанти. Питання випадковим чином вибирається з чотирьох можливих. Варіанти відповіді також беруться з файлу і відображаються в списку з чотирьох елементів. Також відображається сума, яку гравець отримує в результаті правильної відповіді. У разі правильної відповіді, гравцеві задається наступне питання. У міру наближення до 15 питання, гравець набирає очки. Існують дві "вогнетривкі" суми, що дорівнюють 1000 і 32000. Означають, що якщо гравець набрав цю суму, то у випадку подальшого неправильної відповіді, він отримує цю суму, а не йде ні з чим. Якщо гравець відповідає неправильно, то він програє, видається повідомлення із зазначенням виграної суми. Для полегшення процесу гри існують три підказки - 50 на 50, дзвінок другу, допомога залу. Перша підказка, 50 на 50, прибирає з варіантів відповіді два неправильних. Друга, дзвінок другу, видається користувачеві передбачуваний правильну відповідь. Третя, допомогу залу, імітує опитування глядачів з метою виявлення варіанту, який набрав більшу кількість голосів. Кожна підказка може бути використана один раз в процесі гри. Коли гравець відповідає правильно на останній п'ятнадцятий питання, він вважається переможцем і отримує 1000000 очок, видається повідомлення про перемогу.
Також є можливість допомоги гравцеві з метою розібратися з інтерфейсом програми. При натисканні кнопки "Допомога" з'являється нове вікно, де вказані опису всіх присутніх в грі елементів. Що має полегшити розуміння процесу гри.
Зовнішній вигляд форми представлений на Рис.1. Так само на малюнку вказані пояснення до основних елементів інтерфейсу гри.
Рис.1. Вид робочої форми
5. Блок-схема основної програми
7. Блок-схема додаткової процедури
Блок-схема алгоритму процедури, що забезпечує в грі підказку "50 на 50".
8. Лістинг програми
Sub GameQuestions (AnswerIsCorrect As Integer)
Dim Questions (1 To 15, 1 To 4) As String
Dim QuestionsMoney (1 To 15) As Long
Dim Answers (1 To 15, 1 To 4) As String
Dim Answer (1 To 4) As String
Dim AnswersRight (1 To 15) As String
Dim ChooseAnswer (1 To 4) As String
Dim I As Integer, J As Integer, Imass As Integer, Jmass As Integer
Dim np As Integer, fp As Integer, Score As Long, Unburned As Long
Dim BuferSTR As String
Randomize
If AnswerIsCorrect = 2 Then
I = 1
End If
If AnswerIsCorrect = 1 Then
I = LabelQuestionI.Caption + 1
End If
If I = 0 Then
WinLooseLine1.Visible = 1
WinLooseLine2.Visible = 1
WinLooseLine3.Visible = 1
WinLooseLine4.Visible = 1
LabelWinLoose.Visible = 1
LabelWinLoose.Caption = "Ви відповіли невірно! Ваш виграш: "& LabelUnburned.Caption &" грошей! "
I = 1
EndGame 0
End If
If I = 16 Then
WinLooseLine1.Visible = 1
WinLooseLine2.Visible = 1
WinLooseLine3.Visible = 1
WinLooseLine4.Visible = 1
LabelWinLoose.Visible = 1
LabelWinLoose.Caption = "Вітаю," & TextNameInput.Text & ", ви виграли мільйон грошей! "
Score = 1000000
LabelScoreTitle.Caption = Score
LabelScore.Caption = Score
EndGame 0
Else
J = Rnd * 3 + 1
Open "C: \ VB \ KursKY \ quemon.txt" For Input As # 1
For Imass = 1 To 15
Line Input # 1, BuferSTR
QuestionsMoney (Imass) = BuferSTR
Next Imass
Close # 1
Open "C: \ VB \ KursKY \ que.txt" For Input As # 1
For Imass = 1 To 15
For Jmass = 1 To 4
Line Input # 1, BuferSTR
Questions (Imass, Jmass) = BuferSTR
Next Jmass
Next Imass
Close # 1
Open "C: \ VB \ KursKY \ answ.txt" For Input As # 1
For Imass = 1 To 15
For Jmass = 1 To 4
Line Input # 1, BuferSTR
Answers (Imass, Jmass) = BuferSTR
Next Jmass
Next Imass
Close # 1
Open "C: \ VB \ KursKY \ answrig.txt" For Input As # 1
For Imass = 1 To 15
Line Input # 1, BuferSTR
AnswersRight (Imass) = BuferSTR
Next Imass
Close # 1
BuferSTR = AnswersRight (I)
np = 1
fp = 1
ChooseAnswer (1) = SplitAnswers (np, BuferSTR, 0)
np = np + Len (ChooseAnswer (1)) + 1
ChooseAnswer (2) = SplitAnswers (np, BuferSTR, 0)
np = np + Len (ChooseAnswer (2)) + 1
ChooseAnswer (3) = SplitAnswers (np, BuferSTR, 0)
np = np + Len (ChooseAnswer (3)) + 1
ChooseAnswer (4) = SplitAnswers (np, BuferSTR, 1)
If AnswerIsCorrect = 1 Then
Score = QuestionsMoney (I - 1)
LabelScore.Caption = Score
If Score = 1000 Or Score = 32000 Then
Unburned = Score
LabelUnburned.Caption = Unburned
End If
End If
LabelQuestionI.Caption = I
LabelQuestionJ.Caption = J
QuestionNumber.Caption = "Питання" & I & "|" & QuestionsMoney (I) & "грошей"
LabelScoreTitle.Caption = "Рахунок:" & Score
LabelQuestion.Caption = Questions (I, J)
BuferSTR = Answers (I, J)
np = 1
Answer (1) = SplitAnswers (np, BuferSTR, 0)
np = np + Len (Answer (1)) + 1
Answer (2) = SplitAnswers (np, BuferSTR, 0)
np = np + Len (Answer (2)) + 1
Answer (3) = SplitAnswers (np, BuferSTR, 0)
np = np + Len (Answer (3)) + 1
Answer (4) = SplitAnswers (np, BuferSTR, 1)
AddItemsToList Answer (1), Answer (2), Answer (3), Answer (4)
Choose1.Caption = Answer (1)
Choose2.Caption = Answer (2)
Choose3.Caption = Answer (3)
Choose4.Caption = Answer (4)
ChooseRight.Caption = ChooseAnswer (LabelQuestionJ.Caption)
End If
End Sub
9. Висновок
Мною була написана програма на мові програмування Visual Basic, були використані методи об'єктно-орієнтованого програмування, також використовувалася робота з файлами. Програма дозволяє гравцеві перевірити свої знання в абсолютно різних областях.
10. Список літератури
Мазний Г.Л., Прогулова Т.Б. Методичний посібник до курсового проектування з вищої математики та інформатики. - Дубна: Міжнародний університет природи, суспільства і людини "Дубна", 1996.
О. І. Мельникова, А. Ю. Бонюшкіна. Навчальний посібник по Технології програмування. - Дубна: Міжнародний університет природи, суспільства і людини "Дубна", 2001.