forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Избежание погрешностей (AI) (http://forum.boolean.name/showthread.php?t=3814)

Fant 04.07.2007 11:36

Избежание погрешностей (AI)
 
Вложений: 2
Вообщем сделал я простенький ИИ для игры, но когда он "поворачивает" то координаты, по которым он "ездит" сбиваются немного

На картинке показано, что Position_X = 69,9995
Как мне избежать таких погрешностей?

moka 04.07.2007 11:39

Re: Избежание погрешностей (AI)
 
Position_X=Int(Position_X)
обратно всё исправит. Это баг блица, уже не раз обсуждалось.
О! Мак? Как вообще на маках живётся? ;)

Fant 04.07.2007 11:42

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Position_X=Int(Position_X)
обратно всё исправит. Это баг блица, уже не раз обсуждалось.
О! Мак? Как вообще на маках живётся? ;)

Windows...тяжко живется)
Попробую по твоему совету щас сделать...

moka 04.07.2007 11:45

Re: Избежание погрешностей (AI)
 
Но! Делать не постоянно, а например когда нужно, например:
If Int(Position_X)-Position_X<.001 Position_X=Int(Position_X)
Или лучше самому прописывать в с определённым условием, более стабильным.

Fant 04.07.2007 11:47

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от JohnK
Округляй до целого. (int) переменная.

Какую именно переменную округлять?

Вот так он у меня "ходит"

en1\timer#=en1\timer#+en1\speed#
If en1\timer#<=10 Then en1\speed#=.1 Else en1\speed#=0

If en1\timer#>=10 And en1\understand_f=0 Then en1\timer#=0
если таймер больше 10 и впереди свободно, то таймер опять на 0

И впринципе это работает без погрешностей, но вот когда ИИ производит поворот (из-за стены) или упирается в стену, то тут начинается...

Fant 04.07.2007 11:48

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Но! Делать не постоянно, а например когда нужно, например:
If Int(Position_X)-Position_X<.001 Position_X=Int(Position_X)
Или лучше самому прописывать в с определённым условием, более стабильным.

То есть если погрешность, то через positionEntity ставить его на место?

moka 04.07.2007 12:02

Re: Избежание погрешностей (AI)
 
Тут уже нужно делать проверку на текущее положение в определённой оси, т.к. как понял у тебя всё поле будет поделено на вертикальные и горизонтальные оси, поэтому и проверяй, а при несоответствии координат к оси, уже двигай.
Еслу у тебя они двигаються и не налезают на перегородки, то и колизия вообще не нужна, т.к. с ней гемороя на свою голову только.
Если погрешность, то менять координаты и ставить на место.

Fant 04.07.2007 12:12

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Тут уже нужно делать проверку на текущее положение в определённой оси, т.к. как понял у тебя всё поле будет поделено на вертикальные и горизонтальные оси, поэтому и проверяй, а при несоответствии координат к оси, уже двигай.
Еслу у тебя они двигаються и не налезают на перегородки, то и колизия вообще не нужна, т.к. с ней гемороя на свою голову только.
Если погрешность, то менять координаты и ставить на место.

Коллизия у меня есть. За перегородки и на кубики ИИ не влезает. Вот только не понял как ты мне предлагаешь его двигать? Может как-то можно сдлелать ИИ без этих проверок?

У меня ИИ сделан через массив. И проверяется, если впереди 0, то свободно.

johnk 04.07.2007 12:13

Re: Избежание погрешностей (AI)
 
Fant, сорри, это применимо к C\C#\C++.
А почему бы тебе просто не использовать целые числа? Целые прибавлять, целые отнимать. И все у тебя будет int :crazy:

Raiter 04.07.2007 12:18

Re: Избежание погрешностей (AI)
 
Может ему нужна скорость 0.04, а не 1, например ? ;)

Fant 04.07.2007 12:19

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от JohnK
Fant, сорри, это применимо к C\C#\C++.
А почему бы тебе просто не использовать целые числа? Целые прибавлять, целые отнимать. И все у тебя будет int :crazy:

Что бы ИИ корректно ездил, я должен
1. Проверить есть ли препядствие
2. Пустить таймер до 10.

Тогда он уткнется в стенку
Таймер у меня целый. От 1 до 10 считает (>=10)
А вот скорость ИИ должна быть .1 иначе быстро получается

moka 04.07.2007 12:21

Re: Избежание погрешностей (AI)
 
