This repository has been archived on 2024-12-25. You can view files and clone it, but cannot push or open issues or pull requests.
2024-03-10 20:32:51 +03:00

67 lines
1.7 KiB
ObjectPascal

// Самообучающаяся игра "Угадай животное".
// Старайтесь на вопрос "Чем отличается" вводить самый общий ответ
// Например: "Чем отличается чиж от ежа" - "Умеет летать"
uses System.Runtime.Serialization.Formatters.Binary;
uses System.IO;
uses System;
type
[Serializable]
Node = class
public
s: string;
left,right: Node;
constructor(s: string);
begin
Self.s := s;
left := nil;
right := nil;
end;
end;
const FileName = 'animals.dat';
begin
var formatter := new BinaryFormatter;
var root: Node;
Println('Загадайте животное');
if not FileExists(FileName) then
root := new Node('Собака')
else
begin
var fs := new FileStream(FileName, FileMode.OpenOrCreate);
root := Node(formatter.Deserialize(fs));
fs.Close;
end;
var p := root;
while p.left<>nil do
begin
var x := ReadlnInteger(p.s+'? (0 - Нет, 1 - Да):');
if x=1 then
p := p.left
else
p := p.right
end;
var x := ReadlnInteger('Это '+p.s+'? (0 - Нет, 1 - Да): ');
if x=1 then
Println('Я угадала!')
else
begin
var s := ReadlnString('Я проиграла. Что это за животное?');
var q := ReadlnString('Введите вопрос, отличающий это животное от '+p.s+':');
var p1 := new Node(s);
var p2 := new Node(p.s);
p.s := q;
p.left := p1;
p.right := p2;
end;
var fs := new FileStream(FileName, FileMode.OpenOrCreate);
formatter.Serialize(fs, root);
fs.Close;
end.