Конструирование программ

Определение термина "язык программирования" и основные требования, предъявляемые к нему. Преимущества языков высокого уровня перед машинными. Особенности языка Delphi. Проектирование программы, требования к составу и параметрам технических средств.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.06.2017
Размер файла 29,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Краевое государственное бюджетное профессиональное образовательное

учреждение «Алтайский государственный колледж»

ИНДИВИДУАЛЬНЫЙ ПРОЕКТ

«Конструирование программ»

Проект подготовил:

Студент группы Т602к

Лезин Александр Владимирович

Руководитель проекта:

Зотова Ксения Валерьевна

2016-2017

Паспорт проекта

Цель проекта: Сформировать представление о языках программирования для их дальнейшего использования и разработать компьютерную программу - компьютерную игру «Крестики-нолики».

Задача проекта: Рассмотреть существующие языки программирования, сделать выбор конкретного языка программирования и обосновать его.

Написать компьютерную программу на данном языке программирования и провести её тестирование

Дисциплина: Информатика

Тип проекта: исследовательский

Сроки реализации проекта:20.09.16-18.05.17 гг.

Продукт проектной деятельности: компьютерная программа

язык программирование машинный delphi

Содержание

Введение

1. Языки программирования

1.1 Основные определения и терминология

1.2 Уровни языков программирования

1.3 Виды языков программирования

2. Выбор языка программирования

3. Проектирование программы

3.1 Требования к составу и параметрам технических средств

3.2 Общая схема программы

3.3 Руководство по использованию

Заключение

Используемая литература и источники

Приложение

Введение

Сегодня в начале 21 века, компьютеры можно встретить почти во всех сферах деятельности. Они достаточно прочно укрепились в нашей жизни и сознании. Все большему числу специалистов в самых различных областях требуется доступ к вычислительной технике для решения стоящих перед ними задач. Хотя компьютеры создавались для численных расчетов, скоро оказалось, что они могут обрабатывать и другие виды информации - ведь практически все они могут быть представлены в числовой форме. Сейчас компьютеры превратились в универсальные средства для обработки всех видов информации, используемых человеком. С помощью компьютеров не только проводятся числовые расчеты, но и подготавливаются к печати книги, создаются рисунки, кинофильмы, музыка, осуществляется управление заводами и космическими кораблями, проводятся всевозможные тестирования, проверяющие знания людей в той или иной области и так далее.

Из этого вытекает вывод, что компьютеры, в том или ином виде будут существовать всегда. Поэтому можно смело говорить об их актуальности и актуальности данной работы.

Цель данной работы - Сформировать представление о языках программирования для их дальнейшего использования и разработать компьютерную программу - компьютерную игру «Крестики-нолики».

Чтобы достичь цели, были поставлены следующие задачи:

1. Дать определения компьютерной программе и языку программирования.

2. Рассмотреть существующие языки программирования, сделать выбор конкретного языка программирования и обосновать его.

3. Написать компьютерную программу на данном языке программирования и провести её тестирование

Данная работа состоит из введения, трех глав, заключения, списка литературы и приложения, в котором находится часть исходного кода продукта, потому что исходный код целиком очень велик.

1. Языки программирования

1.1 Основные определения и терминология

Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.

Можно сформулировать ряд требований к языкам программирования и классифицировать языки по их особенностям.

Основные требования, предъявляемые к языкам программирования:

наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;

единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;

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

модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;

однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач.

В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.

1.2 Уровни языков программирования

Любой алгоритм, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования -- чем меньше детализация, тем выше уровень языка.

По этому критерию можно выделить следующие уровни языков программирования:

машинные;

машинно-оpиентиpованные (ассемблеры);

машинно-независимые (языки высокого уровня).

Машинные языки и машинно-ориентированные языки -- это языки низкого уровня, требующие указания мелких деталей процесса обработки данных. Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае “низкий уровень” не значит “плохой”. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

При программировании на машинном языке программист может держать под своим контролем каждую команду и каждую ячейку памяти, использовать все возможности имеющихся машинных операций. Но процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, труднообозримой, ее трудно отлаживать, изменять и развивать.

Поэтому в случае, когда нужно иметь эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры).

Язык ассемблера -- это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде.

Язык ассемблера позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.

С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется очень хорошо понимать устройство компьютера, затрудняется отладка больших приложений, а окончательная программа не может быть перенесена на компьютер с другим типом процессора. Подобные языки обычно применяют для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. В некоторых областях, например в машинной графике, на языке ассемблера пишутся библиотеки, эффективно реализующие алгоритмы обработки изображений, требующие интенсивных вычислений.

Таким образом, программы, написанные на языке ассемблера, требуют значительно меньшего объема памяти и времени выполнения. Знание программистом языка ассемблера и машинного кода дает ему понимание архитектуры машины. Несмотря на то, что большинство специалистов в области программного обеспечения разрабатывают программы на языках высокого уровня, наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера.

