pascal ООП для анимации
Primary tabs
В этом уроке мы постараемся привести более "жизненные" примеры использования ООП в простых анимациях и играх
Пример №1 - Перемещение объекта по команде от пользователя -- переход к ООП
Есть код, который, используя обновление консоли как в примере с анимацией, может дать пользователю перемещать символ по экрану влево и вправо:
uses Crt; procedure drawFrame(skin: char; position: integer); var i: integer; begin for i:=1 to (position-1) do write(' '); writeln(skin); end; function getNewPosition(position: integer): integer; var command: char; begin readln(command); if (command = '2') then result := position + 1 else if (position > 1) then result := position - 1; end; // * var position: integer; skin, command: char; begin skin := '*'; // внешний вид command := '1'; // последняя введенная команда position := 1; // текущая позиция while(command <> 'q') do begin ClrScr(); drawFrame(skin, position); position := getNewPosition(position); end; writeln('Программа завершена!'); readln(); end.
его можно переписать в стиле ООП, например, так:
uses Crt; type Animal = class public constructor create(skinValue: char); procedure drawFrame(); procedure handleCommand(); function getCommand(): char; protected skin: char; // внешний вид position: integer; // текущая позиция command: char; // последняя введенная команда function getNewPosition(commandValue: char): integer; end; constructor Animal.create(skinValue: char); begin self.skin := skinValue; self.command := ' '; // значение по умолчанию end; procedure Animal.drawFrame(); var i: integer; begin for i:=1 to (self.position-1) do write(' '); writeln(self.skin); end; procedure Animal.handleCommand(); begin readln(self.command); self.position := self.getNewPosition(self.command); end; function Animal.getNewPosition(commandValue: char): integer; begin if (commandValue = '2') then result := position + 1 else if (position > 1) then result := position - 1; end; function Animal.getCommand(): char; begin result := self.command; end; var position: integer; skin, command: char; AnimalItem: Animal; begin AnimalItem := Animal.create('*'); while(AnimalItem.getCommand() <> 'q') do begin ClrScr(); AnimalItem.drawFrame(); AnimalItem.handleCommand(); end; writeln('Программа завершена!'); readln(); end.
- Log in to post comments
- 43 reads