Значит у тебя двух мерный массив - карта проходимости.
Тогда зачем таймер? Если можно просто двигать его, и проверять в карте проходимости: стоит ли по направлению объект, если да, то поворачивать, тут стадия бота с "Идти", меняется на "Поворачивать "+тут нужно проверять по карте проходимости, если справа пусто то "90", если слева пусто "-90", если и там и там пусто, то или то или другое, а если занято, то 180 или -180, и параметр, в который запишешь начальный градус перед поворотом, он будет делиться на 90, дальше в цикле, выбираем режим поворота, и соответственно, положительное\отрицательное, в ту сторону и крутим, и проверяем на разницу текущего градуса и начального перед началом поворота, если она (разница), будет больше\меньше (зависит положительное или отрицательное), то поворачивать его опять только на тот же градус (малоли погрешность), и переходить в режим "Двигать".
Надеюсь система понятна? ;)

Цитата:

2. Пустить таймер до 10.
Не факт, ты его юзаешь т.к. проходя эти 10, бот будет какраз в координате перекрёстка, а это можно проверить координатами.

Цитата:

Может ему нужна скорость 0.04, а не 1, например ?
Нельзя использовать такие большие координаты, придерживайтесь масштаба (Проверено!), это удобно и лишняя головная боль не будет тревожить! Масштаб: 10Единиц = 1Метр

Fant 04.07.2007 12:21

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от Raiter
Может ему нужна скорость 0.04, а не 1, например ? ;)

А разница?

Fant 04.07.2007 12:27

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Значит у тебя двух мерный массив - карта проходимости.
Тогда зачем таймер? Если можно просто двигать его, и проверять в карте проходимости: стоит ли по направлению объект, если да, то поворачивать, тут стадия бота с "Идти", меняется на "Поворачивать "+тут нужно проверять по карте проходимости, если справа пусто то "90", если слева пусто "-90", если и там и там пусто, то или то или другое, а если занято, то 180 или -180, и параметр, в который запишешь начальный градус перед поворотом, он будет делиться на 90, дальше в цикле, выбираем режим поворота, и соответственно, положительное\отрицательное, в ту сторону и крутим, и проверяем на разницу текущего градуса и начального перед началом поворота, если она (разница), будет больше\меньше (зависит положительное или отрицательное), то поворачивать его опять только на тот же градус (малоли погрешность), и переходить в режим "Двигать".
Надеюсь система понятна? ;)

Понятно) я так хотел еще полгода назад сделать. Дело в том что у меня с массивом так:
Local obj_x = Int((EntityX (obj)/10))
Local obj_z = Int ((EntityZ (obj)/10))
Округление)
И получается, что когда ИИ (или даже игрок) зайдет большей половиной на клетку, то происходит проверка и он останавливается на полпути ИБО дальше не идет так как там якобы "препядствие". Для этого я установил таймер. Когда срабатывает "якобы препядствие" я отсчитываю еще 10 и получаю что ИИ упирается в стенку

Fant 04.07.2007 12:35

Re: Избежание погрешностей (AI)
 
Вот игрок у меня, например, без всяких погрешностей. Но там и константы (просто движения игрока не я делал и я в принципе на 100% не разобрался как там сделали так, что он без проблем ходит)

Fant 04.07.2007 12:51

Re: Избежание погрешностей (AI)
 
Мы тут так много наобсуждали)

Может попорядку?

У меня есть массив, опираясь на который, я проверяю, можно ли туда пойти или нельзя

Есть ИИ, и что бы он корректно останавливался у стенки, было небходимо ввести таймер!

В результате у меня появились погрешности (или не из-за таймера)...и вот я прошу посоветовать\помочь мне...как же все-таик этих погрешностй избежать?

moka 04.07.2007 13:32

Re: Избежание погрешностей (AI)
 
Не используй таймер, а делай так:
Двигаешь объект, и проверяешь координаты, если он на перекрёстке (сколько у тебя там квартал не знаю), то проверять на наличие стен и изменяй направление\двигай дальше.
Тоесть не таймер используй а условие если координаты бота, совпадают с координатами перекрёстка (погрешности с координатами учитывай, т.к. они Везде!)

Fant 04.07.2007 14:22

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Не используй таймер, а делай так:
Двигаешь объект, и проверяешь координаты, если он на перекрёстке (сколько у тебя там квартал не знаю), то проверять на наличие стен и изменяй направление\двигай дальше.
Тоесть не таймер используй а условие если координаты бота, совпадают с координатами перекрёстка (погрешности с координатами учитывай, т.к. они Везде!)

А как я проверю, стоит ли бот на перекрестке? Пусть 1 проход=10 блиц клеток

moka 04.07.2007 14:45

Re: Избежание погрешностей (AI)
 
If abs(EntityX(Bot)-PoloskaX)<.1
EndIf

