TheDeadSkin #1341 7 ноября 2013 (изменено) относись к стринггриду как к матрице, допустим, 10х1000 элементов.первая буква у тебя будет в 1:11 столбцах, и в 1:9 (допустим) строках.вторая в 1:11 столбцах и в 11:19 строкахс каждой буквой смещаешь этак на 2 ячейки.буквы разной высоты это говно, потому что задача тривиальна, а ебли это всё-таки немного добавит визаульно они-то могут и не быть одинаковыми, но матрицы с буквами должны быть идентичны по высоте, т.е. длинне Y Изменено 7 ноября 2013 пользователем TheDeadSkin Поделиться сообщением Ссылка на сообщение
Tinplz #1342 7 ноября 2013 относись к стринггриду как к матрице, допустим, 10х1000 элементов.первая буква у тебя будет в 1:11 столбцах, и в 1:9 (допустим) строках.вторая в 1:11 столбцах и в 11:19 строкахс каждой буквой смещаешь этак на 2 ячейки.буквы разной высоты это говно, потому что задача тривиальна, а ебли это всё-таки немного добавит визаульно они-то могут и не быть одинаковыми, но матрицы с буквами должны быть идентичны по высоте, т.е. длинне Yперепутал строки и столбцы я. вечная поебень, когда пытаешься объяснять, а не писать код Поделиться сообщением Ссылка на сообщение
ESSERO #1343 7 ноября 2013 (изменено) TheDeadSkin, спасибо, но я думаю пробовать решать задачу твоим способом я даже не буду пытаться, ибо я нуб.Tinplz, это я понял, но у меня самая главная проблема с мат.частью, я просто не понимаю как сделать так, что бы единичка была в нужном мне месте. Вот инфа, сможете мне объянсить кусок кода? procedure TForm1.BN(x, y: integer);beginfor i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i=2)or (j=2) then stringgrid1.cells[x+i,y+j]:='1';Nx:=Nx+4; в этой процеду буква H1 11 111111 11 1 Изменено 7 ноября 2013 пользователем Essero Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1344 7 ноября 2013 перепутал строки и столбцы я. вечная поебень, когда пытаешься объяснять, а не писать кодда не в этом дело, судя по твоему описанию ты выделяешь в сетке 10х1000 под высоту буквы не всегда 10, зачем? Вот инфа, сможете мне объянсить кусок кода: procedure TForm1.BN(x, y: integer);beginfor i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i=2)or (j=2) then stringgrid1.cells[x+i,y+j]:='1';Nx:=Nx+4;а что вообще должен делать этот метод?а то я нихуя не понимаю его смысл, а тем более отдельно от контекста Поделиться сообщением Ссылка на сообщение
Tinplz #1345 7 ноября 2013 не думаю что оно напишет тебе эту букву. метод говорит о другом. перепутал строки и столбцы я. вечная поебень, когда пытаешься объяснять, а не писать кодда не в этом дело, судя по твоему описанию ты выделяешь в сетке 10х1000 под высоту буквы не всегда 10, зачем?Всегда. Говорю же, перепутал "первая буква у тебя будет в 1:11 столбцах строках,"+ они действительно могут быть разной высоты. Поделиться сообщением Ссылка на сообщение
ESSERO #1346 7 ноября 2013 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) stringgrid1: TStringGrid; Button1: TButton; Button2: TButton; Edit1: TEdit; procedure Button2Click(Sender: TObject); procedure BS(x, y: integer); procedure BU(x, y: integer); procedure BY(x, y: integer); procedure BN(x, y: integer); procedure BD(x, y: integer); procedure BK(x, y: integer); procedure BO(x, y: integer); procedure BV(x, y: integer); procedure BR(x, y: integer); procedure BM(x, y: integer); procedure BA(x, y: integer); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Nx, Ny, i, j: integer; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.BS(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (j=0)or (j=3) then stringgrid1.cells[x+i,y+j]:='1'; Nx:=Nx+4; end; procedure TForm1.BU(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=2)or (j=1)or (j=3) then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x,y]:='1'; Nx:=Nx+4; end; procedure TForm1.BY(x, y: integer); begin for i:=0 to 4 do for j:=0 to 3 do if (i=0)or (i=2)or (i=4) then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x+1,y+1]:='1'; stringgrid1.cells[x+3,y]:='1'; stringgrid1.cells[x+3,y+3]:='1'; Nx:=Nx+6; end; procedure TForm1.BN(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i=2)or (j=2) then stringgrid1.cells[x+i,y+j]:='1'; Nx:=Nx+4; end; procedure TForm1.BD(x, y: integer); begin for i:=0 to 3 do for j:=0 to 3 do if (i=3)or (j=3)or (i+j=2) then stringgrid1.cells[x+i,y+j]:='1'; Nx:=Nx+5; end; procedure TForm1.BK(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i+j=2) then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x+1,y+2]:='1'; stringgrid1.cells[x+2,y+3]:='1'; Nx:=Nx+4; end; procedure TForm1.BO(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i=2)or (j=3)or(j=0) then stringgrid1.cells[x+i,y+j]:='1'; Nx:=Nx+4; end; procedure TForm1.BV(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (j=1)or (j=3)then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x+1,y]:='1'; stringgrid1.cells[x+2,y+2]:='1'; Nx:=Nx+4; end; procedure TForm1.BR(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (j=0)or (j=2)then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x+2,y+1]:='1'; Nx:=Nx+4; end; procedure TForm1.BM(x, y: integer); begin for i:=0 to 4 do for j:=0 to 3 do if (i=0)or (i=4)or (j=0)or(i=2)then stringgrid1.cells[x+i,y+j]:='1'; Nx:=Nx+6; end; procedure TForm1.BA(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=2)or (j=2)or (j=0)or(i=0)then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x,y]:=''; Nx:=Nx+4; end; procedure TForm1.Button1Click(Sender: TObject); begin bs(nx,ny); bu(nx,ny); by(nx,ny); bn(nx,ny); bd(nx,ny); bu(nx,ny); bk(nx,ny); bo(nx,ny); bv(nx,ny); nx:=1; ny:=6; br(nx,ny); bo(nx,ny); bm(nx,ny); ba(nx,ny); bn(nx,ny); end; procedure TForm1.FormCreate(Sender: TObject); begin nx:=1; ny:=1; end; procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin StringGrid1.Canvas.Brush.Color:=clblack; if stringgrid1.Cells[acol,arow]='1' then StringGrid1.Canvas.FillRect(Rect); end; end. вот полностью рабочий код, не мой у меня соответственно другие буквывсё, что я не понимаю, как получаются буквы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1347 7 ноября 2013 отрисовывать каждую букву отдельным методом, ну это ж такая хуйня блядь и я бы не сказал что это хоть чем-то проще чем рисовать букву в одном методе по точно заданому алгоритму, просто получая на вход матрицу с буквой Поделиться сообщением Ссылка на сообщение
Tinplz #1348 7 ноября 2013 Ты сядь с ручкой и тетрадкой в клеточку, представь что ты находишься в какой-то клетке, и по алгоритму отмечай те клетки, в которых он ставит единицы. сразу поймешь. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1349 7 ноября 2013 опять ебучий код с десятком одно/дву-буквенными переменными, да ещё и на дельфи Поделиться сообщением Ссылка на сообщение
Гость rocker25 #1350 7 ноября 2013 делаем внешний цыкл а1-а5 и внутренний цикл b1-b5далее если по внешнему циклу мы заполняем значения a1,a2,a4,a5 то значения b2 пропускаетсясоответственно если дело качается значения a3 то заполняется по стандарту b1,b2,b3 процесс a1 b1 b3a2 b1 b3a3 b1 b2 b3a4 b1 b3a5 b1 b3 где "а" мнимый внешний счетчик, а b внутренний, который передает значение результатb1 b3b1 b3b1 b2 b3b1 b3b1 b3 Поделиться сообщением Ссылка на сообщение
ESSERO #1351 7 ноября 2013 отрисовывать каждую букву отдельным методом, ну это ж такая хуйня блядь и я бы не сказал что это хоть чем-то проще чем рисовать букву в одном методе по точно заданому алгоритму, просто получая на вход матрицу с буквойтак у меня есть шаблон хотя бы)сам я не напишу) Просто не понимаю, как например из procedure TForm1.BK(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i+j=2) then stringgrid1.cells[x+i,y+j]:='1'; stringgrid1.cells[x+1,y+2]:='1'; stringgrid1.cells[x+2,y+3]:='1'; Nx:=Nx+4; получается буква К а, например, из этого procedure TForm1.BO(x, y: integer); begin for i:=0 to 2 do for j:=0 to 3 do if (i=0)or (i=2)or (j=3)or(j=0) then stringgrid1.cells[x+i,y+j]:='1'; Nx:=Nx+4; end; буква О Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1352 7 ноября 2013 у вас вообще в задании указано что нужно делать на каждую букву по методу или это такой велосипед твоего однокурсника? Поделиться сообщением Ссылка на сообщение
ESSERO #1353 7 ноября 2013 у вас вообще в задании указано что нужно делать на каждую букву по методу или это такой велосипед твоего однокурсника?как - неважно, главное сделать и понимать как ты это сделал Поделиться сообщением Ссылка на сообщение
Tinplz #1354 7 ноября 2013 Так я же тебе сказал, ручку и бумажку в клеточку, и по алгоритму сам зарисовывай клетки - и поймешь. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1355 7 ноября 2013 тогда хуярь по моему методу, потому что код выше это какая-то ебаная наркомания, даже если ты скопируешь его методику отрисовки букв - хуй ты её сможешь вообще объяснить потому что только человек который хорошо упоролся тяжёлыми наркотиками (другого способа такое написать я не знаю) сможет это объяснитьи то не факт что поймут мой метод это 2 функции для отрисовки, а всё остальное - генерация матриц для самих букв Поделиться сообщением Ссылка на сообщение
Tinplz #1356 7 ноября 2013 без понятия нахуя наркотики. Я посмотрел и сразу понял как он работает.... Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1357 7 ноября 2013 без понятия нахуя наркотики. Я посмотрел и сразу понял как он работает....объясни мне, а то мне аж интересно на самом деле код-то понятен в большинстве своём, я лично в нём не понимаю единственного - где в методах собственно структура буквы - он её ифами чтоли обозначил? Поделиться сообщением Ссылка на сообщение
Tinplz #1358 7 ноября 2013 без понятия нахуя наркотики. Я посмотрел и сразу понял как он работает....объясни мне, а то мне аж интересноНу там простейшая процедурная генерация...если ты сравниваешь i==0 то получаешь вертикальную линию по 0.если i == j то диагональ.если i+j==2 то это диагональ от 2,0 до 0,2,если odd(i+j) - то сетка.и т д Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1359 7 ноября 2013 в обещем я в универпредлагаю не делать таким методом как бы оно не работалоесли в дельфи есть способ удобно сгенерировать массив типа такого int[][] letter_c = {{ 0,0,1,1,1,1 }{ 0,1,0,0,0,0 }...} то задача решается за 5 минут и без таких велосипедов Поделиться сообщением Ссылка на сообщение