IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> «Игровая программа <15> » с модулями, Не могу исправить ошибки:(
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


логическая игра «Пятнашки».
Программа случайным образом располагает на игровом поле фишки с пятнадцатью цифрами и одну пустую клеточку.
Играющий, используя резервную клеточку, с помощью функциональных клавиш перемещает фишки с цифрами таким образом, чтобы расположить их по порядку.
Программа фиксирует количество перемещений. Лучшим считается тот игрок, который упорядочит все фишки за наименьшее число ходов.

У меня проблемка.. прога не работает не могу понять почему(( помогите кто может люди!((( Оносится ли это программа написанна по принципу ОБъектно Ориентированного Программирования? . Программа написана вроде модульным программированием?
Если вам не трудно не могли обьяснить как она работает(((

Код основной проги:


program petnash;
uses
crt,graph,
petnash1;{Модуль,содержащий основные подпрограммы}
Var
grDriver,grMode,ErrCode,men:integer;
Begin(*petnash*)
{Инициализация графического режима}
grDriver:=Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode <> grOk
then
begin
Writeln('Graphics error:',GraphErrorMsg(ErrCode));
Writeln('Press - <ENTER>');
Readln;
Halt;
end;
{Установка текущих параметров цвета и линии}
setcolor( 6);
setlinestyle(0,0,1);
recod; {Считывание данных из файла с лучшими результатами}
repeat
menu(men);{Процедура,обеспечивающая работу с меню}
case men of
0:game; {ИГРА}
1:best; {ЛУЧШИЕ ИГРОКИ}
2:help; {ОБ ИГРЕ}
end;(*case*)
until men=3; {ВЫХОД ИЗ ИГРЫ}
closegraph {Выход из графического режима в текстовой}
END.(*petnash*)



Код модуля:


Unit petnash1;
(**************)Interface(*****************)
uses
crt,graph;
const
{Коды клавиш,используемых в программе }
Up=#72;
Down=#80;
Left=#75;
Right=#77;
Space=#32;
Esc=#27;
Enter=#13;
type
strok=string[10];
var
stroka:array[1..12] of strok;
f02,f03:text;
st02:string[10];
stl2:string[20];
a,b2,pl,kl,o:char;
st,st1:string[5];
step:string[5];
u,vict:boolean;
mas:array [1..16] of integer;
a02,b3,c02,b,b1,d,e,e02,i,i1,j,n,r,steps,x,
x1,y,y1,yme:integer;
grDriver,grMode:integer;
m,m1,m2,m3:integer;
p,p1,p2,p3:pointer;

procedure recod;
procedure buk(a,b,c:integer;s:char);
procedure victory;
procedure nomer(xp,yp,ip:integer);
procedure kv(xk,yk:integer);
procedure tabl(xv,yv:integer;klv:char;var xv1,yv1:integer);
procedure menu(var ym:integer);
procedure game;
procedure best;
procedure help;

(*************)Implementation(****************)

(*Процедура считывания таблицы рекордов*)
(*из файла 'rezult.dat'*)
procedure recod;
begin(*recod*)
assign(f02,'rezult.dat');
reset(f02);{Открытие файла с результатами}
for i:=1 to 10 do {Чтение из файла}
readln(f02,stroka[i]);
end;(*recod*)
(*Процедура движения заданной буквы по экрану *)
procedure buk(a,b,c:integer;s:char);
begin (*buk*)
for I:=a downto b do
begin
{Буква рисуется темным цветом}
setcolor(1);
settextstyle(1,0,10);{Параметры текста}
outtextxy(c,i,s);
{Буква рисуется таким же цветом,
что и фон экрана}
setcolor(14);
settextstyle(1,0,10);
outtextxy(c,i,s);
end;
{Рисование буквы по ее конечным координатам}
setcolor(1);
settextstyle(1,0,10);
outtextxy(c,b,s);
end;(*buk*)

(*Процедура победы*)
procedure victory;
begin (*victory*)
{Создание на желтом фоне надписи Victoty}
setbkcolor(14);
buk(480,220,100,'V');
buk(480,220,170,'i');
buk(480,220,205,'c');
buk(480,220,255,'t');
buk(480,220,300,'o');
buk(480,220,359,'r');
buk(480,220,410,'y');
{Очерчивние надписи 2 линиями}
setcolor(4);
setlinestyle(0,0,3);
for i:=115 to 405 do
begin
delay(3);
line(i,355,i+20,355);
line(i,240,i,240);
end;
for i:=455 to 470 do
begin
delay(3);
line(i,355,i+5,355)
end
end;(*victory*)

(* Процедура рисования номера пятнашки*)
procedure nomer(xp,yp,ip:integer);
begin (*nomer*)
{Преобразование числа mas[ip] в
посл-ть символов}
str(mas[ip]:1,st);
{Вывод посл-ти символов st}
outtextxy(175+xp*86,120+yp*86,st);
end;(*nomer*)

(*Процедура рисования парал-да*)
procedure kv(xk,yk:integer);
begin(*kv*)
bar3d(160+xk*86,100+yk*86,235+xk*86,
175+yk*86,7,true);
end;(*kv*)

(*Процедура смены активной таблички*)
procedure tabl(xv,yv:integer;klv:char;var
xv1,yv1:integer);
begin(*tabl*)
{Фишка(табличка),которая была активизирована
рисуется таким же цветом, что и остальные
фишки}
setcolor(13);
kv(xv,yv);
{Надпись номера фишки}
if mas[4*yv+xv+1]<>0 then
nomer(xv,yv,4*yv+xv+1);
{Нажатие пользователем одной из клафиш case
управления}
klv of -----> ‘:=’ excepted в чем ошибка?
Down :if yv<3 then yv:=yv+1;
Up :if yv>0 then yv:=yv-1;
Left :if xv>0 then xv:=xv-1;
Right :if xv<3 then xv:=xv+1;
end;(*case*)
xv1:=xv;
yv1:=yv;
{Фишка, которая становится активизированной,
рисуется темным цветом}
setcolor(1);
kv(x,y);
{Надпись номера активизированной фишки}
if mas[4*yv+xv+1]<>0
then nomer(x,y,4*y+x+1);
end;(*tabl*)

(*Процедура меню*)
procedure menu(var ym:integer);
var
om:char;
begin(*menu*)
ym:=0;
cleardevice; {Очистка графического экрана}
{Рисование тени пунктов меню,прямоугольники
серого цвета}
setcolor(8);
setfillstyle(1,8);
bar(45,152,615,202);
bar(45,222,615,272);
bar(45,292,615,342);
bar(45,362,615,412);
fillellipse(304,62,210,35);
{Рисование пунктов меню,прямоугольники синего
цвета}
setcolor(1);
setfillstyle(1,1);
bar(35,145,605,195);
bar(35,215,605,265);
bar(35,285,605,335);
bar(35,355,605,405);
{Рисование эллипса под надписью ***MENU***}
fillellipse(298,57,210,35);
{Надписи на экране об авторе прграммы}
setcolor(12);
settextstyle(1,0,1);
outtextxy(20,430,'Copyright Software 1998');
outtextxy(20,450,'Written by Volkov
Konstantin');
{Надпись ***MENU*** печатается серым цветом,
тем самым создается эффект тени}
setcolor(8);
settextstyle(1,0,6);
outtextxy(142,33,'*** MENU ***');
{Печать надписи ***MENU*** синим цветом}
setcolor(10);
outtextxy(140,30,'*** MENU ***');
setbkcolor(9); {Цвет фона экрана}
repeat
setfillstyle(1,5); {Орнамент и цвет
заполнения полоски-указателя}
{Полоска,передвигающаяся по пунктам меню}
bar(35,145+70*ym,605,195+70*ym);
{Печать пунктов меню}
outtextxy(50,135,'Game');
outtextxy(50,205,'Best players');
outtextxy(50,275,'About this game');
outtextxy(50,345,'Exit');
om:=readkey;
{При переходе указателя на другой пункт,
возврашение пункту меню прежнего цвета}
setfillstyle(1,1);
bar(35,145+70*ym,605,195+70*ym);
{Изменение координат указателя, в
зависимости от нажатия пользователем
однойиз клавиш управления}
if om=up then ym:=ym-1;
if om=down then ym:=ym+1;
if ym=-1 then ym:=3;
if ym=4 then ym:=0;
setcolor(10); {Цвет пунктов меню}
{Создание звукового эффекта при перемещении
по пунктам меню}
sound(300);
for i:=-maxint to maxint do
j:=j;
nosound;
until om=Enter ;
end;(*menu*)

(* Процедура начала игры *)
procedure game;
begin(*game*)
cleardevice; {Очистка экрана}
steps:=0;{Число шагов 0}
{Рисование области, на фоне которой будет
выводится кол-во шагов}
setfillstyle(1,3);
bar(10,90,130,155);
setfillstyle(1,7);
bar(30,120,80,145);
{Обведение области темными линиями}
setlinestyle(0,0,1);
setcolor(1);
rectangle(10,90,130,155);
rectangle(29,119,81,146);
setlinestyle(0,0,1);
{Печать надписи и кол-ва шагов,
пока число шагов просто 0}
setcolor(4);
settextstyle(0,0,1);
outtextxy(20,100,'Number steps ');
outtextxy(40,130,'0');
setcolor(13);
vict:=false; {Победа не инициализирована}

setfillstyle(1,14); {Параметры заполнения
кубика}
bar3d(152,86,509,445,10,true);{Рисование
коробки}
{Создание в верхней части экрана полоски и
надписи на ней}
bar(0,0,639,50);
settextstyle(7,0,5);
outtextxy(125,2,'* 15 *');
{Создание в нижней части экрана полоски и
надписи на ней}
bar(0,450,639,480);
settextstyle(7,0,3);
outtextxy(80,450,'Press Esc for quit to
main menu');
{Задание прежних параметров}
settextstyle(7,0,5);
setfillstyle(1,11);

{Включение генератора случайных чисел}
randomize;
{Заполнение массива случайными числами
от 1 до 15}
mas[16]:=0;
mas[1]:=random(14)+1;
n:=2;
repeat
u:=true;
while u do
begin{Раскладывание пятнашек}
j:=random(15)+1;
u:=false;
for i:=1 to n-1 do
{Проверка элементов массива на
равенство друг другу}
if mas[i]=j then u:=true;
end;{Раскладывание пятнашек}
mas[n]:=j;
n:=n+1;
until n=16;{Условие выхода заполнение всего
массива}

{Рисование фишек игрового поля (табличек)}
for j:=0 to 3 do
for i:=0 to 3 do
kv(i,j);

{Рисование фона на котором расположена
коробка}
setbkcolor(7);

{Разкраска коробки}
setfillstyle(1,8);
floodfill(157,90,13);
setfillstyle(1,3);
floodfill(168,82,13);
floodfill(513,90,13);
setfillstyle(1,11);

{Нумерация табличек}
n:=1;
for j:=0 to 3 do
for i:=0 to 3 do
if (i<>3) or (j<>3) then
begin
nomer(i,j,n);
n:=n+1;
end;

x1:=3;
y1:=3;
x:=3;
y:=3;
{Рисование таблички в нижнем правом
углу,пока не сделанно ни одного хода}
setcolor(1);
setfillstyle(1,11);
bar3d(418,358,493,433,7,true);

repeat
kl:=readkey;
tabl(x,y,kl,x,y); {Cмены активной
таблички}

{Проверка условия нажатия клавиши пробел}
if kl=Space then
begin(*if1*)
u:=(abs(x1-x)=1) and (abs(y1-y)=0) or
(abs(x-x1)=0) and (abs(y1-y)=1);

{Условие перестановки элементов
массива}
if u then
begin(*if2*)
{Элементы массива, которые меняются
местами}
i:=4*y+x+1;
i1:=4*y1+x1+1;
setcolor(11);
nomer(x,y,i);
setcolor(13);
nomer(x1,y1,i);
n:=mas[i1]; {Перестановка элементов
массива}
mas[i1]:=mas[i];
mas[i]:=n;
x1:=x;
y1:=y;
steps:=steps+1; {Увеличение числа
шагов на единицу}

{Вывод на экран числа шагов}
setfillstyle(1,7);
bar(30,120,80,145);{Рисование табл.}
setcolor(4);
str(steps,st1);
settextstyle(0,0,1);
outtextxy(40,130,st1);
setcolor(13);
settextstyle(7,0,5);
setfillstyle(1,11);
{Проверка следования чисел в массиве}
u:=true;
j:=0;
n:=0;
repeat
j:=j+1;
n:=n+1;
if (n<>mas[j]) and (n<>12)
then u:=false;
if (n=11) and (mas[12]=0)
then j:=j+1;
until mas[j]=15;
if u and ((mas[15]=15) or
(mas[16]=15))
then
begin(*if3*)
pl:=Esc;{Выход из цикла}
vict:=true;{Инициализация победы}
end;(*if3*)
end;(*if2*)
end;(*if1*)

{Игрок нажал клавишу Esc}
if kl=Esc
then
begin (*if*)
{Помещение странички в буфер
посредством разбиения
ее на 4 части}
m:=imagesize(0,0,320,240);
getmem(p,m);
getimage(0,0,320,240,p^);

m1:=imagesize(320,0,639,240);
getmem(p1,m1);
getimage(320,0,639,240,p1^);

m2:=imagesize(0,240,320,480);
getmem(p2,m2);
getimage(0,240,320,480,p2^);

m3:=imagesize(320,240,639,480);
getmem(p3,m3);
getimage(320,240,639,480,p3^);

{Вывод меню, после того как игрок
нажал Esc}
cleardevice;
setbkcolor(0);
b3:=0;
repeat
{Рисование двойной рамочки}
setcolor(1);
setlinestyle(0,0,1);
rectangle(243,183,417,257);
rectangle(248,188,412,252);
setfillstyle(1,14);{Орнамент и
цвет заполнения указателя}

{Указатель-выбор пункта}
bar(250,190+30*b3,410,220+30*b3);
setcolor(13);
settextstyle(8,0,1);
outtextxy(275,195,'Continue . .
.');
outtextxy(275,220,'Exit ');
b2:=readkey;
setfillstyle(1,0);
bar(250,190+30*b3,410,220+30*b3);
{Движение по пунктам меню}
if b2=up then b3:=0;
if b2=down then b3:=1;
if b3=0
then kl:='z'{Выбран пункт
Continue}
else kl:=Esc{Выбран пункт Exit}
until b2=Enter;
end; (*if*)
{Если выбран пункт Continue,то
страничка возвращается из буфера,а
затем буфер очищается}
if kl='z'
then
begin
cleardevice;
setbkcolor(7);

putimage(0,0,p^,normalput);
freemem(p,m);

putimage(320,0,p1^,normalput);
freemem(p1,m1);

putimage(0,240,p2^,normalput);
freemem(p2,m2);

putimage(320,240,p3^,normalput);
freemem(p3,m3);

settextstyle(7,0,5);
setfillstyle(1,11)
end
until (kl=Esc) or (pl=Esc) ;

{Демонстрация победы после завершения игры}
if vict then
begin(*vict*)
cleardevice;{Очистка экрана}
victory;{Процедура победы}
{Вывод на экран числа шагов,сделанных
пользователем, и поздравления}
setcolor(4);
settextstyle(7,0,5);
outtextxy(100,50,'You are win ! ! !');
str(steps,step);
outtextxy(100,100,'You made');
outtextxy(150,150,step);
outtextxy(250,150,'steps.');
repeat
until keypressed;
kl:=readkey;
i:=0;
{Сравнение результатов}
repeat
i:=i+1;
val(stroka[i*2],b,x);
until (b>steps) or (i=6);
{Если результат игрока превосходит один из
результатов в таблице,он заносится в
таблицу}
if i<6 then
begin(*Переформирование таблицы
рекордов*)
for j:=5 downto i do
begin(*Сдвиг рекордов*)
stroka[j*2+1]:=stroka[j*2-1];
stroka[j*2+2]:=stroka[j*2];
end;(*Сдвиг рекордов*)
{Преглашение игрока к вводу имени}
cleardevice;
setbkcolor(0);
outtextxy(10,130,'Please, enter your
name :');

{Создание рамочки}
setcolor(10);
rectangle(100,225,525,290);
rectangle(98,223,527,292);
{Ввод имени игрока}
kl:=readkey;
j:=1;
stroka[i*2-1]:='';
u:=not(kl=enter);
while u do
begin(*Чтение имени игрока*)
u:=(kl>' ') and (kl<'z') and (j<11);
if u
then
begin(*нц*)
stroka[i*2-1]:=stroka[i*2-1]+kl;
outtextxy(80+j*40,230,kl);{Печать
буквы на новой позиции}
j:=j+1;
end;(*кц*)
kl:=readkey;
u:=not(kl=Enter);
end;(*Чтение имени игрока*)

{Если игрок не ввел имя, то его имя
Noname}
if length(stroka[i*2-1])=0
then stroka[i*2-1]:='Noname';
stroka[i*2]:=step;
(*Запись рекорда в файл*)
rewrite(f02);
for i:=1 to 10 do
writeln(f02,stroka[i]);
close(f02);
end;(*Переф. табл. рекорд.*)
end;(*vict*)
end;(*game*)

(*Процедура вывода таблицы рекордов*)
procedure best;
begin(*best*)
cleardevice; {Очистка экрана}
{Рисование двойной рамочки}
setlinestyle(0,0,3);
setcolor(13);
rectangle(13,138,621,434);
rectangle(9,132,625,440);
setlinestyle(0,0,1);
{Задание параметров заполнения рамочки}
setfillstyle(1,14);
floodfill(24,140,13);
{Надпись лучшие игроки}
setcolor(10);
settextstyle(7,0,7);
outtextxy(30,45,'Best players are:');
{Печать таблицы результатов}
setcolor(13);
settextstyle(0,0,100);
for a02:=1 to 5 do
begin(*for a02*)
str(a02,stl2);{Преобразование числа в
посл-ть}
c02:=length(stroka[a02*2-1]);
stl2:=stl2+' '+stroka[a02*2-1];
for e02:=1 to 11-c02 do{Разделение имени
игрока и результата точками}
stl2:=stl2+'.';
for e02:=1 to 5-length(stroka[a02*2]) do
stl2:=stl2+'.';
stl2:=stl2+stroka[a02*2];
outtextxy(40,100+50*a02,stl2);
if a02<>0 then setcolor(9); {Выделение
лучшего игрока другим цветом}
end;(*for a02*)
repeat
until keypressed;
kl:=readkey;
setcolor(13);
end;(*best*)

(*Процедура вывода помощи*)
procedure help;
var
st3:string;
begin(*help*)
assign(f03,'pravila.dat');
reset(f03); {Открытие файла pravila.dat}
closegraph; {Выход из графического режима}
clrscr; {Очистка экрана}
kl:='n';
while not(eof(f03)) {Не конец файла} and
(kl<>Esc) {Не нажата кл. Esc} do
begin {нц1}
i:=1;
while (i<25) {Страница} and not(eof(f03)) do
begin {нц2}
i:=i+1;
readln(f03,st3); {Чтение из файла
элементов строки st3}
writeln('',st3); {Печать
содержимого строки st3 }
{Условие необходимое для того,
чтобы в конце не нажимать Enter 2 раза}
if eof(f03)
then kl:=enter
else kl:=#10
end;{кц2}
gotoxy(12,25);
repeat {Ожидание нажатия клавиши Enter
или Esc}
if keypressed then kl:=readkey;
until (kl=enter) or (kl=esc);
end;{кц1}
clrscr;
gotoxy(21,12);
writeln('Нажмите любую клавишу для выхода в
меню');
repeat
until keypressed;
kl:=readkey;
kl:='n';
{Инициализация графического режима и установка
прежних параметров}
InitGraph(grDriver, grMode,'');
setbkcolor(11);
setcolor(13);
setlinestyle(0,0,3);
end;(*help*)
END.


Сообщение отредактировано: dron4ik -


Прикрепленные файлы
Прикрепленный файл  PETNASH1.PAS ( 13.88 килобайт ) Кол-во скачиваний: 153
Прикрепленный файл  0.pas ( 803 байт ) Кол-во скачиваний: 153
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Разве никто не знает как ошибку исправить?sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






У тебя там нужное слово case закомментировано. Перенеси его
{Надпись номера фишки}
if mas[4*yv+xv+1]<>0 then
nomer(xv,yv,4*yv+xv+1);
{Нажатие пользователем одной из клафиш
управления}
case klv of { <--- вот сюда }
Дальше не проверял, может и еще какая-нибудь ошибка есть.

Цитата
программа написанна по принципу ОБъектно Ориентированного Программирования?
Нет, ООП тут и не пахнет. Это процедурное программирование, не больше.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Volvo - спасибо, работает все красиво.) А можно ли эту программу сделать Объектно Ориентированной?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Можно всё. Нужно правильно сконструировать объекты игрового мира. Основная часть процедур без особого труда переносится как методы сиих объектов.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Цитата
Нужно правильно сконструировать объекты игрового мира. Основная часть процедур без особого труда переносится как методы сиих объектов.



Вы не могли бы мне помочь, я незнаю как правильно сконструировать обьекты игрового мира(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


dron4ik
Увы, ООП - не моя стезя. Я напишу, но временные затраты не сопоставимы. sad.gif
Если только Volvo сможет помочь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
спасибо, работает все красиво.)
Не так уж все красиво, как хотелось бы. Кто ж привязывает программу к "магическим числам", а не к разрешению экрана в текущем граф. режиме, например. А если я запущу это под 800*600, что будет? Некрасиво получится, цифры будут вылезать из фишек, и оставлять "артефакты" на экране.

Диагноз - программа остается "как есть", ничего не трогается. Как только начнешь исправлять - потянутся глюки.

Цитата
Если только Volvo сможет помочь
no1.gif В ближайшее время - вряд ли, на меня можешь не рассчитывать, у меня аврал. Подсказать идею решения - могу, но дальше - времени совсем нет.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(dron4ik @ 12.05.2009 16:21) *
Вы не могли бы мне помочь
А что значит "помочь"? Сделать это за тебя? Передалать программу - это фактически написать ее заново. Написание программы в ООП начинается с проектирования структуры объектов. Ты понимаешь? Иногда, если неверно угадал в начале, приходится переделывать все заново. А ты хочешь, чтоб тебе кто-то чужую процедурную прогу чуть не в тыщу строк кто-то переделал в ООП?? blink.gif Ну, флаг тебе в руки..

Когда же лентяи поймут, что гораздо проще выучить и сделать самому, чем упрашивать других сделать за них??


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Лучше подскажите про телефонный справочник, он находится в др теме
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.10.2020 6:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name