ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Арканоїд на Паскалі
         

     

    Інформатика, програмування

    Міністерство загальної та професійної освіти РФ

    Білгородська Державна Технологічна Академія

    Будівельних матеріалів.

    Кафедра ПОВТіАС

    Виконав:

    Студент факультету АПіІТ

    Групи ПВ-22

    Маркелов Денис

    Керівник:

    Білгород - 2000.

    ЗМІСТ

    1. ПЕРЕДМОВА

    2. ВСТУП

    3. ЗАВДАННЯ КУРСОВОЇ РОБОТИ

    4. ПРАВИЛА КОРИСТУВАННЯ ПРОГРАМОЮ «Арканоїд»

    5. ВИКОРИСТОВУЮТЬСЯ СТРУКТУРИ ДАНИХ

    6. ВИКОРИСТОВУЮТЬСЯ МОДУЛІ

    7. СПЕЦИФІКАЦІЯ підпрограм

    8. ТЕКСТ ПРОГРАМИ і сконструював МОДУЛІВ

    9. правила користування додатковою програмою для побудови рівнів
    «MARKEDIT»

    10. СПЕЦИФІКАЦІЯ підпрограм У ПРОГРАМІ «MARKEDIT»

    11. ТЕКСТ ПРОГРАМИ «MARKEDIT" і сконструював МОДУЛІВ

    12. Список використаної літератури

    Передмова


    Мова Турбо Паскаль - це одна з найпоширеніших мовпрограмування мікрокомп'ютерів. Він розроблений фірмою «Борланд» якдіалект стандартної мови Паскаль, але завдяки своїй популярності самстав стандартом мови програмування 8 - і 16-розрядних мікрокомп'ютерів.
    До найважливіших переваг мови Турбо Паскаль відносяться невеликий розміркомпілятора, високий ступінь відповідності стандартним Паскалю, дужешвидка компіляція програм, об'єднання компілятора з інтерактивнимекранним редактором, попередження про помилки на рівні початковоїпрограми, велика бібліотека підпрограм і корисні розширення,спрощують системне програмування.

    Введення


    Однією з основних проблем, з якою стикаються в процесіпрограмування, є написання програми, яка не містить помилок.
    Помилку найбільш повно можна визначити як розбіжність поведінки програмиз очікуваннями користувача. Сюди входить як невідповідність результатіввихідними даними, так і інші, часом більш небезпечні ефекти: зациклення,аварійна зупинка програм тощо
    Найбільш явно спостерігаються історичними тенденціями в програмуванніє безперервне зростання призначених для користувача вимог, лавиноподібнеускладнення функціональності програми і, як наслідок, - ускладнення їїразработкі.В зв'язку зі збільшенням трудомісткості програмних засобів виникланеобхідність вироблення інтелектуальних інструментів, що дозволяютьрозробникам справлятися із збільшеною складністю своєї праці.
    На даний момент можна стверджувати, що практично кожна програмаскладається з застосуванням тієї або іншої технології програмування.
    «У зв'язку з тим, що за останні десять або пятьнадцать роківпродуктивність обчислювальних машин збільшилася в тисячі разів,користувачі стали набагато більш безцеремонними при виборі проблем, яківони вважають «технічно можна вирішити». Користувачі хочуть, щоб розміри,складність і витонченість програм збільшувалася виключно швидкимитемпами, і в останні роки стало очевидним, що в цілому нашіпрограмістські можливості не встигають за цими непомірного апетиту ».
    У міру того, як міць комп'ютерів росла, а область застосування всерозширювалася, зростали не тільки розміри, і складність програм, а йкількість помилок в них.
    Головним завданням сучасного програміста при написанні програми єНЕ подвеганіе її нескінченним тестуванням, а ретельний, повний аналізвихідного тексту програми, а також налагодження програми за допомогоюдодаткових програмних засобів.

    Завдання на проектування

    Розробити алгоритм гри «Арканоїд», мета якої полягає в наборі якякомога більшої кількості очок, які збільшуються при вибиваннічергового кубика.
    При вибиванні всіх кубиків поточного рівня здійснюється перехід нанаступний рівень, кількість яких - десять.
    Наприкінці гри в залежності від кількості набраних очок, введене ззапитом програми ім'я гравця повинно бути занесено до десятки найкращих ізаписано у файл.

    Над рамкою, протягом гри мають відображатися:

    1) № поточного етапу;
    2) кількість залишилися життів, спочатку яких - 10;
    1) кількість залишилися кубиків;
    2) кількість набраних очок.

    Правила користування програмою:

    1) запустити MARKBALL.EXE

    2) вибрати ніж грати:

    2a) миша

    2б) клавіатура

    3) вибрати швидкість кульки

    4) вибрати розмір планки

    Використовувані структури даних:

    type t_kubik = 0 .. 640; t_dx_dy =- 1 .. 1; t_arr = array [1 .. 494] of t_kubik; kol_kubik = 0 .. 247;

    t_kubik - значення всіх змінних, що використовуються в програмі, задані в цихмежах (і не більше);

    t_dx_dy - значення, яке приймає коефіцієнт, від якого залежитьнапрямок руху по осі ОХ або ОУ;

    t_arr - значення координат, які приймає кубик, відповідно досвоїм відображенням (зображенням) на екрані;

    kol_kubik - максимальну кількість кубиків;

    Використовувані модулі:

    Стандартні:

    1) CRT ;

    2) GRAPH;

    3) WINDOS - модуль потрібний сконструіруемим модулем MYMOUSE;

    4) STRINGS - модуль потрібний сконструіруемим модулем MYMOUSE;

    Сконструйовані:

    1) MARKEL - основні ігрові підпрограми;

    2) MARK_ZAS - містить інструментарій інтерфейсу (заставка, допомога, рахунок кращих гравців в кінці гри);

    3) MYMOUSE - робота з мишею

    Специфікація підпрограм:

    Модуль MARKEL

    a. procedure livs (var liv: byte);

    Призначення: вважає, що залишилися життя, якщо число життів дорівнюватименулю, то виводить на екран миготливу напис: «YOU HAVE LOST»;

    Вхідні дані: liv - число життів;

    Вихідні дані: liv - залишилися кількість життів;

    2. procedure perehod_level (const numbering: byte);

    Призначення: виводить по середині екрана напис, що відповідає початкунового етапу;

    Вхідні дані: numbering - номер нового етапу;

    Вихідні дані: ні;

    3. procedure planka_sharik (koeff: byte);

    Призначення: малює планку, розміром, визначеним від значення koeff,посередині екрану і кулька над нею;

    Вхідні дані: koeff - число визначає розмір планки;

    Вихідні дані: ні;

    4. procedure musik;

    Призначення: видає звуковий сигнал, відповідний якому-небудьторкання кульки про що-небудь;

    Вхідні дані: ні;

    Вихідні дані: ні;

    5.procedure izchez_vv_niz (var dy: t_dx_dy; x, y , i: t_kubik; vara: t_arr; var kol_kub: kol_kubik);

    Призначення: визначає чи торкнулася кульку кубика про верхню або нижнюгрань;

    Вхідні дані:

    2) dy - напрямок руху кульки по осі Y;

    3) x, y - поточні координати центру кульки;

    4) i - значення, від якого залежить які кубики перевіряти на збивання;

    5) a - масив координат кубиків;

    6) kol_kub - кількість кубиків на даний момент;

    Вихідні дані:

    7) dy - змінене напрямок руху кульки по осі Y;

    8) a - змінений масив координат кубиків;

    9) kol_kub - змінене кількість кубиків;

    6. procedure bok_bok (var dx: t_dx_dy; x, y: t_kubik; var a: t_arr; varkol_kub: kol_kubik);

    Призначення: визначає чи торкнулася кульку кубика про ліву чи правугрань;

    Вхідні дані:
    10) dx - напрямок руху кульки по осі X;
    11) x, y - поточні координати центру кульки;
    12) a - масив координат кубиків ;
    13) kol_kub - кількість кубиків на даний момент;

    Вихідні дані:
    14) dx - змінене напрямок руху кульки по осі X;
    15) a - змінений масив координат кубиків ;
    16) kol_kub - змінене кількість кубиків;

    7. procedure death;

    Призначення: видає звуковий сигнал, відповідний програшу однієїжиття;

    Вхідні дані: ні;

    Вихідні дані: ні;

    8. procedure ugolki (var dx, dy: t_dx_dy; x, y: t_kubik; var a: t_arr; varkol_kub: kol_kubik);

    Призначення: визначає чи торкнулася кульку кубика про кути;

    Вхідні дані:
    17) dx, dy - напрямок руху кульки по осях X і Y;
    18) x, y - поточні координати центру кульки;
    19) a - масив координат кубиків;
    20) kol_kub - кількість кубиків на даний момент;

    Вихідні дані:
    21) dx, dy - змінене напрямок руху кульки по осях X і Y;
    22) a - змінений масив координат кубиків;
    23) kol_kub - змінене кількість кубиків;

    9. procedure pausing (var pause: word);

    Призначення: визначає швидкість руху кульки по вибору самимкористувачем, з наочним графічним інтерфейсом;

    Вхідні дані: pause - передбачувана пауза;

    Вихідні дані: pause - вже певна пауза;

    10. procedure zapis (const xs, ys: t_kubik; i: t_kubik; var a: t_arr);

    Призначення: визначає на які місця в масиві записувати координатикубика;

    Вхідні дані:

    1) xs, ys - координати кульки, які і потрібно записати в масив;

    24) i - мінлива від якої залежить з якого номера шукати відповідне місце для координат кубика;

    25) a - масив координат кубиків;

    Вихідні дані: немає

    11. procedure level (var a: t_arr; const numbering: byte; var kol_kub: kol_kubik);

    Призначення: відкриває файл і зчитуючи з нього координати кубиків,малює їх;

    Вхідні дані:

    1) a - масив координат кубиків;

    2) numbering - номер відкривається етапу;

    3) kol_kub - кількість кубиків;

    Вихідні дані:

    1) a - масив координат кубиків;

    2) kol_kub - кількість намальованих кубиків;

    12. procedure left (const koeff: byte; var x1_dv, x2_dv: t_kubik);

    Призначення: рух планки вліво;

    Вхідні дані:

    1) koeff -- коефіцієнт, від якого залежить розмір планки;

    2) x1_dv, x2_dv - координати планки по осі Х;

    Вихідні дані: x1_dv, x2_dv - змінилися координати планки по осі Х;

    13. procedure right (const koeff: byte; var x1_dv, x2_dv: t_kubik);

    Призначення: рух планки вправо;

    Вхідні дані:

    1) koeff -- коефіцієнт, від якого залежить розмір планки;

    3) x1_dv, x2_dv - координати планки по осі Х;

    Вихідні дані: x1_dv, x2_dv - змінилися координати планки по осі Х;

    14. procedure dviguna_keyboard (const koeff: byte; varx, x1_dv, x2_dv: t_kubik; var y: t_kubik);

    Призначення: очікування натискання клавіші для початку нового етапу, якщокористувач грає на клавіатурі;

    Вхідні дані:

    1) koeff - коефіцієнт, від якого залежить розмір планки;

    1) x, y - координати кульки;

    2) x1_dv, x2_dv - координати планки по осі Х;

    Вихідні дані:

    3) x, y - координати кульки; < p> 4) x1_dv, x2_dv - змінилися координати планки по осі Х;

    15. procedure dviguna_mouse (const koeff: byte; varx, x1_dv, x2_dv: t_kubik; var y: t_kubik);

    Призначення: очікування натискання кнопки миші для початку нового етапу, якщокористувач грає мишею;

    Вхідні дані:

    1) koeff - коефіцієнт, від якого залежить розмір планки;

    2) x, y - координати кульки;

    5) x1_dv, x2_dv - координати планки по осі Х;

    Вихідні дані: f. x, y - координати кульки; g. x1_dv, x2_dv - змінилися координати планки по осі Х;

    16. procedure zar_nar (var x, y: t_kubik; const dx, dy: t_dx_dy);

    Призначення: зафарбування вже намальованого кульки і нарісованіе новогокульки із зміненими координатами;

    Вхідні дані:

    1) x, y - координати кульки;

    2) dx, dy - від значення цих змінних залежить рух кульки в тучи іншу сторону,

    Вихідні дані: x, y - координати кульки;

    17. function chem_play: boolean;

    Призначення: визначення користувачем ніж грати (клавіатурою абомишею), з наочним графічним інтерфейсом;

    Вхідні дані:

    Нет;

    Вихідні дані: true - граймо мишею; false - граймо на клавіатурі;

    18. procedure razmer_planki (var koeff: byte);

    Призначення: визначення користувачем розміру планки;

    Вхідні дані:

    Koeff - коефіцієнт, що визначає розмір планки;

    Вихідні дані:

    Koeff - коефіцієнт, що визначає розмір планки; граєм мишею;

    19. procedure naverhu_liv (liv: byte);

    Призначення: відображення над рамкою протягом гри кількостізалишилися життів;

    Вхідні дані: liv - число життів;

    Вихідні дані: ні;

    20.procedure naverhu_number (numbering: byte);

    Призначення: відображення над рамкою протягом гри номера поточногорівня;

    Вхідні дані: numbering - номер рівня;

    Вихідні дані: ні;

    21. procedure naverhu_kubiki (kol_kub: byte);

    Призначення: відображення над рамкою протягом гри кількостізалишилися кубиків;

    Вхідні дані:

    Kol_kub - число, що залишилися кубиків;

    Вихідні дані: ні;

    Модуль MARK_ZAS

    1. procedure zastavka (s2: string);

    Призначення: на початку гри використовується як заставку з миготливоївеликим написом «MARKBALL» і нижче миготливої написом «Click to start»
    , також використовується при втраті всіх життів, але при цьому нижня написбуде «You have lost», а при проходженні всіх етапів нижня напис буде
    «The end of game»;

    Вхідні дані:

    S2 - нижня миготлива напис;

    Вихідні дані: ні;

    2 . procedure text_na_ekran;

    Призначення: використовується як довідка поки гра ще не почалася принатисканні клавіші «F1»;

    Вхідні дані: ні;

    Вихідні дані: ні;

    3. procedure ochki (score: word);

    Призначення: в кінці гри вважає згідно з набраними очками:чи займе цей гравець, який ввів за запитом програми своє ім'я, яке -небудь місце серед представлених десяти місць; якщо кількість набранихокулярів дозволяє гравцеві зайняти деякий місце, то програма виводить наекран таблицю лідерів, що включає в себе ім'я даного гравця, у противномувипадку на екран все ж таки буде виведена таблиця лідерів, але імені даногогравця міститися там не буде;

    Вхідні дані:

    Score - кількість набраних протягом гри очок;

    Вихідні дані: ні;

    Основна програма

    1. Procedure initgr;

    Призначення: ініціалізує графіку в режимі vgahi;

    Вхідні дані: ні;

    Вихідні дані: ні;

    2 . Procedure vostanovka_colors;

    Призначення: відновлює кольору зі стандартними відтінками;

    Вхідні дані: ні;

    Вихідні дані: ні;

    Текст програми:

    program mark_ball;uses graph, crt, mymouse, markel, mark_zas;procedure initgr;var grdriver, grmode: integer;begin grdriver: = vga; grmode: = vgahi; initgraph (grdriver, grmode ,''); if GraphResult grOk then halt;end;

    procedure vostanovka_colors;begin setrgbpalette (black, 0,0,0); setrgbpalette (blue, 0,0,40); setrgbpalette (green, 0,40,0); setrgbpalette (cyan, 0,40,40); setrgbpalette (red, 40 , 7,7); setrgbpalette (magenta, 40,0,40); setrgbpalette (brown, 40,30,0); setrgbpalette (lightgray, 49,49,49); setrgbpalette (darkgray, 26,26,26); setrgbpalette (lightblue, 0,0,63); setrgbpalette (lightgreen, 9,63,9); setrgbpalette (lightcyan, 0,63,63); setrgbpalette (lightred, 63,10,10); setrgbpalette (lightmagenta, 44, 0,63); setrgbpalette (yellow, 63,63,18); setrgbpalette (white, 63,63,63);end;

    var y_planka, xmax, x1_dv, x2_dv, x, y, i: t_kubik; x_get, y_get, x_get_pred: word; dx, dy: t_dx_dy; a: t_arr; numbering, liv: byte; kol_kub: kol_kubik; lb, rb, tb, dviguna: boolean; buttoncount, errorcode, koeff: byte; pause: word; score: integer; s2: string;begin s2: = 'Click to start'; initgr; zastavka (s2); vostanovka_colors; setlinestyle (0,0,1); randomize; cleardevice; xmax: = getmaxx-radius-1; y: = getmaxy-shir-radius - 1; y_planka: = getmaxy-shir-radius-1; liv: = 10; score: =- 10; dviguna: = chem_play; pausing (pause); razmer_planki (koeff); for numbering: = 1 to 10 do begin perehod_level ( numbering); cleardevice; planka_sharik (koeff);

    level (a, numbering, kol_kub); naverhu_number (numbering); naverhu_liv (liv); naverhu_kubiki (kol_kub, score); dx: =- 1; dy : =- 1;

    (а ¬ Є) setcolor (random (14) +1); rectangle (0,21, getmaxx, getmaxy);

    if dviguna then dviguna_mouse ( koeff, x, x1_dv, x2_dv, y) else dviguna_keyboard (koeff, x, x1_dv, x2_dv, y); while kol_kub> 0 do begin zar_nar (x, y, dx, dy); delay (pause); if (y = radius +1 +21) or

    ((x1_dv

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status