Fant 04.07.2007 14:53

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
If abs(EntityX(Bot)-PoloskaX)<.1
EndIf

-PoloskaX - это что за переменная?

У меня есть средтсва:
en1\Understand_f=1 или 0
en1\Understand_b=1 или 0
en1\Understand_l=1 или 0
en1\Understand_r=1 или 0

Проверяют есть ли препядствие и с какой оно стороны

HolyDel 04.07.2007 20:25

Re: Избежание погрешностей (AI)
 
одна еденица - один метр.
будет z-buffer баловаться - camerarange() настрой.

Fant 09.07.2007 08:50

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от HolyDel
одна еденица - один метр.
будет z-buffer баловаться - camerarange() настрой.

с что это за буфер и почему но будет ругаться? И самое главное, при чем тут camera range.?

HolyDel 09.07.2007 11:15

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

Function eq(a#,b#,e#=0.001)
        If Abs(a-b)<e Then Return 1 Else Return 0
End Function


Fant 09.07.2007 15:27

Re: Избежание погрешностей (AI)
 
Цитата:

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

Function eq(a#,b#,e#=0.001)
 If Abs(a-b)<e Then Return 1 Else Return 0
End Function


ну...как сказать...это мне для ии нужно. Ведь если они будут час путешествовать по карте, то погрешность будет со временем все больше. Я бы хотел, что бы мой объект, используя таймер путешествовал без погрешностей! У меня игрок без погрешности, хотя с таймером. Я ии почти так же сделал и сейчас у меня погрешность в .006а то и меньше. Но это при проходе двух или трех клеток. Я пока больше не проверял. Но думаю, что погрешность увеличится.

HolyDel 09.07.2007 15:33

Re: Избежание погрешностей (AI)
 
не думаю что погрешность увеличится. она будет скакать туда сюда но примерно в етом диапазоне.

Fant 11.07.2007 11:41

Re: Избежание погрешностей (AI)
 
что-то у меня так не заладилось! Может есть другой способ? Например у меня есть массив, по которому движутся ии. Но дело в том, что когда он проверяет свободно ли впереди, то останавливается на полпути из-за округления..вообщем блин!. На первый взгляд казалось, что все так просто, а теперь почему-то проблемы

moka 11.07.2007 12:09

Re: Избежание погрешностей (AI)
 
Попробуй в корне пересмотреть алгоритм, и написать Заного новый, заместо того. Всё приходит с эксперементами.

Fant 11.07.2007 13:02

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Попробуй в корне пересмотреть алгоритм, и написать Заного новый, заместо того. Всё приходит с эксперементами.

я пересмотрел сложнейший алгоритм а=а+1 скорость =.1 двигаю пока а<=10 и все-равно неточно. Я уже думаю может это глюк блиц? Если скорость ии 1, то проблем, кстати нет. А если не глюк, то что же делать? Я бы хотел, что бы ии останавливался ровно перед кубиком а не за .0
2 до него

moka 11.07.2007 13:10

Re: Избежание погрешностей (AI)
 
Уже же говорили и в этой теме, и на форуме отдельно обсуждали: Это Глюк Блица! :)

Fant 11.07.2007 16:41

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Уже же говорили и в этой теме, и на форуме отдельно обсуждали: Это Глюк Блица! :)

клево! И что мне теперь делать? Как же мне теперь это дело организовать?

moka 11.07.2007 16:43

Re: Избежание погрешностей (AI)
 
Тебе уже подсказали в этой теме, смотри на 1 странице ;)
Округляй.

Fant 11.07.2007 21:38

Re: Избежание погрешностей (AI)
 
видел я эту подсказку...только что именно округлять? Я так понимаю, что нужно округлять позицию ии, но я же не могу переставить просто перетащить объект куда нужно...хорошо. Не могли бы вы это на примере показать? Я же не просто так пишу...у меня трудности.

Fant 13.07.2007 18:12

Re: Избежание погрешностей (AI)
 
Наконец-то я с ноута, а не с телефона! Я только не понял что именно нужно округлять, что бы добиться того, что мне нужно

moka 13.07.2007 19:39

Re: Избежание погрешностей (AI)
 
Получаешь координату объекта, округляешь и двигаешь в округлённую позицию.
Тока не всегда нада округлять.

Fant 14.07.2007 00:03

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Получаешь координату объекта, округляешь и двигаешь в округлённую позицию.
Тока не всегда нада округлять.

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

moka 14.07.2007 01:28

Re: Избежание погрешностей (AI)
 
PositionEntity Entity,int(EntityX(Entity)),int(EntityY(Entity)),i nt(EntityZ(Entity))

