Инфоурок Информатика ПрезентацииПроектная работа по информатике по теме "Создание игры на языке Pascal"

Проектная работа по информатике по теме "Создание игры на языке Pascal"

Скачать материал

 Муниципальное образовательное автономное учреждение

средняя общеобразовательная школа № 12 им. П.Ф.Дерунова

 

 

 

 

 

 

Исследовательская работа

 

 

Создание игры на языке PASCAL

 

 

 

 

 

 

 

 

 

Выполнил: Ялычев Тимофей,

ученик  9 «В» класса

Научный руководитель: Говорова Е. А.

Учитель Информатики

 

 

 

 

 

 

 

г. Рыбинск

2019-2020 учебный год

 

 

Содержание

 

1.                 Введение

           - Почему я выбрал этот проект?

           - Гипотеза

           - Цель

           - Задачи

2.                 Теоретическая часть.

3.                 Практическая часть.

4.       Заключение.

5.       Информационные ресурсы.

6.                 Приложения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

«Почему я выбрал именно эту тему?»

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

 

Цель: создать игру «Крестики-нолики» на языке программирования Pascal.

 

Задачи:

 

-Изучить материалы о языке Pascal

-Изучить алфавит языка Pascal

-Изучить особенности алгоритмического языка Pascal

 

Гипотеза:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Что такое Pascal?

Язык был создан Никлаусом Виртом (см. приложение 1.1) в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал одну из первых в мире механических машин, складывающую два числа. Первая публикация Вирта о языка датирована 1970 годом; представляя язык, автор в качестве цели его создания указывал построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.

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

·заголовок программы;

·раздел описания переменных;

·раздел действий;

·точка.

 

Особенности языка Pascal

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

 

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций, написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования»(эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

 

Pascal в наши дни

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

 

Алфавит и словарь языка Паскаль

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

Алфавит Паскаля составляют:

-                   прописные и строчные буквы латинского алфавита:

          A, B, C…Y, Z, a, b, c…y, z;

-                   десятичные цифры:

          0, 1, 2…9;

-                   специальные символы:

          + - * / > < = ; # ‘ , . : {} []  ( ) ;

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

          «:=», «..», «<>», «<=», «>=», «{}».

 

Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями. Ими могут быть пробел, комментарий или символ конца строки. Словарь Паскаля можно разделить на три группы слов: зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя.

Зарезервированные слова (см. табл. 1.1) имеют фиксированное написание и навсегда определенный смысл. Они не могут изменяться программистом, и их нельзя использовать в качестве имен для обозначения величин.

Идентификатор – имя (identification – установление соответствия объекта некоторому набору символов). Для обозначения определенных разработчиками языка функций, констант и т.д. служат стандартные идентификаторы, например, Sqr, Sqrt и т.д. В этом примере Sqr вызывает функцию, которая возводит в квадрат данное число, а Sqrt – корень квадратный из заданного числа. Пользователь может переопределить любой стандартный идентификатор, но чаще всего это приводит к ошибкам, поэтому на практике их используют без изменения. Идентификаторы пользователя – это те имена, которые дает сам программист. При записи программ нужно соблюдать общие правила написания идентификаторов:

Идентификатор начинается только с буквы (исключение составляют специальные идентификаторы меток).

Идентификатор может состоять из букв, цифр и знака подчеркивания.

Максимальная длина – 127 символов.

При написании идентификаторов можно использовать прописные и строчные буквы.

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

 

Таблица 1.1

Absolute

Абсолютный

Library

Библиотека

And

Логическое И

Mod

Остаток от деления

Array

Массив

Not

Логическое НЕ

Begin

Начало блока

Or

Логическое ИЛИ

Case

Вариант

Of

Из

Const

Константа

Object

Объект

Div

Деление нацело

Procedure

Процедура

Goto

Переход на

Program

Программа

Do

Выполнять

Repeat

Повторять

Downto

Уменьшить до

String

Строка

Else

Иначе

Then

То

End

Конец блока

To

Увеличивая до

File

Файл

Type

Тип

For

Для

Until

До тех пор, пока не выполнится

Function

Функция

Uses

Использовать

If

Если

Var

Переменная

Interrupt

Прерывание

While

Пока

Interface

Интерфейс

With

С

Label

Метка

Xor

Исключающее ИЛИ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Исследовательская часть

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

 

Правила игры в «Крестики-нолики»

Игроки по очереди ставят на свободные клетки поля 3х3 знаки (один всегда крестики, другой всегда нолики). Первый, выстроивший в ряд 3 своих фигуры по вертикали, горизонтали или диагонали, выигрывает. Первый ход делает игрок, ставящий крестики.

Обычно по завершении партии выигравшая сторона зачёркивает чертой свои три знака (нолика или крестика), составляющих сплошной ряд.

Описание алгоритма:

1.                 Отрисовать игровое поле.

2.                 Позволить сделать шаг игроку.

3.                 Проверить выиграл ли кто-то.

4.                 Если да — выиграл текущий игрок, иначе вернуться к шагу 1.

Управление:

Левая кнопка мыши — установить крестик / нолик.

Алгоритм:

uses GraphABC;

const

  N = 2;

  Z = '0';

  K = 'X';

  Size = 200;

  Border = 1;

  Sx = 1200;

  Sy = 70;

 

var

  Matrix: array [0..N, 0..N] of char;

  Player1: boolean;

 

procedure Draw();

  procedure DrawZ(i, j: integer);

  begin

    SetPenColor(clCyan);

    SetPenWidth(4);

    var size2 := Size div 2;

    DrawCircle((i + 1) * Size - size2, (j + 1) * Size - size2, Round(size2 * 0.7));

  end;

 

  procedure DrawK(i, j: integer);

    procedure RLine(x, y, x1, y1: real):=Line(Round(x), Round(y), Round(x1), Round(y1));

 

  begin

    SetPenColor(clPink);

    SetPenWidth(4);

    var size2 := Size div 2 * 0.3;

    var cx1 := i * Size + size2;

    var cy1 := j * Size + size2;

    var cx2 := (i + 1) * Size - size2;

    var cy2 := (j + 1) * Size - size2;

    RLine(cx1, cy1, cx2, cy2);

    RLine(cx1, cy2, cx2, cy1);

  end;

 

  begin

    ClearWindow(clBlack);

    if Player1 then SetWindowCaption('Ходит первый игрок') else SetWindowCaption('Ходит второй игрок');

    for var i := 0 to N do

      for var j := 0 to N do

      begin

        SetPenColor(clLightBlue);

        SetPenWidth(1);

        DrawRectangle(i * Size + Border, j * Size + Border, (i + 1) * Size - Border, (j + 1) * Size - Border);

        if Matrix[i, j] = Z then DrawZ(i, j)

        else if Matrix[i, j] = K then DrawK(i, j);

      end;

    Redraw();

  end;

 

function Won(c: char): boolean;

var

  count: byte;

begin

  Result := false;

  for var i := 0 to N do

  begin

    count := 0;

    for var j := 0 to N do

      if Matrix[i, j] = c then Inc(count);

    if count = 3 then Result := true;

  end;

 

  if not Result then

  begin

    for var i := 0 to N do

    begin

      count := 0;

      for var j := 0 to N do

        if Matrix[j, i] = c then Inc(count);

      if count = 3 then Result := true;

    end;

   

    if not Result then

    begin

      count := 0;

      for var i := 0 to N do

        if Matrix[i, i] = c then Inc(count);

      if count = 3 then Result := true;

     

      if not Result then

      begin

        count := 0;

        for var i := 0 to N do

          if Matrix[N - i, i] = c then Inc(count);

        if count = 3 then Result := true;

      end;

    end;

  end;

end;

 

function IsFull(): boolean;

begin

  Result := true;

  for var i := 0 to N do

    for var j := 0 to N do

      if (Matrix[i, j] <> Z) and (Matrix[i, j] <> K) then

      begin

        Result := false;

        break;

      end;

end;

 

procedure MouseDown(x, y, mb: integer);

  procedure ShowWinner(s: string; c: Color);

  begin

    SetWindowCaption('Результат игры');

    Sleep(2000);

    SetWindowSize(Sx, Sy);

    CenterWindow();

    ClearWindow(clBlack);

   

    SetFontSize(16);

    SetFontStyle(fsBold);

    SetFontColor(c);

    DrawTextCentered(0, 0, Sx, Sy, s);

   

    Redraw();

    Sleep(2000);

    Halt();

  end;

 

begin

  var i := x div Size;

  var j := y div Size;

  if (Matrix[i, j] <> Z) and (Matrix[i, j] <> K) then

  begin

    if Player1 then Matrix[i, j] := Z else Matrix[i, j] := K;

    Draw();

   

    var winnerExists := Won(Z) or Won(K);

    if winnerExists then

      if Player1 then ShowWinner('Игрок первый победил!', clLightBlue) else ShowWinner('Игрок второй победил!', clLightBlue);

   

    if IsFull() and not winnerExists then ShowWinner('Ничья!', clOrange);

   

    Player1 := not Player1;

  end;

end;

 

begin

  var Size2 := Size * 3;

  SetWindowIsFixedSize(true);

  SetWindowSize(Size2, Size2);

  CenterWindow();

  LockDrawing();

 

  Player1 := true;

  Draw();

 

  OnMouseDown := MouseDown;

end.

 

(фото получившейся игры см. в приложении 2.1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

В конечном итоге у нас получилась популярная игра «Крестики-нолики».                       Я выполнил свою цель и моя гипотеза подтвердилась: «На алгоритмическом языке Pascal вполне возможно создать простейшую игру». За время выполнения этого проекта я научился пользоваться программой PascalABC.NET, создавать разные алгоритме на языке Pascal и получил огромный опыт, который пригодится мне в моей будущей работе программиста.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список источников

https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82,_%D0%9D%D0%B8%D0%BA%D0%BB%D0%B0%D1%83%D1%81#/media/%D0%A4%D0%B0%D0%B9%D0%BB:Niklaus_Wirth,_UrGU.jpg

https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82,_%D0%9D%D0%B8%D0%BA%D0%BB%D0%B0%D1%83%D1%81

https://progmatem.ru/pascal/vvedenie-v-pascal.html

https://nsportal.ru/shkola/informatika-i-ikt/library/2017/03/24/animatsiya-v-pascal-abc

https://ru.wikibooks.org/wiki/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%B8%D0%B3%D1%80_%D0%BD%D0%B0_PascalABC.Net

https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B5%D1%81%D1%82%D0%B8%D0%BA%D0%B8-%D0%BD%D0%BE%D0%BB%D0%B8%D0%BA%D0%B8

Приложения

Надпись:                                                Приложение 1.1, фото Никлауса Вирта

Приложение 2.1, фото игры


Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Проектная работа по информатике по теме "Создание игры на языке Pascal""

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Ландшафтный архитектор

Получите профессию

Менеджер по туризму

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Краткое описание документа:

В проектной работе ученика 9 класса представлена разработка популярной игры "Крестики-нолики", выполненной на языке Pascal.

Цель: создать игру «Крестики-нолики» на языке программирования Pascal.

Задачи:

-Изучить материалы о языке Pascal

-Изучить алфавит языка Pascal

-Изучить особенности алгоритмического языка Pascal


Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 664 075 материалов в базе

Материал подходит для УМК

Скачать материал

Другие материалы

Урок: "Совместное создание презентации с помощью сервиса Google презентации"
  • Учебник: «Информатика», Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.
  • Тема: 1.1. Автоматизированные и автоматические системы управления
  • 06.10.2020
  • 429
  • 8
«Информатика», Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.
Урок: Контрольная работа по теме: «Кодирование и обработка текстовой информации»
  • Учебник: «Информатика», Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.
  • Тема: § 26. Проблемы формирования информационного общества
  • 06.10.2020
  • 549
  • 6
«Информатика», Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 15.10.2020 7009
    • DOCX 89 кбайт
    • 134 скачивания
    • Оцените материал:
  • Настоящий материал опубликован пользователем Говорова Екатерина Александровна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    • На сайте: 7 лет и 4 месяца
    • Подписчики: 2
    • Всего просмотров: 28928
    • Всего материалов: 8

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Секретарь-администратор

Секретарь-администратор (делопроизводитель)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Информатика: теория и методика преподавания в профессиональном образовании

Преподаватель информатики

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 49 человек из 22 регионов
  • Этот курс уже прошли 152 человека

Курс профессиональной переподготовки

Педагогическая деятельность по проектированию и реализации образовательного процесса в общеобразовательных организациях (предмет "Математика и информатика")

Учитель математики и информатики

300 ч. — 1200 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 36 человек из 17 регионов
  • Этот курс уже прошли 35 человек

Курс профессиональной переподготовки

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

Специалист по формированию электронного архива

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Сейчас обучается 30 человек из 22 регионов
  • Этот курс уже прошли 36 человек

Мини-курс

Стратегии клиентоориентированного бизнеса

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

ИТ-инструменты в управлении документооборотом

6 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Психологические особенности педагогического общения

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 32 человека из 18 регионов
  • Этот курс уже прошли 20 человек