Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

(изменено)

относись к стринггриду как к матрице, допустим, 10х1000 элементов.

первая буква у тебя будет в 1:11 столбцах, и в 1:9 (допустим) строках.

вторая в 1:11 столбцах и в 11:19 строках

с каждой буквой смещаешь этак на 2 ячейки.

буквы разной высоты это говно, потому что задача тривиальна, а ебли это всё-таки немного добавит

 

визаульно они-то могут и не быть одинаковыми, но матрицы с буквами должны быть идентичны по высоте, т.е. длинне Y


Изменено пользователем TheDeadSkin

Поделиться сообщением


Ссылка на сообщение

относись к стринггриду как к матрице, допустим, 10х1000 элементов.

первая буква у тебя будет в 1:11 столбцах, и в 1:9 (допустим) строках.

вторая в 1:11 столбцах и в 11:19 строках

с каждой буквой смещаешь этак на 2 ячейки.

буквы разной высоты это говно, потому что задача тривиальна, а ебли это всё-таки немного добавит

 

визаульно они-то могут и не быть одинаковыми, но матрицы с буквами должны быть идентичны по высоте, т.е. длинне Y

перепутал строки и столбцы я. вечная поебень, когда пытаешься объяснять, а не писать код

Поделиться сообщением


Ссылка на сообщение
(изменено)

TheDeadSkin, спасибо, но я думаю пробовать решать задачу твоим способом я даже не буду пытаться, ибо я нуб.

Tinplz, это я понял, но у меня самая главная проблема с мат.частью, я просто не понимаю как сделать так, что бы единичка была в нужном мне месте.

 

Вот инфа, сможете мне объянсить кусок кода?

 

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;

 

в этой процеду буква H

1 1

1 1

1111

1 1

1 1


Изменено пользователем Essero

Поделиться сообщением


Ссылка на сообщение

перепутал строки и столбцы я. вечная поебень, когда пытаешься объяснять, а не писать код

да не в этом дело, судя по твоему описанию ты выделяешь в сетке 10х1000 под высоту буквы не всегда 10, зачем?

 

Вот инфа, сможете мне объянсить кусок кода:

 

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;

а что вообще должен делать этот метод?

а то я нихуя не понимаю его смысл, а тем более отдельно от контекста

Поделиться сообщением


Ссылка на сообщение

не думаю что оно напишет тебе эту букву. метод говорит о другом.

 

перепутал строки и столбцы я. вечная поебень, когда пытаешься объяснять, а не писать код

да не в этом дело, судя по твоему описанию ты выделяешь в сетке 10х1000 под высоту буквы не всегда 10, зачем?

Всегда. Говорю же, перепутал

 

"первая буква у тебя будет в 1:11 столбцах строках,"

+ они действительно могут быть разной высоты.

Поделиться сообщением


Ссылка на сообщение

 

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.

 

 

 

вот полностью рабочий код, не мой

 

у меня соответственно другие буквы

всё, что я не понимаю, как получаются буквы

Поделиться сообщением


Ссылка на сообщение

отрисовывать каждую букву отдельным методом, ну это ж такая хуйня блядь :fffuuu:

 

и я бы не сказал что это хоть чем-то проще чем рисовать букву в одном методе по точно заданому алгоритму, просто получая на вход матрицу с буквой

Поделиться сообщением


Ссылка на сообщение

Ты сядь с ручкой и тетрадкой в клеточку, представь что ты находишься в какой-то клетке, и по алгоритму отмечай те клетки, в которых он ставит единицы. сразу поймешь.

Поделиться сообщением


Ссылка на сообщение

опять ебучий код с десятком одно/дву-буквенными переменными, да ещё и на дельфи

Поделиться сообщением


Ссылка на сообщение
Гость rocker25

делаем внешний цыкл а1-а5 и внутренний цикл b1-b5

далее если по внешнему циклу мы заполняем значения a1,a2,a4,a5 то значения b2 пропускается

соответственно если дело качается значения a3 то заполняется по стандарту b1,b2,b3

 

процесс

 

a1 b1 b3

a2 b1 b3

a3 b1 b2 b3

a4 b1 b3

a5 b1 b3

 

где "а" мнимый внешний счетчик, а b внутренний, который передает значение

 

результат

b1 b3

b1 b3

b1 b2 b3

b1 b3

b1 b3

Поделиться сообщением


Ссылка на сообщение

отрисовывать каждую букву отдельным методом, ну это ж такая хуйня блядь :fffuuu:

 

и я бы не сказал что это хоть чем-то проще чем рисовать букву в одном методе по точно заданому алгоритму, просто получая на вход матрицу с буквой

так у меня есть шаблон хотя бы)

сам я не напишу)

 

Просто не понимаю, как например из

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;

буква О

Поделиться сообщением


Ссылка на сообщение

у вас вообще в задании указано что нужно делать на каждую букву по методу или это такой велосипед твоего однокурсника?

Поделиться сообщением


Ссылка на сообщение

у вас вообще в задании указано что нужно делать на каждую букву по методу или это такой велосипед твоего однокурсника?

как - неважно, главное сделать и понимать как ты это сделал

Поделиться сообщением


Ссылка на сообщение

Так я же тебе сказал, ручку и бумажку в клеточку, и по алгоритму сам зарисовывай клетки - и поймешь.

Поделиться сообщением


Ссылка на сообщение

тогда хуярь по моему методу, потому что код выше это какая-то ебаная наркомания, даже если ты скопируешь его методику отрисовки букв - хуй ты её сможешь вообще объяснить

 

потому что только человек который хорошо упоролся тяжёлыми наркотиками (другого способа такое написать я не знаю) сможет это объяснить

и то не факт что поймут

 

мой метод это 2 функции для отрисовки, а всё остальное - генерация матриц для самих букв

Поделиться сообщением


Ссылка на сообщение

без понятия нахуя наркотики. Я посмотрел и сразу понял как он работает....

Поделиться сообщением


Ссылка на сообщение

без понятия нахуя наркотики. Я посмотрел и сразу понял как он работает....

объясни мне, а то мне аж интересно

 

на самом деле код-то понятен в большинстве своём,

 

я лично в нём не понимаю единственного - где в методах собственно структура буквы - он её ифами чтоли обозначил?

Поделиться сообщением


Ссылка на сообщение

без понятия нахуя наркотики. Я посмотрел и сразу понял как он работает....

объясни мне, а то мне аж интересно

Ну там простейшая процедурная генерация...

если ты сравниваешь i==0 то получаешь вертикальную линию по 0.

если i == j то диагональ.

если i+j==2 то это диагональ от 2,0 до 0,2,

если odd(i+j) - то сетка.

и т д

Поделиться сообщением


Ссылка на сообщение

в обещем я в универ

предлагаю не делать таким методом как бы оно не работало

если в дельфи есть способ удобно сгенерировать массив типа такого

 

int[][] letter_c = {

{ 0,0,1,1,1,1 }

{ 0,1,0,0,0,0 }

...

}

 

то задача решается за 5 минут и без таких велосипедов

Поделиться сообщением


Ссылка на сообщение

хуево тебе без фантазии (

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...