Языки высокого уровня - были разработаны для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров, их архитектуры. Уровень языка характеризуется степенью его близости к естественному, человеческому языку. Машинный язык не похож на человеческий, он крайне беден в своих изобразительных средствах. Средства записи программ на языках высокого уровня более выразительны и привычны для человека. Например, алгоритм вычисления по сложной формуле не разбивается на отдельные операции, а записывается компактно в виде одного выражения с использованием привычной математической символики. Составить свою или понять чужую программу на таком языке гораздо проще.

Важным преимуществом языков высокого уровня является их универсальность, независимость от ЭВМ. Программа, написанная на таком языке, может выполняться на разных машинах. Составителю программы не нужно знать систему команд ЭВМ, на которой он предполагает проводить вычисления. При переходе на другую ЭВМ программа не требует переделки. Такие языки - не только средство общения человека с машиной, но и людей между собой. Программа, написанная на языке высокого уровня, легко может быть понята любым специалистом, который знает язык и характер задачи.

Таким образом, можно сформулировать основные преимущества языков высокого уровня перед машинными:

алфавит языка высокого уровня значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;

набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов, решения задач определенного класса;

формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;

требуемые операции задаются с помощью общепринятых математических обозначений;

данным в языках высокого уровня присваиваются индивидуальные имена, выбираемые программистом;

в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.

Таким образом, языки высокого уровня в значительной мере являются машинно-независимыми. Они облегчают работу программиста и повышают надежность создаваемых программ.

Основные компоненты алгоритмического языка:

алфавит,

синтаксис,

семантика.

Алфавит -- это фиксированный для данного языка набор основных символов, т.е. "букв алфавита", из которых должен состоять любой текст на этом языке -- никакие другие символы в тексте не допускаются.

Синтаксис -- это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза. Точнее говоря, синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке.

Семантика определяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.

1.3 Виды языков программирования

Языки высокого уровня делятся на:

процедурные;

логические;

объектно-ориентированные.

Процедурные языки предназначены для однозначного описания алгоритмов. При решении задачи процедурные языки требуют в той или иной форме явно записать процедуру ее решения.

Первым шагом в развитии процедурных языков программирования было появление проблемно-ориентированных языков. В этом названии нашел отражение тот факт, что при их разработке идут не от «машины», а «от задачи»: в языке стремятся максимально полно учесть специфику класса задач, для решения которых его предполагается использовать. Например, для многих научно-технических задач характерны большие расчеты по сложным формулам, поэтому в ориентированных на такие задачи языках вводят удобные средства их записи. Использование понятий, терминов, символов, привычных для специалистов соответствующей области знаний, облегчает им изучение языка, упрощает процесс составления и отладки программы.

Разнообразие классов задач привело к тому, что на сегодняшний день разработано несколько сотен алгоритмических языков. Правда, широкое распространение и международное признание получили лишь 10-15 языков. Среди них в первую очередь следует отметить: Fortran и Algol - языки, предназначенные для решения научно-технических задач, Cobol - для решения экономических задач, Basic - для решения небольших вычислительных задач в диалоговом режиме. В принципе каждый из этих языков можно использовать для решения задач не своего класса. Однако, как правило, применение оказывается не удобным.

В то же время в середине 60-х годов начали разрабатывать алгоритмические языки широкой ориентации - универсальные языки. Обычно они строились по принципу объединения возможностей узко-ориентированных языков. Среди них наиболее известны PL/1, Pascal, C, C+ , Modula, Ada. Однако, как любое универсальное средство, такие широко-ориентированные языки во многих конкретных случаях оказываются менее эффективными.

Логические языки- (Prolog, Lisp, Mercury, KLO и др.) ориентированы не на запись алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания. В этих языках указывается что дано и что требуется получить. При этом поиск решения задачи возлагается непосредственно на ЭВМ.

Объектно-ориентированные языки (Object Pascal, Delphi, C++, Java, Objective Caml. и др.). Руководящая идея объектно-ориентированных языков заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое - объект.

Объектно-ориентированный подход использует следующие базовые понятия:

объект;

свойство объекта;

метод обработки;

событие;

класс объектов.

Объект -- совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).

Свойство -- это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, совокупность которых выделяют (определяют) объект.

Метод -- это набор действий над объектом или его свойствами.

Событие -- это характеристика изменения состояния объекта.

Класс -- это совокупность объектов, характеризующихся общностью применяемых к ним методов обработки или свойств.

Существуют различные объектно-ориентированные технологии, которые обеспечивают выполнение важнейших принципов объектного подхода:

инкапсуляция;

наследование.

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

Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса.

Фактически объектно-ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных акцент делается на их смысловую связь.

Программа на объектно-ориентированном языке, решая некоторую задачу, по сути, описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.

2. Выбор языка программирования

При решении задачи я использовал интегрированную среду разработки Borland Delphi. Она позволяет легко писать программы под ОС Windows. Разработанная программа нетребовательна к ресурсам компьютера и позволяет вести работу даже при отсутствии современных аппаратных средств.