Fant 14.07.2007 11:48

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
PositionEntity Entity,int(EntityX(Entity)),int(EntityY(Entity)),i nt(EntityZ(Entity))

Это мне прописывать одним словом вместо всего!? Но ведь это жестко поставит объект куда нужно, а мне необъодимо плавное перемещение от точки а в точку Б а потом, если нужно поставить ИИ в точку с натуральным числом...

moka 15.07.2007 01:31

Re: Избежание погрешностей (AI)
 
Цитата:

Тока не всегда нада округлять.
А это уже при условии, когда нужно. Извени за грубость: Но тебе нужно больше эксперементов. Больше практики, лучше попробывать самому, чем вешаться на чужую шею. Извени, просто уже вопросы ну просто видно по ним, что ты просто не пробовал. Не бойся попробывать ;)

Fant 15.07.2007 12:09

Re: Избежание погрешностей (AI)
 
Вообщем я себе уже представляю как можно это все организовать, но возникла загвоздка! Как я узнаю (выполню проверку) что имеет место быть погрешность?
Вот тут мне привели пример:
If Int(Position_X)-Position_X<.001 then Position_X=Int(Position_X)
Я не совсем понял, как этим кодом можно проверить, есть ли погрешность? Или я чего-то тут недогоняю

moka 16.07.2007 13:15

Re: Избежание погрешностей (AI)
 
Цитата:

If Int(Position_X)-Position_X<.001 then Position_X=Int(Position_X)
Уесли разница от целой координаты и не округлённой координаты, меньше .001, то округлять координату.

Мысли лучше всего приходят во время кодинга, когда пробуешь, так и быстрее и лучше всего ;)

Fant 16.07.2007 15:45

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Уесли разница от целой координаты и не округлённой координаты, меньше .001, то округлять координату.

Мысли лучше всего приходят во время кодинга, когда пробуешь, так и быстрее и лучше всего ;)

так это и есть проверка! Тогда спрошу, а мне когда это проверять!? У меня есть подозрение, что проверять это нужно по таймеру)! Fant прав?

moka 16.07.2007 15:48

Re: Избежание погрешностей (AI)
 
Fant неправ :)
Проверяй это всегда, но шаг поставь может поменьше, например не .001 а .05, ну это от скорости перемещения челов зависит, чтобы шаг нубыл больше чем четверть средней скорости перемещения (эо если сокрость изменяется сглажено), а если не сглажено тогда шаг делай половину макс скорости.

Fant 16.07.2007 22:51

Re: Избежание погрешностей (AI)
 
Цитата:

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

Что такое шаг?

Fant 16.07.2007 23:24

Re: Избежание погрешностей (AI)
 
Провел опыт:

If KeyDown(31) Then
If Int(EntityZ(en1\obj))-EntityZ(en1\obj)<.001 Then PositionEntity en1\obj,EntityX(en1\obj),5,Int(EntityZ(en1\obj))
End If
MoveEntity en1\obj,0,0,.1

Стабильно убирает сотые части, но так же стабильно держит .1 То есть делает погрешность в одну десятую

moka 17.07.2007 11:49

Re: Избежание погрешностей (AI)
 
Шаг, это число которое щас .001.
А погрешность т.к. ты двигаешь после стабилизации.
Сделай так:
MoveEntity en1\obj,0,0,.1
If KeyDown(31) Then
If Int(EntityZ(en1\obj))-EntityZ(en1\obj)<.001 Then PositionEntity en1\obj,EntityX(en1\obj),5,Int(EntityZ(en1\obj))
End If

Fant 18.07.2007 01:00

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Шаг, это число которое щас .001.
А погрешность т.к. ты двигаешь после стабилизации.
Сделай так:
MoveEntity en1\obj,0,0,.1
If KeyDown(31) Then
If Int(EntityZ(en1\obj))-EntityZ(en1\obj)<.001 Then PositionEntity en1\obj,EntityX(en1\obj),5,Int(EntityZ(en1\obj))
End If

тьфу блин! Это и все, что мне все это время нужно было!

Большое спасибо!

П.с.
у меня щас не числа .001, поэтому мне не ясно, что же все-таки это за загадочный шаг!

Diplomat 18.07.2007 01:15

Re: Избежание погрешностей (AI)
 
Шаг- это значение, на которое изменяется переменная-счётчик каждый проход цикла.
Пример:

Код:

REPEAT
 K=K+N
FOREVER

,где
REPEAT...FOREVER - схематический пример цикла;
К- счётчик;
N- шаг.

P.S. В который раз тебя прошу: RTFM!

Fant 18.07.2007 22:21

