DiVision projekti
Viss, kas nebija spēles. Mūsu skolā katru ziemu notika programmēšanas konkurss, un dažus gadus tas bija mans galvenais iemesls rakstīt kodu. 1998. gada janvārī es atnesu četras programmas un saņēmu balvu par oriģinālāko; 1999. gada konkursam man bija desmit; 2001. gadā ieguvu pirmo vietu trijās kategorijās un skatītāju simpātiju balvu. Visvairāk es taisīju to, kas bija vajadzīgs man pašam: failu pārvaldnieku, čaulu, vārdu trenažieri, metronomu.
Programmas
Synthesizer 1998
Pirmajam konkursam: tastatūra pārvēršas par klavierēm no 65 līdz 3 120 Hz PC skaļrunī, ar trim spēles stiliem, ierakstīšanu ar nošu ilgumiem, atskaņošanu, nošu grafiku un saglabāšanu failā.
File Commander 1997–1999
Tas sākās 1997. gada decembrī kā AndreyCommander — izvēlne ar kalkulatoru, sirēnu un klavierēm — un izauga par manu paša divpaneļu Norton Commander, līdz 1999. gada novembrim versija 1.80: savs arhīva formāts FCA (atkārtojumu saspiešana plus parole), veselu direktoriju koku kopēšana un pārvietošana, failu atvēršana pēc paplašinājuma, rezidents pulkstenis un trīs dzēšanas veidi — izdzēst, pārvietot uz atkritni vai „iznīcināt”, kad fails vispirms tiek pārrakstīts.
Buttons’99 1998–1999
Mans paša Windows: ap 2 200 Pascal rindu ar uzdevumjoslu, logiem no pogām, kas piesaistītas procedūrām, zinātnisko kalkulatoru ar četriem atmiņas reģistriem un grafiku zīmētāju, Paint, krāsu iestatījumiem, kas saglabājas failā, un sintezatoru ar ekrāna tastatūru, kas ieraksta melodiju ar nošu ilgumiem. Video tas atskaņo melodiju, ko saglabāju 1999. gada martā.
WRD 1999
Vārdu trenažieris, ko pats lietoju: vārdnīca ar jebkuru kolonnu skaitu, šeit vācu neregulārie darbības vārdi (krieviski, infinitīvs, Präteritum, Perfekt), kārtošana pēc kolonnas, meklēšana un tests, kas parāda vienu kolonnu un prasa ierakstīt pārējās. Video — divas testa kārtas, otrajā kļūda ielaista apzināti.
Help Explorer 2000
Savu spēļu palīdzības ekrāniem uzrakstīju nelielu pārlūku un tam marķēšanas valodu HHL — „vienkāršotu HTML”: [Birka] apzīmē virsrakstu, <Birka> vai <Birka:fails> ir saite, {attēls} parāda attēlu, * pārslēdz krāsu, un saite var arī palaist programmu un atgriezties lapā, kad tā beidz darbu. Tajā uzrakstīta Space War rokasgrāmata. Tajos pašos mēnešos izveidoju savu spraitu formātu, tas redzams zemāk: spraits glabājas kā necaurspīdīgu pikseļu posmi un tiek zīmēts ar vienkāršu atmiņas kopēšanu bez caurspīdīguma pārbaudēm — uz tā balstās Space War 2K un Doom RF ātrums.
Potok 2001
Divas nedēļas pirms Bred ģeneratora — cits veids, kā rakstīt muļķības: pēc noteikumiem. Katrs vārdu saraksts ir teksta fails, un rinda var atsaukties uz citiem sarakstiem: %teoria — uz teorijām, %comp — uz datoriem, %stupid — uz frāzēm kā „vai kāds saprata, ko es uzrakstīju”. Programma rekursīvi izvērš atsauces un salabo lielos burtus, un sanāk pseidozinātniska krievu proza par Ņūtona likumiem un IBM saderīgiem datoriem. Mūsdienu terminos — ģenerators pēc bezkonteksta gramatikas. Zemāk — divi noteikumi un tas, kas no tiem iznāca (krieviski, ar 2001. gada oriģinālajām drukas kļūdām).
Правила (FRAZA.TXT): %dla мы должны изучить %teoria. %first %comp, так как %teoria - %bad. Результат: Для поднятия реакции мы должны изучить эффект сверхпроводимости. Кто-нибудь понял, что я написал:) из ранее известного свойства мы видим: теория отношений в пространстве оказался верным :) Теорема Пифагора, понимаешь ли, доказал всю свою силу потому что она нулевой...
Bred generator 2001
Muļķību ģenerators, uzrakstīts 2001. gada jūnijā: tas lasa grāmatas un raksta jaunu tekstu pa vienam burtam. Katrs nākamais burts tiek ņemts no tādas vietas grāmatās, kur iepriekšējie seši burti sakrīt, un ik pēc dažiem burtiem tas pārlec uz nejaušu vietu. Pabarots ar „Annu Kareņinu” un „Karu un mieru”, tas raksta tekstu, kas skan kā Tolstojs un neko nenozīmē. Mūsdienu terminos — 6. kārtas Markova ķēde burtu līmenī, tāls valodu modeļu sencis. Zemāk — paraugs tam, ko tas izdeva.
Дай вам Бог, которые не могу пить, - грустно и старалась угадать стала на лестницу. - Пускай посмотрит, т. е. один и о чем же порядком. Няня-Савишна, почему он сделала партию крокета. Стой, канальи! - Да, вот она, - сказал Иогеля, боком платье, но не верить мне денег нет. - решил князь Андрей Болконская приехал сделать.
Ticker 2001–2002
Metronoms Delphi vidē manām ģitāras nodarbībām: izvēlies skaņu, iestati tempu milisekundēs vai sitienos sekundē, minūtē vai stundā, un visi četri lauki paliek savstarpēji saskaņoti.
F(x) 2002
Funkciju grafiku zīmētājs Delphi vidē, kas saprot formulas ar sin, ln, log, veselo un daļveida daļu — un atvasinājumus: a' tiek atvasināts simboliski, pārrakstot formulas virkni pēc reizinājuma un dalījuma atvasināšanas likumiem. Uzbīdi peli, lai redzētu f(x) un f'(x), velc, lai pārvietotu, ritenītis — tālummaiņa.
Tā laika pirmkods
procedure convert;
var i,j,k:longint;
f:word;
r:rec;
b:^tar;
begin
j:=0;
spr.maxa:=0;
new(b);
spr.maxsp:=0; f:=0;
for j:=0 to my-1 do
begin
i:=0;
while i<mx do
begin
if bmp^[j*mx+i]<>black then
begin
k:=i;
while (bmp^[j*mx+k]<>black)and(k<my) do inc(k);
r[spr.maxsp].x:=i;
r[spr.maxsp].y:=my-j-1;
r[spr.maxsp].l:=k-i;
r[spr.maxsp].w:=f;
move(bmp^[j*mx+i],b^[f],r[spr.maxsp].l);
inc(f,r[spr.maxsp].l);
inc(spr.maxsp);
i:=k;
end;
inc(i);
end;
end;
spr.maxa:=f;
getmem(spr.a,spr.maxa);
move(b^,spr.a^,spr.maxa);
getmem(spr.sp,5*spr.maxsp);
move(r,spr.sp^,5*spr.maxsp);
dispose(b);
end;
procedure putsprite(dx,dy:integer);
{Эффективна, если много прзрачных точек}
var i:integer;
r:tr;
begin
for i:=0 to spr.maxsp-1 do
begin
r:=spr.sp^[i];
move(spr.a^[r.w],scr^[(dx+r.x)+(dy+r.y)*320],r.l);
end;
end; 2000. gada jūlijs. convert sagriež katru BMP rindu nemelnu pikseļu posmos un saglabā x, y, garumu un nobīdi vienā blīvi pakotā masīvā; putsprite pēc tam ir tikai viens move katram posmam. Komentārs to arī saka: „efektīvi, ja ir daudz caurspīdīgu pikseļu”.