Язык Delphi - это язык программирования общего назначения, очень хорошо известный своей эффективностью, экономичностью, и легкости в изучении.

Указанные преимущества Delphi обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Delphi в качестве языка программирования позволяет получать быстрые, компактные и легко читаемые программы. При этом они имеют хорошую наглядность и их более просто сопровождать.

Delphi сочетает эффективность и мощность в относительно малом по размеру языке. Хотя Паскаль не содержит встроенных компонент языка, выполняющих ввод - вывод, распределение памяти, манипуляций с экраном или управление процессами, тем не менее, системное окружение DELPHI располагает очень большой библиотекой модулей, в которой реализованы все подобные функции. Библиотека поддерживает многие, если не все, функции, которые требуются в работе.

Это решение позволяет программам, написанным на этом языке, быть независимыми от конфигурации конкретного компьютера, а строгое определение языка делает его независимым от любых деталей операционной системы или машины. В то же время программисты могут добавить в библиотеку специфические системные программы, чтобы более эффективно использовать конкретные особенности машины.

Перечислим некоторые существенные особенности языка DELPHI:

DELPHI обеспечивает полный набор операторов структурного программирования.

DELPHI поддерживает указатели на переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта. Посредством разумного использования указателей можно создавать эффективно выполняемые программы, так как указатели позволяют ссылаться на объекты тем же самым путем, как это делает машина. DELPHI поддерживает указатели, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти.

В своем составе DELPHI содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией. Среди его наиболее полезных приложений при написании программ на DELPHI являются: определение программных констант, замена вызовов функций аналогичными, но более быстрыми макросами, условная компиляция.

DELPHI - гибкий язык, позволяющий принимать в конкретных ситуациях самые разные решения. Тем не менее, DELPHI налагает незначительные ограничения в таких, например, действиях, как преобразование типов. Во многих случаях это является достоинством, однако, программисты должны хорошо знать язык, чтобы понимать, как будут выполняться их программы.

За исключением второстепенных деталей DELPHI является надмножеством языка программирования Паскаль. Помимо возможностей, которые дает Паскаль, DELPHI предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

3. Проектирование программы

3.1 Требования к составу и параметрам технических средств

Для функционирования игры «Крестики-нолики» необходим компьютер IBM PC совместимый и следующие технические средства:

· процессор Intel Pentium III;

· объем свободной оперативной памяти 700 Кб;

· объем необходимой памяти на жестком диске 600 Кб;

· стандартный VGA-монитор или совместимый;

· стандартная клавиатура;

· манипулятор «мышь»;

· операционная система «Windows», версии не ниже XP.

3.2 Общая схема программы

Программа состоит из следующих файлов:

· Project1.exe - исполняемый файл

· Project1.dpr - файл проекта

· Unit1.pas - исходный код проекта

3.3 Руководство по использованию

Чтобы запустить программу, необходимо нажать Project1.exe из соответствующей директории.

При запуске программы сначала появляется главное меню. В главном меню есть три возможности: войти в игру против компьютера, войти в игру один на один (человек против человека), либо выйти из игры. Управлять игрой осуществляется мышкой, если нет сообщений на экране о нажатии на кнопку.

Заключение

В ходе написания программы были использованы элементы объектно-ориентированного программирования. Основу программы составили классы. Было использовано переопределение стандартных операций для переменных абстрактных типов, а так же работа с графикой, строками и т.д.

При выполнении курсовой была проработана литература по языкам Паскаль, DELPHI, объектно-ориентированному программированию. Работать с объектами класса при помощи функций членов намного удобнее, нежели не использовать классы, а применять только стандартный набор типов данных.

Пользователю не придется тратить много времени на освоение правил игры «Крестики-нолики». Простота и наглядность интерфейса делают игру удобной в использовании.

Выполнение проектной работы помогло закрепить материал и навыки, полученный на лекциях и лабораторных работах, помогло систематизировать знание языка и научится применять их к конкретным задачам.

Используемая литература и источники

1. Мирошниченко Е.А. и др. Программирование на языке DELPHI. Часть II. Учебное пособие/ Н.В. Триханова, Е.А. Мирошниченко. - Томск: Изд. ТПУ, 2001. - 118с.

2. Костюк Ю.Л. Основы алгоритмизации: Учебное пособие. / Ю.Л.Костюк. - Томск: Изд. ТГУ, 1996. - 124с.

3. Бондарев В.М. и др. Основы программирования. / В.М.Бондарев, В.И.Рублинецкий, Е.Г.Качко. / Худож.-оформитель С.А.Пяткова. - Харьков: Фолио; Ростов н/Д: Феникс, 1997. - 368с.

4. Вирт Н. Алгоритмы и структуры данных. / Н.Вирт. - М.: Мир, 1989. - 310с.:ил.

Приложение

Исходный код программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Math, jpeg;

type

TForm1 = class(TForm)

Reload: TButton;

Image1: TImage;

Exit: TButton;