Re: Избежание погрешностей (AI)
 
Шаг это оказывается step! Я бы сразу вспомнил!

Спасибо за разъяснение!

p.s. в первый!

Diplomat 19.07.2007 00:39

Re: Избежание погрешностей (AI)
 
Цитата:

p.s. в первый!
Ага, только я- в третий. А сколько раз другие- "и не сосчитать!"(с)
Твою целеустремленность, да в правильное русло... Пора, пора купить учебник.
;)

Fant 19.07.2007 01:20

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от Diplomat

Ага, только я- в третий. А сколько раз другие- "и не сосчитать!"(с)
Твою целеустремленность, да в правильное русло... Пора, пора купить учебник.
;)

Ладно! Ты главное не сердись на меня) но скажу правду! Честно...мне никто не говорил читать мануал!
А тут я просто недогодался сделать positionentity + int ... я просто недостаточно хитрый что бы так обойти ту поблему был!

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

moka 19.07.2007 12:38

Re: Избежание погрешностей (AI)
 
Fant
Практика, практика, и ещё раз практика. И тогда будет Много Опыта, и уже такие простенькие прикольчики, будешь щёлкать как орешки.

Fant 19.07.2007 13:50

Re: Избежание погрешностей (AI)
 
Цитата:

Сообщение от MoKa
Fant
Практика, практика, и ещё раз практика. И тогда будет Много Опыта, и уже такие простенькие прикольчики, будешь щёлкать как орешки.

Я с тобой на все сто согласен!
Я сейчас на форуме задал вопрос, но как я могу практиковаться, ели даже не знаю с чего начать! Вот посди сам! Я даже знаю какой пример взять за основу, не говоря о том, что бы самому что-то писать!

moka 19.07.2007 13:59

Re: Избежание погрешностей (AI)
 
Fant
Не хватайся за вуршины гор, возьмись за подножъе, и постепененько забирайся.
Начни с меншего. Неважно можешь или нет. Главное пробовать, и всё. А вбивать себе в голову что "не можешь", не нужно, нужно просто сесть, и со временем мысли к тебе придут. ;)

Diplomat 19.07.2007 14:32

Re: Избежание погрешностей (AI)
 
Цитата:

я просто недостаточно хитрый что бы так обойти ту поблему был!
Это не отсутствие хитрости. Это отсутствие опыта и виденья алгоритма будущей программы. А откуда этому виденью взяться- нет никакой теоретической основы!

Цитата:

...как я могу практиковаться, ели даже не знаю с чего начать! Вот посди сам! Я даже знаю какой пример взять за основу, не говоря о том, что бы самому что-то писать!
Ты решил изобрести велосипед? Существует "учебно-тренировочный" КуВасик, существует к нему куча преотличных мануалов для нубиков ака "самоучитель для начинающих". В таких книгах постепенно и в давно выработанном порядке, доходчиво раскрываются на основе КуВасика принципы программирования вообще- алгоритмика, заодно частично формируется и "хороший тон"- стиль программирования. Для проверки понимания учащимся материала даются практические задачки- далеко не самые скучные. Некоторые такие книги вообще крайне интересны.
"Подружись со мной, компьютер" Б.Я.Мартузана 1992 года издания описывал ныне покойные Бейсики МСХ и РСХ, и не вполне стыковался с КуБейсиком, уж точно не дружил с ВижуалВасиком. Но это никак не мешало ему во времена моего бурного отрочества, когда о Блице никто и слыхом не слыхивал, быть моей настольной книгой: забавно изложенные там принципы- вечны.
На основе хотя бы общей теоретической базы можно уже пытаться осваивать другие среды разработки, например Блиц, использующие диалекты Бейсика и пытаться их применять для достижения практических результатов. Цена вопроса- год упорных занятий. А ты сколько паришься уже без видимых со стороны сдвигов?
Попытки установить среду разработки и начать делать "КрутуюГаму" (или вообще что угодно) не имея понятия о программировании- это дохлый номер. Крайне неэффективный способ получения опыта: ибо опыт при таком подходе приходит медленно, бессистемно и в виде, сильно искаженном субьективностью восприятия реальности. Вариант рулит для гениев и богов, но никак не для людей. В итоге- для чего-то мало-мальски серьезного придётся долго и нудно переучиваться...
...Мне, признаться, давно надоело это повторять. Причём, что характерно, повторяю это не только я...

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

P.S.нах: Учебники, впрочем, тоже нужно выбирать с умом. И желательно на бумаге. А то в Сети валяется в основном редкостный хлам.


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


Часовой пояс GMT +4, время: 19:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot