RSS    
 

    3: Mark := '3';

    4: Mark := '4';

    5: Mark := '5';

  else

    Mark := '0'

  end

end; {Mark}

{-----------------}

var

  I: Byte;

  Result: Byte;

  StrRes: string[2];

  TempS: TText;

  C: Char;

begin

  C := #0;

  ClearDevice;

  Result := 0;

  TempS := EndofTest;

  for I := 1 to 5 do

    begin

      if Quastion(I, C) = 1 then

        Inc(Result);

      if C = #27 then Exit

    end;

  ClearDevice;

  SetColor(BRDCol);

  Rectangle(0, 0, GetMaxX, GetMaxY);

  Str(Result, StrRes);

  TempS[3] := EndofTest[3] + StrRes;

  TempS[4] := EndofTest[4] + Mark(Result);

  SetColor(BRDCol);

  Rectangle(GetMaxX div 2 - 150, GetMaxY div 2 - 60,

            GetMaxX div 2 + 150, GetMaxY div 2 + 40);

  TextT(TestCol, TempS);

  _Pause;

  ClearDevice

end; {TestMode}

{-------------------}

procedure MainMenu;

var

  C: Char;

  ExtentedKey: Boolean;

  TempCol: TColor;

  K: ShortInt;

begin

  ClearDevice;

  TempCol[1] := MenuCol[1];

  TempCol[2] := MenuCol[3];

  TempCol[3] := MenuCol[4];

  TempCol[4] := MenuCol[4];

  K := 1;

  repeat

    SetColor(BRDCol);

    Rectangle(GetMaxX div 2 - 150, GetMaxY div 2 - 60,

              GetMaxX div 2 + 150, GetMaxY div 2 + 40);

    Rectangle(0, 0, GetMaxX, GetMaxY);

    ExtentedKey := False; {флаг поступления расширенного кода}

    TextT(TempCol, Menu);

    while KeyPressed do ReadKey;  {очистка буфера клавиатуры}

    C := ReadKey;         {считывание кода новой нажатой клавиши}

    if C = #0 then        {если "да" - код расширенный}

      begin

КР. 991096.00.00.00 ПЗ Лист
——–

Изм.

Лист

№ докум.

Подп.

Дата

16
 


        C := ReadKey;     {считывается второй символ расширенного кода}

        ExtentedKey := True

      end;

    if ExtentedKey then   {если код был расширенный}

      case C of

        #72: K := K - 1;

        #80: K := K + 1

      end;

    if C = #13 then

      case K of

        1: Play;         {Обучение}

        2: TestMode;     {Проверка знаний}

        3: Exit          {Выход}

      end;

    if K < 1 then K := 3;

    if K > 3 then K := 1;

    for I := 2 to 4 do

      TempCol[I] := MenuCol[4];

    TempCol[K + 1] := MenuCol[3];  {Смена цвета выделленого пункта}

  until C = #27    {т.е. нажата клавиша "Esc"}

end; {MainMenu}

{-------------------}

begin

  MyInitGraph;           {Инициализация графического режима}

  Title;                 {Титульный лист}

  MainMenu;              {Главное меню}

  CloseGraph;            {Закрытие графического режима}

end. {LEAN_Ecm;}

{-------------------}

Текст модуля Sm_Const

unit Sm_Const;

interface

uses Graph, Sm_Graph;

type

TText = array [1..4] of string;

TColor = array [1..4] of Word;

------------------- type

const

X0:   Integer     =     10;   {Начальная координата X}

Y0:   Integer     =     20;   {Начальная координата Y}

XS:   Integer     =     10;   {FuncKey}

YS:   Integer     =     440;  {FuncKey}

XC:   Integer     =     400;  {Context}

YC:   Integer     =     20;   {Context}

XT:   Integer     =     80;   {Test}

YT:   Integer     =     150;  {Test}

X: Integer =      15;    {Координата вывод текста X}

Y: Integer =      330;   {Координата вывод текста Y}

ARBCol: Word      = LightCyan;  {Цвет внешней границы стрелки Big}

ARSCol: Word      = Red;           {Цвет внешней границы стрелки Small}

FILCol: Word      = Blue;          {Цвет стрелки Big}

MemCol: Word      = LightGreen; {Цвет ячеек памяти}

CPUCol: Word      = DarkGray;   {Цвет CPU}

BRDCol: Word      = Brown;      {Цвет рамки}

TxtCol: Word      = White;      {Цвет текста}

BArrow: TArrow = (X1 : 15; Y1 : 2; Y2 : 5); {Форма стрелки Big}

SArrow: TArrow = (X1 :  5; Y1 : 0; Y2 : 1); {Форма стрелки Small}

TestCol: TColor = (Green, White, Blue, Red); {Цвет окна теста}

MenuCol: TColor = (Cyan, 0, LightGreen, Blue);

V: string[1] = '';

Q: string[9] = 'Вопрос #';

{Вопросы]

КР. 991096.00.00.00 ПЗ Лист
——–

Изм.

Лист

№ докум.

Подп.

Дата

17
 
Quastions: array [1..5] of string =

('1. Что такое ВЗУ?',

'2. Что в ходит в процесор?',

'3. Через какое устройство в ЭВМ происходит обмен данными?',

'4. Где в начальный момент находится программа? ',

'5. Какое из устройств расшифровывает первую машинную команду?');

{Варианты ответов}

Answer: array [1..5, 1..3] of string =

(('1. Внешнее записывающее устройство', '2. Внешнее запоминающее устройство', '3. Внутреннее запоминающее устройство'), ('1. ЦУУ + АЛУ + ВЗУ', '2. УВвода + ОЗУ', '3. ЦУУ + АЛУ + КОП'),

('1. АЛУ  ','2. ОЗУ', '3. ВЗУ'),

('1. В ВЗУ','2. В АЛУ','3. В УУ'),

('1. ВЗУ', '2. ЦУУ', '3. АЛУ'));

{Номера правильных ответов}

OK: array [1..5] of Byte = (2, 3, 2, 1, 2);

{Текст Меню}

Menu: TText =('Ваш выбор:',

'Обучение',

'Проверка знаний',

'Esc - Выход');

{Текст итога тестовой части программы}

EndofTest: TText =  ('Ваш результат:',

'Всего вопросов:  5',

'Количество правильных ответов: ',

'Оценка:    ');

------------------- const

implementation

end.

Текст модуля Sm_graph

unit Sm_Graph;

                                interface

uses

  Graph, Crt;

{-------------------} {Uses}

type

TArrow = record X1, Y1, Y2: Integer; end;

TImage =

  object

      private

    Image: Pointer;

    Size : Word;

      public

    procedure Destroy;

    procedure Get(X1, Y1, X2, Y2: Integer);

    procedure Put(X, Y: Integer);

  end;

{-------------------} {Type}

const

  CArrow: TArrow = (X1 : 15; Y1 : 2; Y2 : 5);

  Time_1: Word = 5000;  {Время мерцания}

  Time_2: Word = 15000; {Время задержки экрана после ответа на вопрос}

  Time_3: Word = 300;   {Время анимации}

  Time_4: Word = 400;   {Время задержки вывода текста по буквам}

procedure _Pause;

procedure Animation(X, Y: Integer; D: Integer; XY: Byte; S: string; Vis: Boolean);

procedure Arrow(X, Y, L: Integer; DIRectIOn: Byte);

procedure BLink(X, Y: Integer; S: string);

procedure MyInitGraph;

КР. 991096.00.00.00 ПЗ Лист
——–

Изм.

Лист

№ докум.

Подп.

Дата

18

Страницы: 1, 2, 3, 4, 5, 6, 7


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.