GroupBox1: TGroupBox;

winXw: TLabel;

winOw: TLabel;

qwer: TLabel;

qwert: TLabel;

qwerty: TLabel;

qwertyu: TLabel;

a22: TLabel;

a11: TLabel;

a00: TLabel;

a10: TLabel;

a01: TLabel;

a02: TLabel;

a12: TLabel;

a21: TLabel;

a20: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

winTw: TLabel;

Info: TButton;

winTw1: TLabel;

winOw1: TLabel;

winXw1: TLabel;

GroupBox2: TGroupBox;

RadioButton1: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

RadioButton5: TRadioButton;

Label1: TLabel;

Diff: TLabel;

Bevel2: TBevel;

Bevel9: TBevel;

Bevel8: TBevel;

Bevel3: TBevel;

Bevel6: TBevel;

Bevel5: TBevel;

Bevel4: TBevel;

Bevel7: TBevel;

Bevel1: TBevel;

procedure FormCreate(Sender: TObject);

procedure Image1Click(Sender: TObject);

procedure ReloadClick(Sender: TObject);

procedure ExitClick(Sender: TObject);

procedure InfoClick(Sender: TObject);

procedure RadioButton5Click(Sender: TObject);

procedure RadioButton4Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Pole: array[0..2,0..2] of integer;

whole,infovar,position: integer;

win:string;

difficult:integer;

implementation

{$R *.dfm}

procedure updatetextXO();

var

i,q:integer;

textpole:array[0..2,0..2] of string;

begin

for i:=0 to 2 do

for q:=0 to 2 do

if (pole[i,q]=5) then textpole[i,q]:=' ' else

if (pole[i,q]=1) then textpole[i,q]:='x' else

if (pole[i,q]=0) then textpole[i,q]:='o';

form1.a00.Caption:=textpole[0,0];

form1.a01.Caption:=textpole[0,1];

form1.a02.Caption:=textpole[0,2];

form1.a10.Caption:=textpole[1,0];

form1.a11.Caption:=textpole[1,1];

form1.a12.Caption:=textpole[1,2];

form1.a20.Caption:=textpole[2,0];

form1.a21.Caption:=textpole[2,1];

form1.a22.Caption:=textpole[2,2];

end;

procedure reloadcell();

begin

form1.Image1.Canvas.Rectangle(0,0,300,300);

form1.Image1.Canvas.Refresh;

form1.Image1.Canvas.Pen.Color:=clBlack;

form1.Image1.Canvas.Pen.Width:=3;

form1.Image1.Canvas.MoveTo(0,100);

form1.Image1.Canvas.LineTo(300,100);

form1.Image1.Canvas.MoveTo(0,200);

form1.Image1.Canvas.LineTo(300,200);

form1.Image1.Canvas.MoveTo(100,0);

form1.Image1.Canvas.LineTo(100,300);

form1.Image1.Canvas.MoveTo(200,0);

form1.Image1.Canvas.LineTo(200,300);

end;

procedure putX(a:integer;b:integer);

begin

form1.Image1.Canvas.Pen.Color:=clRed;

form1.Image1.Canvas.Pen.Width:=5;

form1.Image1.Canvas.MoveTo(a+5,b+5);

form1.Image1.Canvas.LineTo(a+95,b+95);

form1.Image1.Canvas.MoveTo(a+5,b+95);

form1.Image1.Canvas.LineTo(a+95,b+5);

whole:=whole+1;

end;

procedure DrawCircle(X, Y, R: Integer; Can:TCanvas; Col: TColor);

begin

Can.Pen.Width:=1;

Can.Pen.Color:=Col;

Can.Ellipse(X-R , Y-R , X+R , Y+R);

end;

procedure TheEnd(pos: integer);

var x:integer;

begin

x:=0;

form1.Image1.Canvas.Pen.Color:=clFuchsia;

form1.Image1.Canvas.Pen.Width:=7;

if (pos=1) then

begin

form1.Image1.Canvas.MoveTo(25,50);

form1.Image1.Canvas.LineTo(275,50);

end else

if (pos=2) then

begin

form1.Image1.Canvas.MoveTo(25,150);

form1.Image1.Canvas.LineTo(275,150);

end else

if (pos=3) then

begin

form1.Image1.Canvas.MoveTo(25,250);

form1.Image1.Canvas.LineTo(275,250);

end else

if (pos=4) then

begin

form1.Image1.Canvas.MoveTo(50,25);

form1.Image1.Canvas.LineTo(50,275);

end else

if (pos=5) then

begin

form1.Image1.Canvas.MoveTo(150,25);

form1.Image1.Canvas.LineTo(150,275);

end else

if (pos=6) then

begin

form1.Image1.Canvas.MoveTo(250,25);

form1.Image1.Canvas.LineTo(250,275);

end else

if (pos=7) then

begin

form1.Image1.Canvas.MoveTo(25,25);

form1.Image1.Canvas.LineTo(275,275);

end else

if (pos=8) then

begin

form1.Image1.Canvas.MoveTo(25,275);

form1.Image1.Canvas.LineTo(275,25);

end else

if (pos=9) then

begin

if (pole[0,0]=0) then

begin

form1.image1.Canvas.MoveTo(50,50); x:=1; end;

if (pole[0,1]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(50,150); x:=1 end else

form1.Image1.Canvas.LineTo(50,150);

if (pole[0,2]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(50,250); x:=1 end else

form1.Image1.Canvas.LineTo(50,250);

if (pole[1,0]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(150,50); x:=1 end else

form1.Image1.Canvas.LineTo(150,50);

if (pole[1,1]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(150,150); x:=1 end else

form1.Image1.Canvas.LineTo(150,150);

if (pole[1,2]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(150,250); x:=1 end else

form1.Image1.Canvas.LineTo(150,250);

if (pole[2,0]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(250,50); x:=1 end else

form1.Image1.Canvas.LineTo(250,50);

if (pole[2,1]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(250,150); x:=1 end else

form1.Image1.Canvas.LineTo(250,150);

if (pole[2,2]=0) then if (x=0) then

begin form1.image1.Canvas.MoveTo(250,250) end else

form1.Image1.Canvas.LineTo(250,250);

end;

end;

procedure putO();

var q,i,w,z,a:integer;

begin

w:=27;

if (difficult>0) then begin

if (difficult>1) then begin

if (whole=1) and (pole[1,1]=5) then

begin

pole[1,1]:=0;

DrawCircle(1*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end;

if (whole=1) and (pole[1,1]=1) then

begin

randomize;

z:=random(4);

case z of

0: begin q:=0; i:=0; end;

1: begin q:=0; i:=2; end;

2: begin q:=2; i:=0; end;

3: begin q:=2; i:=2; end;

end;

pole[i,q]:=0;

DrawCircle(i*100+50,q*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end;

end;

if (difficult=3) then begin

if ((whole=3) and (pole[1,1]=1)) and (((pole[0,0]=1) and (pole[2,2]=0)) or

((pole[2,2]=1) and (pole[0,0]=0))or((pole[0,2]=1) and (pole[2,0]=0)) or

((pole[2,0]=1) and (pole[0,2]=0))) then

begin

randomize;

a:=3;

while a=3 do

begin

z:=random(4);

case z of

0: begin q:=0; i:=0; end;

1: begin q:=0; i:=2; end;

2: begin q:=2; i:=0; end;

3: begin q:=2; i:=2; end;

end;

if pole[i,q]=5 then

begin

pole[i,q]:=0;

DrawCircle(i*100+50,q*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

a:=5;

end;

end;

end;

end;

if (w=27) then begin

i:=0;

//////////////////////////

if ((pole[0,0]=pole[1,0]) and (pole[0,0]=i) and (pole[2,0]=5)) or

((pole[2,1]=pole[2,2]) and (pole[2,1]=i) and (pole[2,0]=5)) or

((pole[0,2]=pole[1,1]) and (pole[0,2]=i) and (pole[2,0]=5)) then

begin

pole[2,0]:=0;

DrawCircle(2*100+50,0*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,0]=pole[2,0]) and (pole[0,0]=i) and (pole[1,0]=5)) or

((pole[1,1]=pole[1,2]) and (pole[1,1]=i) and (pole[1,0]=5)) then

begin

pole[1,0]:=0;

DrawCircle(1*100+50,0*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[1,0]=pole[2,0]) and (pole[1,0]=i) and (pole[0,0]=5)) or

((pole[0,1]=pole[0,2]) and (pole[0,1]=i) and (pole[0,0]=5)) or

((pole[1,1]=pole[2,2]) and (pole[1,1]=i) and (pole[0,0]=5)) then

begin

pole[0,0]:=0;

DrawCircle(0*100+50,0*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,1]=pole[1,1]) and (pole[0,1]=i) and (pole[2,1]=5)) or

((pole[2,0]=pole[2,2]) and (pole[2,0]=i) and (pole[2,1]=5)) then

begin

pole[2,1]:=0;

DrawCircle(2*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,1]=pole[2,1]) and (pole[0,1]=i) and (pole[1,1]=5)) or

((pole[1,0]=pole[1,2]) and (pole[1,0]=i) and (pole[1,1]=5)) or

((pole[0,0]=pole[2,2]) and (pole[0,0]=i) and (pole[1,1]=5)) or

((pole[0,2]=pole[2,0]) and (pole[0,2]=i) and (pole[1,1]=5)) then

begin

pole[1,1]:=0;

DrawCircle(1*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[1,1]=pole[2,1]) and (pole[1,1]=i) and (pole[0,1]=5)) or

((pole[0,0]=pole[0,2]) and (pole[0,0]=i) and (pole[0,1]=5)) then

begin

pole[0,1]:=0;

DrawCircle(0*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,2]=pole[1,2]) and (pole[0,2]=i) and (pole[2,2]=5)) or

((pole[2,0]=pole[2,1]) and (pole[2,0]=i) and (pole[2,2]=5)) or

((pole[0,0]=pole[1,1]) and (pole[0,0]=i) and (pole[2,2]=5)) then

begin

pole[2,2]:=0;

DrawCircle(2*100+50,2*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,2]=pole[2,2]) and (pole[0,2]=i) and (pole[1,2]=5)) or

((pole[1,0]=pole[1,1]) and (pole[1,0]=i) and (pole[1,2]=5)) then

begin

pole[1,2]:=0;

DrawCircle(1*100+50,2*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[1,2]=pole[2,2]) and (pole[1,2]=i) and (pole[0,2]=5)) or

((pole[0,0]=pole[0,1]) and (pole[0,0]=i) and (pole[0,2]=5)) or

((pole[1,1]=pole[2,0]) and (pole[1,1]=i) and (pole[0,2]=5)) then

begin

pole[0,2]:=0;

DrawCircle(0*100+50,2*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

i:=1;

//////////////////////////

if ((pole[0,0]=pole[1,0]) and (pole[0,0]=i) and (pole[2,0]=5)) or

((pole[2,1]=pole[2,2]) and (pole[2,1]=i) and (pole[2,0]=5)) or

((pole[0,2]=pole[1,1]) and (pole[0,2]=i) and (pole[2,0]=5)) then

begin

pole[2,0]:=0;

DrawCircle(2*100+50,0*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,0]=pole[2,0]) and (pole[0,0]=i) and (pole[1,0]=5)) or

((pole[1,1]=pole[1,2]) and (pole[1,1]=i) and (pole[1,0]=5)) then

begin

pole[1,0]:=0;

DrawCircle(1*100+50,0*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[1,0]=pole[2,0]) and (pole[1,0]=i) and (pole[0,0]=5)) or

((pole[0,1]=pole[0,2]) and (pole[0,1]=i) and (pole[0,0]=5)) or

((pole[1,1]=pole[2,2]) and (pole[1,1]=i) and (pole[0,0]=5)) then

begin

pole[0,0]:=0;

DrawCircle(0*100+50,0*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,1]=pole[1,1]) and (pole[0,1]=i) and (pole[2,1]=5)) or

((pole[2,0]=pole[2,2]) and (pole[2,0]=i) and (pole[2,1]=5)) then

begin

pole[2,1]:=0;

DrawCircle(2*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,1]=pole[2,1]) and (pole[0,1]=i) and (pole[1,1]=5)) or

((pole[1,0]=pole[1,2]) and (pole[1,0]=i) and (pole[1,1]=5)) or

((pole[0,0]=pole[2,2]) and (pole[0,0]=i) and (pole[1,1]=5)) or

((pole[0,2]=pole[2,0]) and (pole[0,2]=i) and (pole[1,1]=5)) then

begin

pole[1,1]:=0;

DrawCircle(1*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[1,1]=pole[2,1]) and (pole[1,1]=i) and (pole[0,1]=5)) or

((pole[0,0]=pole[0,2]) and (pole[0,0]=i) and (pole[0,1]=5)) then

begin

pole[0,1]:=0;

DrawCircle(0*100+50,1*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,2]=pole[1,2]) and (pole[0,2]=i) and (pole[2,2]=5)) or

((pole[2,0]=pole[2,1]) and (pole[2,0]=i) and (pole[2,2]=5)) or

((pole[0,0]=pole[1,1]) and (pole[0,0]=i) and (pole[2,2]=5)) then

begin

pole[2,2]:=0;

DrawCircle(2*100+50,2*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[0,2]=pole[2,2]) and (pole[0,2]=i) and (pole[1,2]=5)) or

((pole[1,0]=pole[1,1]) and (pole[1,0]=i) and (pole[1,2]=5)) then

begin

pole[1,2]:=0;

DrawCircle(1*100+50,2*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

if ((pole[1,2]=pole[2,2]) and (pole[1,2]=i) and (pole[0,2]=5)) or

((pole[0,0]=pole[0,1]) and (pole[0,0]=i) and (pole[0,2]=5)) or

((pole[1,1]=pole[2,0]) and (pole[1,1]=i) and (pole[0,2]=5)) then

begin

pole[0,2]:=0;

DrawCircle(0*100+50,2*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end else

end;

end;

randomize;

if (whole<9) then

while w=27 do

begin

q:=random(3);

i:=random(3);

if (pole[i,q]=5) then

begin

pole[i,q]:=0;

DrawCircle(i*100+50,q*100+50,45,form1.image1.Canvas,clBlue);

w:=3;

end;

end;

whole:=whole+1;

end;

function ifwins():string;

begin

if (pole[0,0]=0) and (pole[0,1]=0) and (pole[0,2]=0) then result:='no' else

if (pole[1,0]=0) and (pole[1,1]=0) and (pole[1,2]=0) then result:='no' else

if (pole[2,0]=0) and (pole[2,1]=0) and (pole[2,2]=0) then result:='no' else

if (pole[0,0]=0) and (pole[1,0]=0) and (pole[2,0]=0) then result:='no' else

if (pole[0,1]=0) and (pole[1,1]=0) and (pole[2,1]=0) then result:='no' else

if (pole[0,2]=0) and (pole[1,2]=0) and (pole[2,2]=0) then result:='no' else

if (pole[0,0]=0) and (pole[1,1]=0) and (pole[2,2]=0) then result:='no' else

if (pole[0,2]=0) and (pole[1,1]=0) and (pole[2,0]=0) then result:='no';

if (pole[0,0]=1) and (pole[0,1]=1) and (pole[0,2]=1) then result:='yes' else

if (pole[1,0]=1) and (pole[1,1]=1) and (pole[1,2]=1) then result:='yes' else

if (pole[2,0]=1) and (pole[2,1]=1) and (pole[2,2]=1) then result:='yes' else

if (pole[0,0]=1) and (pole[1,0]=1) and (pole[2,0]=1) then result:='yes' else

if (pole[0,1]=1) and (pole[1,1]=1) and (pole[2,1]=1) then result:='yes' else

if (pole[0,2]=1) and (pole[1,2]=1) and (pole[2,2]=1) then result:='yes' else

if (pole[0,0]=1) and (pole[1,1]=1) and (pole[2,2]=1) then result:='yes' else

if (pole[0,2]=1) and (pole[1,1]=1) and (pole[2,0]=1) then result:='yes';

if (result<>'no')and(result<>'yes')and(whole>8) then result:='tie';

end;

function ifwinspos(x,y,winner :integer):integer;

begin

result:=9;

if (pole[0,0]=pole[0,1]) and (pole[0,2]=pole[0,1]) and (pole[0,1]=winner) then result:=4 else

if (pole[1,0]=pole[1,1]) and (pole[1,2]=pole[1,1]) and (pole[1,1]=winner) then result:=5 else

if (pole[2,0]=pole[2,1]) and (pole[2,2]=pole[2,1]) and (pole[2,1]=winner) then result:=6 else

if (pole[0,0]=pole[1,0]) and (pole[2,0]=pole[1,0]) and (pole[1,0]=winner) then result:=1 else

if (pole[0,1]=pole[1,1]) and (pole[2,1]=pole[1,1]) and (pole[1,1]=winner) then result:=2 else

if (pole[0,2]=pole[1,2]) and (pole[2,2]=pole[1,2]) and (pole[1,2]=winner) then result:=3 else

if (pole[0,0]=pole[1,1]) and (pole[2,2]=pole[1,1]) and (pole[1,1]=winner) then result:=7 else

if (pole[0,2]=pole[1,1]) and (pole[2,0]=pole[1,1]) and (pole[1,1]=winner) then result:=8;

end;

procedure TForm1.Image1Click(Sender: TObject);

var x,y:integer;

begin

{if (whole>0) then }GroupBox2.Enabled:=false;

x:=mouse.CursorPos.x-image1.left-form1.Left-4;

y:=mouse.CursorPos.y-image1.top-form1.top-30;

x:=x div 100;

y:=y div 100;

if (pole[x,y]=5) then

begin

putX(x*100,y*100);

pole[x,y]:=1;

putO();

updatetextXO();

win:=ifwins();

if (win='yes') then

begin

winXw.Caption:=inttostr(strtoint(winXw.Caption)+1);

winXw1.Caption:=winXw.Caption;

Theend(ifwinspos(x,y,1));

if (messagebox(0,'You win! Would you like to play once again?','Win!',mb_YESNO)=7) then close;

ReloadClick(Sender);

end;

if (win='no') then

begin

winOw.Caption:=inttostr(strtoint(winOw.Caption)+1);

winOw1.Caption:=winOw.Caption;

Theend(ifwinspos(x,y,0));

if (messagebox(0,'Have Lost? We shall be won back?','Defeat!',mb_YESNO)=7) then close;

ReloadClick(Sender);

end;

if (win='tie') then

begin

winTw.Caption:=inttostr(strtoint(winTw.Caption)+1);

winTw1.Caption:=winTw.Caption;

Theend(9);

if (messagebox(0,'Tie up, but zero''s find true way :)','Tie up!',mb_YESNO)=7) then close;

ReloadClick(Sender);

end;

end;

end;

procedure TForm1.ReloadClick(Sender: TObject);

var

i,q:integer;

begin

reloadcell();

reloadcell();

for i:=0 to 2 do

for q:=0 to 2 do

pole[i,q]:=5;

updatetextXO();

whole:=0;

groupbox2.Enabled:=true;

end;

procedure TForm1.ExitClick(Sender: TObject);

begin

close;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

i,q:integer;

begin

difficult:=2;

form1.left:=(screen.Width-form1.Width) div 2;

form1.top:=(screen.Height-form1.Height) div 2;

infovar:=0;

whole:=0;

reloadcell();

reloadcell();

for i:=0 to 2 do

for q:=0 to 2 do

pole[i,q]:=5;

updatetextXO();

end;

procedure TForm1.InfoClick(Sender: TObject);

begin

if (infovar=0)

then

begin

form1.Height:=form1.Height+GroupBox1.Height+10;

Groupbox1.Visible:=true;

info.Caption:='More info <<';

infovar:=1;

end

else

if (infovar=1)

then

begin

form1.Height:=484;

Groupbox1.Visible:=false;

info.Caption:='More info >>';

infovar:=0;

end;

form1.left:=(screen.Width-form1.Width) div 2;

form1.top:=(screen.Height-form1.Height) div 2;

end;

procedure TForm1.RadioButton5Click(Sender: TObject);

begin

difficult:=0;

diff.Caption:='Very easy';

end;

procedure TForm1.RadioButton4Click(Sender: TObject);

begin

difficult:=1;

diff.Caption:='Easy';

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

difficult:=2;

diff.Caption:='Normal';

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

difficult:=3;

diff.Caption:='Hard';

end;

end.

Размещено на Allbest.ru

...

Подобные документы

  • Создание программного комплекса, обеспечивающего использование структурированной базы данных для компьютерного магазина. Язык программирования высокого уровня C++. Требования к составу и параметрам технических средств, к программной документации.

    курсовая работа [314,8 K], добавлен 17.02.2010

  • Анализ использования разработки, обзор средств программирования и описание языков. Требования к составу и параметрам технических средств. Построение алгоритма и требования к его функциональности. Описание рабочего места на вычислительном центре.

    дипломная работа [2,6 M], добавлен 19.06.2017

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

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Требования к составу и параметрам технических средств. Выбор языка программирования. Структурная схема программного продукта. Проектирование пользовательского интерфейса. Создание системы и заполнение базы данных. Разработка форм ввода-вывода информации.

    курсовая работа [1,2 M], добавлен 30.01.2016

  • Создание программного комплекса, обеспечивающего использование структурированной базы данных для компьютерного магазина. Использование языка программирования высокого уровня C++. Требования к составу и параметрам технических средств, стадии разработки.

    курсовая работа [308,3 K], добавлен 13.02.2010

  • Разработка базы данных книжного магазина в среде программирования Delphi. Создание таблиц и их заполнение. Требования к составу и параметрам технических средств. База данных как набор файлов, содержащих информацию. Этапы создания приложения в Delphi.

    курсовая работа [803,6 K], добавлен 04.11.2012

  • Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

  • Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.

    курсовая работа [407,4 K], добавлен 21.06.2014

  • Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.

    курсовая работа [3,1 M], добавлен 27.02.2015

  • Обзор средств программирования. Описание и свойства языка Delphi. Основания для разработки, ее назначение, предъявляемые требования, стадии разработки. Описание схемы основного модуля, процедур, программы. Используемые технические и программные средства.

    курсовая работа [42,8 K], добавлен 25.02.2012

  • Требования к программе, составу и параметрам технических средств. Основные элементы языка программирования. Инструкция на выполнение программы учета клиентов: вызов и загрузка, входные и выходные данные. Расчет себестоимости программного продукта.

    дипломная работа [3,9 M], добавлен 29.06.2012

  • Классификация электронных средств обучения, преимущества их использования, рекомендации по созданию. Требования к структуре и содержанию учебного материала. Особенности изучения языков программирования на уроках информатики. Среда программирования Delphi.

    дипломная работа [770,2 K], добавлен 12.09.2015

  • Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.

    курсовая работа [1,5 M], добавлен 17.11.2010

  • Разработка программного обеспечения для корпоративного портала Череповецкого Государственного Университета. Выбор технологии, среды и языка программирования. Требования к составу и параметрам технических средств. Построение функциональных диаграмм.

    дипломная работа [1,7 M], добавлен 09.11.2016

  • Разработка программного приложения в среде Delphi. Создание таблиц и их заполнение. Форма редактирования записи. Реализация SQL запросов и поиска. Создание отчётов по БД. Руководство пользователя. Требования к составу и параметрам технических средств.

    курсовая работа [1,3 M], добавлен 03.11.2014

  • Программная реализация настольного приложения с использованием языка программирования C#. Проектирование и структура пользовательского интерфейса, требования к нему и оценка функциональности. Разработка руководства пользователя и его использование.

    курсовая работа [297,6 K], добавлен 10.03.2015

  • Программа по созданию стрелочных часов. Минимальные требования к составу и параметрам технических средств программы. Выбор и обоснование системы программирования Microsoft Visual Studio. Общее описание алгоритма. Руководство пользователя и программиста.

    контрольная работа [1017,1 K], добавлен 11.12.2012

  • Требования по разработке программы часов, особенности и преимущества языка Delphi 7. Разработка блок-схем алгоритмов и описание процесса программирования. Основные процедуры для реализации, назначение, функционирование и условие работы с программой.

    курсовая работа [1,2 M], добавлен 14.07.2012

  • Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.

    учебное пособие [1,7 M], добавлен 26.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.